博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
request.getRequestDispatcher("")跳转的一些理解
阅读量:5738 次
发布时间:2019-06-18

本文共 1128 字,大约阅读时间需要 3 分钟。

  request.getRequestDispatcher().forward()在应用中跳转时不会中断程序的继续进行,其返回类型为void,其后的程序仍然将执行下去。

例如:

  try {

     su.initialize(config, request, response);
     //限制上传附件的大小为10M.
     su.setTotalMaxFileSize(10 * 1024 * 1024);
     su.upload();
    } catch (ServletException e) {
       e.printStackTrace();
    } catch (SmartUploadException e) {
       e.printStackTrace();
    } catch (IOException e) {
       e.printStackTrace();
    } catch (SecurityException e) {
       request.setAttribute("notice", "上传文件过大,上传的文件不能超过10兆!");
       try {
          request.getRequestDispatcher("/portal/viewconfig/notice.jsp")
               .forward(request, response);
       } catch (ServletException e1) {
          e1.printStackTrace();
       } catch (IOException e1) {
          e1.printStackTrace();
       }
    }

在该段执行完成后返回到某个方法,然后又有一个执行

request.getRequestDispatcher("/portal/viewconfig/notice1.jsp").forward(request, response);语句

等最后完成后,它将跳转到第一个forward的地址,其他的地址都没有忽略了。并在后台抛出如下的异常:

java.lang.IllegalStateException: Cannot forward a response that is already committed

意为:在response已经提交后程序不能再一次的跳转!

其中一个较为需要注意的点是:forward跳转的地址以第一个URL为跳转地址。

 

转载于:https://www.cnblogs.com/leanman/archive/2011/08/29/2157441.html

你可能感兴趣的文章
FreeNAS8 ISCSI target & initiator for linux/windows
查看>>
cvs文件提交冲突解决方案
查看>>
十步优化SQL Server中的数据访问
查看>>
oracle 64位PL/SQL连接报错Make sure you have the 32 b...
查看>>
java 执行jar包中主程序
查看>>
golang中省略返回值造成内存泄漏
查看>>
PostgreSQL数据库集群初始化
查看>>
ViewHolder的应用
查看>>
++重载
查看>>
Rainbond 5.0.4版本发布-做最好用的云应用操作系统
查看>>
模仿京东使用Openresty+Redis做读服务
查看>>
ThreadPoolExecutor简介与源码分析
查看>>
ffmpeg源码分析 (五)
查看>>
PHP 7.2.12安装xdebug扩展
查看>>
Python中dictionary items()系列函数的用法实例
查看>>
comet 客户端处理机制
查看>>
使用Servlet3.0的异步支持时我遇到的一个问题
查看>>
过滤器解决请求中文乱码
查看>>
Eclipse 中重新定位SVN服务器地址
查看>>
Exchange Server 2003重置OWA、ActiveSync 和 OMA默认虚拟目录
查看>>