请问关于RequestDispatcher重定向后,它下面的语句还执行吗???

peppi 2002-10-16 10:39:25
我有一段测试用的程序:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();

String s = null;

RequestDispatcher a = this.getServletContext().getRequestDispatcher("/a.html");
RequestDispatcher b = this.getServletContext().getRequestDispatcher("/b.html");
RequestDispatcher c = this.getServletContext().getRequestDispatcher("/c.html");
RequestDispatcher d = this.getServletContext().getRequestDispatcher("/d.html");

s = request.getParameter("text"); //对S进行判断,根据不同值转向不同页
if (s.equals("a"))
{
a.forward(request,response);
return;
}
if (s.equals("b"))
{
b.forward(request,response);
return;
}
if (s.equals("c"))
{
c.forward(request,response);
return;
}
System.out.println(1); //用于测试,看是否重定向后执行此句
d.forward(request,response);
}

我发现,不管有没有return这句,在执行某一个转向后(d的转向除外),都会输出"1",而我觉得在实现转向后,就不该执行它后面的语句了,现在它执行了,我怎么能让它不执行呢?
...全文
67 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanmao 2002-10-21
最简单的方法,在转向的后边加个return就可以了
回复
peppi 2002-10-18
各位帮忙啊,我现在急用啊~~~~~~~~~~~~~~~~~~~~
欲哭无累啊~~~~
回复
shanmao 2002-10-16
我为此反感了 好久,转向后竟然还执行下面的语句
非要显示的加个return不可,后来我重新封装了HttpServlet才搞定
回复
peppi 2002-10-16
可你写的代码和我的有什么不同吗?我觉得你的和我的只是写的方法的不同,但实现的功能是一样的,达到的效果也是一样的,所以....呵呵,不好使啊:)
还是执行后面的代码.
回复
wjmmml 2002-10-16
if (yztj.equals("确认提交")){
getServletContext().getRequestDispatcher(URL).forward(request, response);
return;
}

不用你上面的什么c啊b啊的,只要修改url就可以了啊。
回复
wjmmml 2002-10-16
在转向后,你要用
return;
来结束程序的执行,这样就不会在继续往执行了。
回复
peppi 2002-10-16
我前段时间用这个的时候没发现重定向后会执行下面的代码,一个偶然的机会才发现这个问题.怎么办?
回复
peppi 2002-10-16
嗯?shanmao(山猫),你是怎么做的呢?可以分享一下吗????
回复
发动态
发帖子
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
社区公告
暂无公告