Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串变量从servlet传递到jsp_Jsp_Servlets - Fatal编程技术网

将字符串变量从servlet传递到jsp

将字符串变量从servlet传递到jsp,jsp,servlets,Jsp,Servlets,我正在浏览器中打开映射到servlet的链接,并希望显示传递的值。 但我看到的是“空” Servlet: public class TestServlet extends HttpServlet { public TestServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws

我正在浏览器中打开映射到servlet的链接,并希望显示传递的值。 但我看到的是“空”

Servlet:

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