我可以使用一些表达语言,但不是全部。 例如,这是我的路线。启动 home.jsp(单击链接即可进入 q4.jsp)。选择一个单选按钮,然后单击另一个链接。带您进入 q1.jsp。选择一个单选按钮,在文本框中输入文本,然后单击另一个链接并完成 results.jsp。
我的问题:
这是结果.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 读取问题 1 您选择了 ${param.radios4},选择后也没有变量。
为什么jsps只能读取之前的页面?我希望 q4.jsp 将变量存储到结束页面。
最佳答案
您必须使用 session 来进行用户和网络应用程序之间的对话。因为默认情况下,一旦您响应第一个请求,您的参数就会存储为请求属性。
可以从处理请求的页面访问具有 session 范围的对象,这些请求与创建它们的 session 位于同一 session 中。 session 是用户使用应用程序所花费的时间,当他们关闭浏览器、访问另一个网站或应用程序设计者想要时(例如注销后), session 就会结束。因此,例如,当用户登录时,他们的用户名可以存储在 session 中并显示在他们访问的每个页面上。这些数据将一直持续到他们离开网站或注销为止。
例如:
<jsp:useBean id="employee" class="EmployeeBean" scope="session" />
或者您可以使用 HttpSession 接口(interface)的引用将请求参数保存在 session 属性中。
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);}
}
}
关于java - 如何让表达式语言跨多个jsp页面跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26861270/