JSP笔记:forward和include方法的区别:
request.getRequestDispatcher("jsp2.jsp").forward(request, response);
request.getRequestDispatcher("jsp2.jsp").include(request, response);
这两种写法有什么区别呢?首先,getRequestDispatcher后面的参数可以是一个servlet, jsp或者html页面
对于forward方法,本意是让第一个页面处理request,第二个页面处理response。如果第一个页面中已经使用response进行输出了,那么只要没有flush(),forward依然可以成功,并会自动清除刚才的输出内容,但是如果第一个页面调用了flush()方法,则会报错。值得注意的是执行了forward方法调用了第二个页面之后,程序还会返回第一个页面继续执行,但是此时再使用response输出已经没有作用了。建议可以在forward语句后面加上 if (true) return;避免无必要的执行后面的程序。include方法则不同,它是服务器端的动态加载,执行完第二个页面的程序后可以回到第一个页面继续输出,只需要注意第二个页面不应当更改response的头部信息(改了也没用)。
---------------------------------------
粗浅认识,请大家莫见笑,不吝指正.
request.getRequestDispatcher("jsp2.jsp").forward(request, response);
request.getRequestDispatcher("jsp2.jsp").include(request, response);
这两种写法有什么区别呢?首先,getRequestDispatcher后面的参数可以是一个servlet, jsp或者html页面
对于forward方法,本意是让第一个页面处理request,第二个页面处理response。如果第一个页面中已经使用response进行输出了,那么只要没有flush(),forward依然可以成功,并会自动清除刚才的输出内容,但是如果第一个页面调用了flush()方法,则会报错。值得注意的是执行了forward方法调用了第二个页面之后,程序还会返回第一个页面继续执行,但是此时再使用response输出已经没有作用了。建议可以在forward语句后面加上 if (true) return;避免无必要的执行后面的程序。include方法则不同,它是服务器端的动态加载,执行完第二个页面的程序后可以回到第一个页面继续输出,只需要注意第二个页面不应当更改response的头部信息(改了也没用)。
---------------------------------------
粗浅认识,请大家莫见笑,不吝指正.
解决方案 »
- 404问题
- 求助!!!JSP页面中修改数据库中数据的问题!!!(问题解决后马上结给分!)
- 数据池连接问题 小弟初学 急呀!
- jsp连接oracle数据库时出错(没有加oracle驱动,如何加)
- 如何实现文本中信息的更新?(小问题,解决马上给分,在线等!!!)
- 关于参数传递的一个问题?
- 请问::用j2ee来作b/s模式的企业系统,用学swing,awt吗???
- "非法的游标状态“是什么错误
- Spring4.1 + Hibernate4.3 + Jpa
- java hibernate 为什么我加了单引号 打印的sql没有单引号
- 急~~如何限制文件域只能通过“浏览”按钮添加路径,不能手工输入?
- 为什么Eclipse下配置Tomcat运行时老是出错
=======================================================================
我觉得是Servlet把由于Web用户的请求而产生的ServletResponse ServletRequest对象转发给下一个目标组件;让目标组件处理用户的请求,用户的请求包含在ServletRequest对象中,处理完后把响应,包含在ServletResponse对象中,通过Servlet容器发送给用户
===================================================================================
是这样的;但是这个地方应该更多的关注源组件(当前)和目标组件(被include进来的)是共同使用一个HttpServletRequest对象的;呵呵
----------------------------------------------------------------
这确实也有道理,我以前就是这么想的,不过看了看javadoc,里面推荐让源组件(当前)来处理Request,而目标组件处理response,都可以吧,呵呵。至于用的是不是同一个request对象,要看调用者传递的参数了,一般来讲,都应该传递同一个request和response。
include是把另一个页面加载到当前页面.