doError中setAttribute的有关问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 21:14:37
我的login_confirm.java中一段程序,
public void doError(HttpServletRequest req,HttpServletResponse res,String str)
throws ServletException, IOException {

req.setAttribute("problem", str);
RequestDispatcher rd = getServletContext().getRequestDispatcher("/errorpage.jsp");
rd.forward(req, res);
}
这几个方法的目的分别是什么呢?那位大虾能给介绍一下!

req.setAttribute("problem", str);
是保存错误信息str到req中 对应的键是 problem

在接收页面可以通过对应的键得到str的错误信息

request.getAttribute("problem");

显示到errorpage.jsp中展示给用户看...

RequestDispatcher rd = getServletContext().getRequestDispatcher("/errorpage.jsp");
rd.forward(req, res);
的意思是转向的意思 也就是将页面跳转到 errorpage.jsp

而浏览器上的地址栏地址不会改变成 errorpage.jsp 这就是转向,还是以前的请求...并没有发出新的请求

如果你用 res.sendRedirect("/errorpage.jsp"); 来进行重定向页面的话...
浏览器上的地址栏地址就会变成 errorpage.jsp 这个是用来进行一次新的请求
但是这个请求方法在errorpage.jsp中是不能得到 req.setAttribute("problem", str); 中存储的值的...因为是新的请求...request已经不是以前存储过 错误信息的 request 了....是一个新的 request ,,所以得不到错误信息了...

祝楼主早日成功!