Java 在RequestDispatcher之前,如果不从setAttribute()方法赋值,请求如何拥有属性?
当我们试图使用Java 在RequestDispatcher之前,如果不从setAttribute()方法赋值,请求如何拥有属性?,java,jsp,setattribute,requestdispatcher,Java,Jsp,Setattribute,Requestdispatcher,当我们试图使用RequestDispatcher将请求从servlet转发到jsp时,我们使用request.setAttribute()方法。 但当我们试图将请求从servlet转发到另一个servlet时,我们不使用request.setAttribute()方法,结果打印得很好 RequestDispatcher dis=request.getRequestDispatcher("welcome"); dis.forward(request, response
RequestDispatcher
将请求从servlet转发到jsp时,我们使用request.setAttribute()
方法。
但当我们试图将请求从servlet转发到另一个servlet时,我们不使用
request.setAttribute()
方法,结果打印得很好
RequestDispatcher dis=request.getRequestDispatcher("welcome");
dis.forward(request, response);
你能举例说明为什么吗?多谢各位
login.jsp
<form action="login" method="post">
User Name:<input type="text" name="uname"/><br/>
Password:<input type="password" name="upass"/><br/>
<input type="submit" value="SUBMIT"/>
</form>
那么请求中可能已经有了属性。除非您希望它以某种方式神奇地出现在请求属性中?JSP在运行时被编译成servlet,所以转发到JSP还是servlet没有区别。@Kayaman我的问题是servlet如何具有该请求属性而JSP没有?因为它们使用相同的方法来转发结果。请求要么有属性,要么没有属性。Servlets和JSP在这里与任何事情都无关。如果您的方法完全按照您所展示的那样编写——两行紧跟在后面,那么您可以在JSP请求中设置属性,然后将相同的请求(已经具有该属性)转发给servlet@VeselinDavidov不,我不是两种方法都用。这只是一个例子
<form action="login" method="post">
User Name:<input type="text" name="uname"/><br/>
Password:<input type="password" name="upass"/><br/>
<input type="submit" value="SUBMIT"/>
</form>
String name = request.getParameter("uname");
String pass = request.getParameter("upass");
if (name.equals("dilini") && pass.equals("123")) {
// ONLY ONE OPTION IS USING HERE
// for a jsp
request.setAttribute("uname", name);
request.getRequestDispatcher("welcome.jsp").forward(request, response);
// for a servlet
request.getRequestDispatcher("welcome").forward(request, response);
}