首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Servlet中给request赋值一个对象,在jsp如何取出

2012-12-17 
Servlet中给request赋值一个对象,在jsp怎么取出?Servlet中public void doPost(HttpServletRequest request

Servlet中给request赋值一个对象,在jsp怎么取出?
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)。
楼主多去看看请求转发与重定向的区别
[其他解释]
引用:
不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(req……


楼主是不是要遇到异常跳到自己定义的页面呢?

跳转使用转发、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");             
}

[其他解释]
不是应该这样吗??

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
try{
request.setAttribute("e", "aaa");
            System.out.println("error:"+e.getMessage());
            response.sendRedirect("error.jsp");

} catch (Exception e) {
            // TODO: handle exception
            
            e.printStackTrace();
        }
}



我也是新手,, 不知道说的对不对。。
[其他解释]
没有跑出异常,怎么会去执行这一段嗯?应该在try里面写三!
[其他解释]
引用:
不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(request,response……

+++
[其他解释]
引用:
引用:不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/erro……

正解。话说楼主连try catch 都没搞明白啊 try里面是你要尝试执行的代码。catch是当有异常的时候抛出,里面可以写些异常提醒之类的代码。
[其他解释]
引用:
第一个 你try catch 先去搞明白
第二 你用的request保存的,而你跳转页面用的重定向,这样在JPS页面取不到之前request的, 你可以用sessin保存 或者 的跳转用request的转发

对头
[其他解释]
引用:
不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(req……


确实是这么回事,正确答案+1
[其他解释]
引用:
不是应该这样吗??



Java code?



12345678910111213

public void doPost(HttpServletRequest request, HttpServletResponse response)             throws ServletException, IOException { try{ request.set……

对,但是我是在获取的异常里面给request添加值,所以我把异常外的代码块里面的内容发帖时给删了。
[其他解释]
引用:
不管楼主做什么都拿不到的。
因为你用的是sendRedirect();重定向。
重定向之后它会重新创建一个request前后页面不是相同的request
所以上一个request的数据就没了。
你要有的话就用request.getRequestDispatcher(request.getServletPath()+"/error.jsp").forward(req……


我晕, 这里我还学过的, 
而且平时代码也是这么写的, 这帖子居然没注意到。

还是手太生了。。 要慢慢学啊。

热点排行