Servlet中
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
} catch (Exception e) {
// TODO: handle exception
request.setAttribute("e", "aaa");
System.out.println("error:"+e.getMessage());
response.sendRedirect("error.jsp");
e.printStackTrace();
}
}
给request中添加一个对象e,值为“aaa”;
Jsp中取出
测试前:
<%=request.getAttribute("e") %>
测试后
结果显示的是:
测试前null测试后。
这是为什么?
迷糊了。
用struts2实现的话是正常的。
------最佳解决方案--------------------
不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(request,response)。
楼主多去看看请求转发与重定向的区别
------其他解决方案--------------------
楼主是不是要遇到异常跳到自己定义的页面呢?
跳转使用转发、4楼说了、
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
int i = 1/0;
} catch (Exception e) {
// TODO: handle exception
request.setAttribute("e", "aaa");
System.out.println("error:"+e.getMessage());
request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(request,response);//转发
//response.sendRedirect("error.jsp");
e.printStackTrace();
}
}
------其他解决方案--------------------
第一个 你try catch 先去搞明白
第二 你用的request保存的,而你跳转页面用的重定向,这样在JPS页面取不到之前request的, 你可以用sessin保存 或者 的跳转用request的转发
------其他解决方案--------------------
你这代码什么意思呢 ,try{}里面什么都没有 ,等于说这个servlet什么都不做??跳转也没法进行啊。。。
------其他解决方案--------------------
改成
public void doPost(HttpServletRequestrequest,HttpServletResponseresponse) throws ServletException, IOException {
request.setAttribute("e", "aaa");
System.out.println("error:"+e.getMessage());
response.sendRedirect("error.jsp");
}
------其他解决方案--------------------
不是应该这样吗??