Servlet中的request对象、重定向和转发的区别(6)

1.这里所说的request对象指的是HttpServletRequest对象,它代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,我们通过request对象调用里面的方法,可以获得客户发送给web服务器的各种信息。

2.request的常用方法

(1)获得客户机信息

    getRequestURL方法返回客户端发出请求时的完整URL。(

                               例如:url:http://localhost:8080/Summer_Exercise6/Demo1)

getRequestURI方法返回请求行中的资源名部分。(

                              例如:uri:/Summer_Exercise6/Demo1)

getQueryString 方法返回请求行中的参数部分。地址栏中?后面的参数(

                               例如:query:name=wwh&age=12)

getPathInfo方法返回请求URL中的额外路径信息。额外路径信息是请求URL中的位于      Servlet的路径之后和查询参数之前的内容,它以“/”开头。

    getRemoteAddr方法返回发出请求的客户机的IP地址。

getRemoteHost方法返回发出请求的客户机的完整主机名。

getRemotePort方法返回客户机所使用的网络端口号。

getLocalAddr方法返回WEB服务器的IP地址。(127.0.0.1)

getLocalName方法返回WEB服务器的主机名。(虚拟主机名:www.wenhao.com)

(2)获得客户机请求头

getHeader(string name)方法:String

getHeaders(String name)方法:Enumeration

getHeaderNames()方法

(3)获得客户机请求参数(客户端提交的数据)

getParameter(String)方法

getParameterValues(String name)方法

getParameterNames方法+BeanUtils框架

3.request的常见应用

(1)防盗链(下载文件,必须从指定网站进入,否则不允许下载文件,判段某个页面来自于何方,即referer请求头)

(2)各种表单输入项数据的获取

text、password、radio、checkbox、

file、select、textarea、 hidden、

(3)POST方式请求参数的中文乱码问题

GET方式请求参数的中文乱码问题(JSP)

(4)request对象实现请求转发:请求转发指一个web资源收到客户端请求后,通知服务器去调用另外一个         web资源进行处理。

(5)请求转发的应用场景:MVC设计模式

(6)request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。

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

setAttribute方法

getAttribute方法

removeAttribute方法

getAttributeNames方法

4.request要注意的地方:

(1).转发是通过RequestDispatcher对象的forward(request,response)方法完成的

(2).forward()方法之前的输出,如果是输出到缓冲区,再转发到其他Servlet,那么原缓冲区的数据忽略不计

(3).forward()方法之前的输出,如果真正输出到浏览器,再转发到其他Servlet,再转发到其他Servlet代码忽略不计

(4).forward()方法之前的输出,如果是对响应头的设置,会保留到转发的其他Servlet中

5.重定向和转发区别

(1).转发只能相对于当前web应用而言,不能转发到其它web应用

重定向可以在当前web应用之外的其它web应用重写向资源

(2).转发/表示当前web应用

重定向/表示web服务器的根目录,即webapps目录

(3).转发时,浏览器地址栏不变

重定向时,浏览器地址栏改变

(4).转发是服务端的内部行为,浏览器不知

重定向是浏览器和服务端的共同行为,浏览器必知

(5).转发时二个Servlet共享request域对象

重定向时二个Servlet独享request域对象

(6).request具有二义性:

a>请求对象

b>域对象

6.getRequestDispatcher()和sendRedirect()的区别

(1).request.getRequestDispatcher()是请求转发,前后页面共享一个request
;

response.sendRedirect()是重新定向 前后页面不是一个request .

(2).RequestDispatcher.forward()是在服务器端运行;

HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.

所以RequestDispatcher.forward()对于浏览器来说是“透明的”;

而HttpServletResponse.sendRedirect()则不是。

(3).ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径;

而ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。

因为ServletRequest具有相对路径的概念;而ServletContext对象无次概念。

7.RequestDispatcher对象从客户端获取请求request,并把它们传递给服务器上的servlet,html或jsp。
它有两个方法:

(1)void  forward(ServletRequest
  request, ServletResponse   response)

用来传递request的,可以一个Servlet接收request请求,另一个Servlet用这个request请 求来产生response。request传递的请求,response是客户端返回的信息。forward要在response到达客户端之前调用,也 就是 before response body output
has been flushed。如果不是的话,它会报出异常。

(2).void include(ServletRequest request, ServletResponse response)

用来记录保留request和response,以后不能再修改response里表示状态的信息。

8.如果需要把请求转移到另外一个Web App中的某个地址,可以按下面的做法:

(1). 获得另外一个Web App的ServletConext对象(currentServletContext.getContext(uripath)).

(2). 调用ServletContext.getRequestDispatcher(String url)方法。

eg:ServletContext.getRequestDispatcher("smserror.jsp").forward(request,respons);

Servlet中的request对象、重定向和转发的区别(6)

时间: 2024-12-29 11:28:54

Servlet中的request对象、重定向和转发的区别(6)的相关文章

Servlet中的request对象、重定向和转发的差别(6)

1.这里所说的request对象指的是HttpServletRequest对象,它代表client的请求,当client通过HTTP协议訪问server时.HTTP请求头中的全部信息都封装在这个对象中.我们通过request对象调用里面的方法,能够获得客户发送给webserver的各种信息. 2.request的经常用法 (1)获得客户机信息     getRequestURL方法返回client发出请求时的完整URL.(                                比如:ur

重温Servlet学习笔记--request对象

request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每个请求时,服务器都会创建一个request对象,把请求的数据封装到request中,然后在调用Servlet.service()中传递进去.我们在创建一个servlet时通常会使用doGet或者doPost方法,并没有看到service()方法,就是因为父类的service方法已经读取到了reque

Java中 重定向和转发的区别 、与Session

重定向和转发的区别: 重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程.与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求.因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL,而当使用转发时该URL会保持不变.重定向的速度比转发慢,因为浏览器还得发出一个新的请求.同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用. 怎么选择

servlet中的request和response

利用3到4天的时间,把servlet中的request和response对象视频看了一遍.看完之后,自己总结出来了一些知识点. 学习一个对象的三部曲:首先查看API文档,了解以及掌握对象的一些常用的方法用法:其次就是解决一些中文乱码之类的问题:最后就是该对象的应用了. 好了,先来说说response对象吧. 1.解决用outputStream输出中文的乱码问题. //1.程序的数据以什么码表输出了,程序就要控制浏览器以什么码表打开 response.setHeader("content-type

request对象实现请求转发

request对象实现请求转发,请求转发指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理.request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发 请求转发的应用场景:MVC设计模式. 在MVC设计模式中,Servlet接受数据并进行相应的处理后,通过请求转发让JSP取出数据做显示.这就设计到如何把数据从Servlet带到JSP页面的问题.虽然通过s

在SpringMVC中获取request对象的几种方式

1.最简单的方式(注解法) 1 2 @Autowired private  HttpServletRequest request; 2.最麻烦的方法 a. 在web.xml中配置一个监听 <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> b.之后在程序里可以用 Http

在SpringMVC中获取request对象

1.注解法 Java代码   @Autowired private  HttpServletRequest request; 2. 在web.xml中配置一个监听 Xml代码   <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> 之后在程序里可以用 Java代码   H

如何在SpringMVC中获取request对象

1.注解法 @Autowired private HttpServletRequest request; 2. 在web.xml中配置一个监听 HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest(); 3.直接在参数中引入 public String hello(HttpServletRequest request,HttpS

TC608——Servlet中的Request和response请求响应技术

request和response author:lxy 1.了解request和response request:请求对象 response:响应对象 请求和响应对象由服务器创建,每次请求都创建新的请求响应对象,响应结束,对象自动消失. 作用: request可以处理所有的Http请求,----获取Http请求信息 response可以处理所有的Http响应,----设置Http响应信息 补充:请求消息由 请求行.请求头.请求内容组成 2.request和response体系介绍 |-Servl