servlet转发·重定向·包含常见问题
来源:互联网 发布:严蔚敏 算法2.3 编辑:程序博客网 时间:2024/05/18 03:08
1、字节输出流和字符输出流的共存问题---不能共存(跟get或post方式没关系)。即:在同一个servlet响应中,不能同时采两种输出流。
另外:如果要用字节流输出中文,用write(byte[])方法
2、转发时,两个servlet都输出信息的问题
out.print("晚上好....");//下面如果不执行flush或close,那么该句不会输出,因为到下一个servlet会把缓存清空
out.flush();
Tomcat对于同response,只输出一次(把缓存中的内容刷出去)。由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变。
刷了(close也一样),流就关闭了,下面的转发就无法进行了,因为此时response已经提交了(整个转发链只会响应一次,即提交了)
3、转发:传参,访问顺序(doGet还是doPost) ---转发是共享同一个request和同一个response对象的(整个转发链只会响应一次,即上一个servlet的缓存不会输出)
1)第一个是doGet,第二个走的也是doGet
2)第一个是doPost,第二个走的也是doPost
3)传参:可以通过request.setAttribute()设置,通过request.getAttribute()获取 ---doGet或doPost都一样
4、重定向:传参,访问顺序(doGet还是doPost)
1)无论第一个是doGet还是doPost,第二个走的都是doGet
2)传参:第二个servlet中的request和第一个是完全不同的对象,因此无法通过:request.setAttribute()和request.getAttribute() 实现传参。
3)第二个servlet中是无法通过request.getParameter()的方式获取页面提交的参数数据(因为二个request和第一个servlet是完全不同的对象)
4)重定向方式下,如果要进行传参,可采用:在地址栏的url后添加类似如下的格式传参:?name=Jack&age=23
注意,采用地址栏url传参的方式,在浏览器地址栏是能够看到的,因此要注意隐私(安全)问题---如果有隐私参数,那么要加密!!!
5)转发只能在站内进行(路径默认在项目内,即路径不用带项目名),重定向可以在站外进行(如果是站外路径要带“http://”开头,站内路径要带项目名)。如果非要项目之间(站外)进行跳转,那么必须要选择重定向。
5、请求包含:传参,访问顺序(doGet还是doPost)
1)两个servlet的输出都有效!---中途调用flush,流不会关闭,后续的输出都会执行。如果在第一个servlet中执行了out.close(),那么后续的输出(无论是第一还是第二个servlet)都不会执行,但程序不会出异常!!!!
2)第一个是doGet,第二个走的也是doGet
3)第一个是doPost,第二个走的也是doPost
RequestDispatcher rd = request.getRequestDispatcher("/servlet/Include2Servlet");
rd.include(request, response);//它的机制可理解成函数调用。相当于把第二个servlet的doGet()方法中的代码拷到这里来运行。
out.println("<br/>Include1111111..doGet...请求包含之后");
4)对于请求包含,第二个servlet在执行完之后,还会回到第一个servlet的rd.include()这行代码之后。
5)传参方面,和转发是完全一样的,因为都是共享同一个request和同一个response.
6)页面输出时,注意html标签不要输出冲突,如:在第一个servlet中输出了“<html><body>”和“</body></html>”,同时在第二个servlet中也输出这些标记。这样会出现html标记嵌套冲突!!
※重定向和转发:跳转之后不会回到原来的那个servlet中。
而“请求转发”在跳转之后会回到原来servlet的“rd.include()”这句代码之后继续执行。
- servlet转发·重定向·包含常见问题
- Servlet 转发、包含和重定向
- servlet请求转发、包含以及重定向
- Servlet 转发、包含、重定向对比
- Servlet技术-请求转发,重定向和包含的关系
- Servlet页面跳转技术--重定向、转发和包含
- Servlet中的站内转发、重定向以及请求包含
- 重定向-转发-请求包含
- request 转发,转发包含,重定向
- servlet转发-重定向等
- Servlet--转发和重定向
- servlet转发与重定向
- Servlet-重定向与转发
- servlet转发与重定向
- servlet请求转发的三种方式,请求转发与重定向以及包含
- Servlet入门介绍第四章——Servlet中的请求转发、包含、重定向
- Servlet--Servlet转发和重定向
- JSTL请求重定向、包含、转发标签
- The Production installation of DataPusher for Ckan2.5.2 on CentOS6.8
- 解决php向mysql数据库插入数据乱码问题
- hdu4308 Saving Princess claire_(BFS)
- locate command not found
- 用Deformable Part Model(DPM)voc-release3.1训练自己的模型
- servlet转发·重定向·包含常见问题
- ubuntu 16.04.1 u盘安装问题
- CI 实现无限级分类 \ 数据处理组合
- Android广播之发送广播的源码分析
- 如何在Eclipse上使用Espresso测试框架测试Android App
- Android API之CameraPreview
- HDU3746 Cyclic Nacklace KMP基础
- 单链表代码模板
- 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL