利用请求域传递对象(request域对象)
重定向和转发的区别(转发)(*****)* 域对象ServletContext:服务器一启动,为每个web应用创建一个ServletContext对象,所有servlet实例共享对象。   request:一次请求的范围。* setAttribute("","");
* getAttribute("");
* removeAttribute("");* getRequestDispatcher(String path) ,返回是RequestDispatcher:对象
* RequestDispatcher:* forward(ServletRequest request, ServletResponse response)(经常使用) 转发的方法* include(ServletRequest request, ServletResponse response)(了解) 包含

request利用请求域传递对象

request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理

setAttribute方法

getAttribute方法

removeAttribute方法

getAttributeNames方法

request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发,从而共享请求中的数据

请求重定向和请求转发的区别

RequestDispatcher.forward方法只能将请求转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect 方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。
如果传递给HttpServletResponse.sendRedirect 方法的相对URL以“/”开头,它是相对于服务器的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。
调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
HttpServletResponse.sendRedirect方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
RequestDispatcher.forward方法的调用者与被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于两个独立的访问请求和响应过程。
package cn.learn.request;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 重定向和转发* @author Administrator**/
public class RequestDemo3 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// request域设置内容request.setAttribute("name", "凤姐");// 完成重定向的工作(客户端端绝对路径)// response.sendRedirect("/day10/request4");// 转发(路径服务器的绝对路径)request.getRequestDispatcher("/request4").forward(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
package cn.learn.request;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class RequestDemo4 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 获取String value = (String) request.getAttribute("name");// 输出中文response.setContentType("text/html;charset=UTF-8");response.getWriter().write("访问到了demo4... "+value);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}

URL特殊字符转义规则

常用转义规则

空格换成加号(+)

+换成%2B

正斜杠(/)分隔目录和子目录 换成%2F

问号(?)分隔URL和查询 换成%3F

百分号(%)制定特殊字符 换成%25

#号指定书签  换成%23

•&号分隔参数  换成%26

java.net.URLEncoder和 java.net.URLDecoder

Request的开发细节

使用转发的方法后,response的缓冲区会被清空。

response.getWriter().write("aaa");

request.getRequestDispatcher("/demo2").forward(request, response);

response.getWriter().write("bbb");

RequestDispatcher

include方法:

RequestDispatcher.include方法用于将RequestDispatcher对象封装的资源内容作为当前响应内容的一部分包含进来,从而实现可编程的服务器端包含功能

被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的执行结果将被忽略

底层使用的是子节流,所以输出内容只能使用字节流。

include在程序执行上效果类似forward,但是使用forward只有一个程序可以生成响应,include可以由多个程序一同生成响应 ----- 常用来页面布局

转发和重定向和request域对象相关推荐

  1. SpringMVC学习总结(四)使用ModelAndView、Model、Map、ModelMap向request域对象共享数据/向session、application域对象共享数据

    我们知道,四大域对象包括:pageContext.request.session和application,而pageContext有效范围为一个jsp页面,太小了,而application有效范围为整 ...

  2. request域对象和请求转发

    request的其他功能 request是一个域对象 request对象也是一个存储数据的区域对象,所以也具有如下方法: setAttribute(String name, Object o) get ...

  3. HttpServletrequest 注册和登录、request域对象、web动态shop

    summarize httpServletResponse跟 Request一个是响应一个是请求,获得客户端请求方式 用getMethod 得到的是String类型, response:属于重定向请求 ...

  4. Java-Web JSP、Cookie和Session域对象

    一.JSP入门 1.什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 2.JSP的组成 JSP = h ...

  5. java中请求转发与重定向_JavaEE进阶 请求转发与请求重定向

    JavaEE进阶 请求转发与请求重定向 本篇JavaEE进阶教程将为大家讲解JavaEE进阶编程的知识点,看完这篇文章会让你对JavaEE进阶编程的知识点有更加清晰的理解和运用.在转发的过程中,可以把 ...

  6. Servlet的学习之Request请求对象(3)

    本篇接上一篇,将Servlet中的HttpServletRequest对象获取RequestDispatcher对象后能进行的[转发]forward功能和[包含]include功能介绍完. 首先来看R ...

  7. SpringMVC视图及如何在域对象中共享数据

    SpringMVC 回顾原生Servlet 获取请求参数 通过 Servlet API 获取 案例 通过控制器方法的形参获取请求参数 设置字符编码格式 CharacterEncodingFilter ...

  8. javaweb:request请求对象(5)

    1.请求和响应的概述: 什么请求:在浏览器地址栏输入地址,点击回车请求服务器,这个过程就是一个请求过程. 什么响应:服务器根据浏览器发送的请求,返回数据到浏览器在网页上进行显示,这个过程就称之为响应. ...

  9. 转发与重定向是什么?有什么区别

    转发过程: 1.客户端浏览器发送http 2.web浏览器接收请求 3.调用内部的一个方法在容器内部完成请求处理和转发工作 需注意的是:转发的路径必须是同一个web容器下的url.在客户端浏览器路径栏 ...

最新文章

  1. FaceL:一个靠谱的开源人脸标注训练识别程序
  2. setdiff--求两个集合的差
  3. Machine Learning week 7 quiz: Support Vector Machines
  4. zigbee 串口不稳定_Zigbee
  5. 【04】AngularJS 表达式
  6. 贪心1--排队打水问题
  7. 真快!10秒内将k8s集群运行起来
  8. 现代软件工程 教学计划 适应两种难度和重点
  9. Python+django网页设计入门(9):自定义反爬虫功能
  10. 谷歌发布基于浏览器的 Spectre 攻击的 PoC exploit
  11. EasyUI:textbox自定义验证手机号(正则)
  12. 书籍的新增及上下架功能
  13. 腾讯翻译君在线翻译怎么翻译整个文件_希腊语怎么翻译?教你两个超实用的翻译方法...
  14. 我把视频变成链接_H5中加视频?这才是正确姿势
  15. 应届生如何准备校招【研发岗】
  16. wx 微信小程序 session_key的作用
  17. 阿里滑块x82y,223,224,225算法挺难的,千辛万苦。
  18. nginx是什么、怎么用、以及用nginx解决实际问题
  19. TEB轨迹优化算法-代码解析与参数建议
  20. golang数据结构初探之动态数组slice

热门文章

  1. docker-machine
  2. 在Android Studio环境下使用ESPRESSO 测试框架进行UI测试
  3. dell c6220II lsi阵列卡
  4. Android的Notification研究
  5. netstat 命令的 学习笔记
  6. 解决项目莫名奇妙的报错问题
  7. react 与 Vue的一些比较
  8. 64. Minimum Path Sum
  9. 2012自学CCNP路由与交换之四交换机初始化
  10. 创建故障转移群集,LiveMigration系列之六