将字符串变量从servlet传递到jsp
我正在浏览器中打开映射到servlet的链接,并希望显示传递的值。 但我看到的是“空” Servlet:将字符串变量从servlet传递到jsp,jsp,servlets,Jsp,Servlets,我正在浏览器中打开映射到servlet的链接,并希望显示传递的值。 但我看到的是“空” Servlet: public class TestServlet extends HttpServlet { public TestServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
public class TestServlet extends HttpServlet {
public TestServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("var", "a");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
jsp:
问题在于您正在请求范围中设置属性,但正在从会话范围中读取属性。尝试替换此行:
request.setAttribute("var", "a");
通过这个:
request.getSession().setAttribute("var", "a");
这样,您将在这两个位置引用会话范围。或者,您可以通过在JSP中使用
request.getAttribute()
在这两个位置使用请求作用域。问题是您正在请求作用域中设置属性,但正在从会话作用域读取属性。尝试替换此行:
request.setAttribute("var", "a");
通过这个:
request.getSession().setAttribute("var", "a");
这样,您将在这两个位置引用会话范围。或者,您可以通过在JSP中使用
request.getAttribute()
在这两个位置使用请求范围。而不是通过JSP页面中的会话范围访问属性,您只需更改
String s1 = (String) session.getAttribute("var");
到
或者,如果您仍然希望通过会话作用域访问它,您可以在servlet的会话作用域中设置变量,例如:
Http session = request.getSession();
session.setAttribute("var","a");
然后,您可以像在JSP页面中一样访问它,也可以像David所说的那样:
request.getSession().setAttribute("var", "a");
任何一种方法都可以。您只需更改您的
String s1 = (String) session.getAttribute("var");
到
或者,如果您仍然希望通过会话作用域访问它,您可以在servlet的会话作用域中设置变量,例如:
Http session = request.getSession();
session.setAttribute("var","a");
然后,您可以像在JSP页面中一样访问它,也可以像David所说的那样:
request.getSession().setAttribute("var", "a");
任何一种方法都可以。SERVLET部分:
String str = request.getParameter("str1");
request.setAttribute("str1", "hello, welcome!! how are you??");
getServletContext().getRequestDispatcher("/Demo.jsp").forward(request,response);
JSP部分(包含在任何标记段落或文本框等中)
${str}SERVLET部分:
String str = request.getParameter("str1");
request.setAttribute("str1", "hello, welcome!! how are you??");
getServletContext().getRequestDispatcher("/Demo.jsp").forward(request,response);
JSP部分(包含在任何标记段落或文本框等中)
${str}我会做相反的事情,将jsp更改为调用request.getAttribute()。OP没有说明他需要会话作用域,这将防止值在内存中保留的时间超过其需要的时间-请求而不是用户的会话。@David Levesque不建议使用scripplets,使用jstl Instedi会做相反的事情,并将jsp更改为调用request.getAttribute()。OP没有声明他需要会话作用域,这将防止值在内存中保留的时间超过其需要的时间-请求而不是用户的会话。@David Levesque不建议使用scripplets,而是使用jstl