[英]how to make expression language jump across multiple jsp pages?
我可以使用某种表达语言,但不能全部使用。 例如,这是我的路线。 启动home.jsp(单击链接可进入q4.jsp)。 选择一个单选按钮,然后单击另一个链接。 带您进入q1.jsp。 选择一个单选按钮,在文本框中输入文本,然后单击另一个链接,然后在results.jsp上完成操作。
我的问题:
这是result.jsp
Good day **Rich**, for question 1 you chose and for question 2 you chose **Integer**
Total score:
Rich没有硬编码,results.jsp实际上读为“ Good day $ {param.elc}”。 这项工作。 整数不是硬编码的,results.jsp实际上显示为“并且对于问题2,您选择了$ {param.radios1}”。 这项工作
不起作用的是,如果jsp页面不在变量所在的位置之前。 q1.jsp直接通向results.jsp,因此直接进入工作变量。 如上所示,即使jsp读取了您选择的$ {param.radios4}的问题,选择后也没有变量。
为什么jsps只能从页面之前读取? 我希望q4.jsp将变量存储到最终页面。
您必须使用会话在用户和Web应用之间进行对话。 由于默认情况下,一旦您对第一个请求消失了,您的参数就会存储为请求属性。
具有会话范围的对象可以从处理请求的页面访问,这些请求与创建它们的会话处于同一会话中。 会话是用户花费在使用应用程序上的时间,该时间段是在关闭浏览器,访问另一个网站或应用程序设计人员需要时(例如,注销后)结束。 因此,例如,当用户登录时,其用户名可以存储在会话中并显示在他们访问的每个页面上。 这些数据一直持续到他们离开网站或注销为止。
例如:
<jsp:useBean id="employee" class="EmployeeBean" scope="session" />
或者您可以使用HttpSession接口的引用将您的请求参数保存在会话属性中。
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
String n=request.getParameter("userName");
HttpSession session=request.getSession();
session.setAttribute("uname",n);
//code
}catch(Exception e){System.out.println(e);}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.