HttpServletRequest和HttpServletResponse实例

先看一下web.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  <servlet>
    <servlet-name>RequestDemo</servlet-name>
    <servlet-class>cn.test.request.RequestDemo</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ResponseDemo</servlet-name>
    <servlet-class>cn.test.response.ResponseDemo</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>RequestDemo</servlet-name>
    <url-pattern>/RequestDemo</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ResponseDemo</servlet-name>
    <url-pattern>/ResponseDemo</url-pattern>
  </servlet-mapping>

</web-app>

当一个请求发送到tomcat服务器时,服务器会查询web.xml文件,先访问所有的<servlet-mapping>,匹配其中<url-pattern>,找到相应的信息后,提取<servlet-name>,然后分别匹配<servlet>中的<servlet-name>,当匹配到结果时,再根据相对应的<servlet-class>找到后台程序并执行,这就完成了一次访问过程。

requestdemo

  1 public class RequestDemo extends HttpServlet {
  2
  3     public void doGet(HttpServletRequest request, HttpServletResponse response)
  4             throws ServletException, IOException {
  5         /**
  6          * 设置参数查询的编码
  7          * 该方法只能对请求实体内容的数据编码起作用。POST提交的数据在实体内容中,所以该方法对POST方法有效!
  8          * GET方法的参数放在URI后面,所以对GET方式无效!!!
  9          */
 10         request.setCharacterEncoding("utf-8");
 11
 12
 13     /*    System.out.println("GET方式");
 14         //接收GET方式提交的参数
 15         String value = request.getQueryString();
 16         System.out.println(value);*/
 17
 18
 19         /**
 20          * 统一方便地获取请求参数的方法
 21          */
 22         System.out.println(request.getMethod()+"方式");
 23         //getParameter(name): 根据参数名得到参数值(只能获取一个值的参数)
 24         String name = request.getParameter("name");
 25
 26         /**
 27          * 手动重新解码(iso-8859-1 字符串-> utf-8 字符串)
 28          */
 29         /*if("GET".equals(request.getMethod())){
 30             name = new String(name.getBytes("iso-8859-1"),"utf-8");
 31         }*/
 32
 33         String password = request.getParameter("password");
 34
 35         /*if("GET".equals(request.getMethod())){
 36             password = new String(password.getBytes("iso-8859-1"),"utf-8");
 37         }*/
 38
 39         System.out.println(name+"="+password);
 40
 41         System.out.println("=============================");
 42         Enumeration<String> enums = request.getParameterNames();
 43         while( enums.hasMoreElements() ){
 44             String paramName = enums.nextElement();
 45
 46             //如果参数名是hobit,则调用getParameterValues 获取多个参数值
 47             if("hobit".equals(paramName)){
 48                 /**
 49                  * getParameterValues(name): 根据参数名获取参数值(可以获取多个值的同名参数)
 50                  */
 51                 System.out.println(paramName+":");
 52                 String[] hobits = request.getParameterValues("hobit");
 53                 for(String h: hobits){
 54                 /*    if("GET".equals(request.getMethod())){
 55                         h = new String(h.getBytes("iso-8859-1"),"utf-8");
 56                     }*/
 57                     System.out.print(h+",");
 58                 }
 59                 System.out.println();
 60                 //如果不是hobit,则调用getParameter
 61             }else{
 62                 String paramValue = request.getParameter(paramName);
 63                 /*
 64                 if("GET".equals(request.getMethod())){
 65                     paramValue = new String(paramValue.getBytes("iso-8859-1"),"utf-8");
 66                 }*/
 67
 68                 System.out.println(paramName+"="+paramValue);
 69             }
 70         }
 71     }
 72     public void doPost(HttpServletRequest request, HttpServletResponse response)
 73             throws ServletException, IOException {
 74         /*System.out.println("POST方式");
 75         InputStream in = request.getInputStream();
 76         byte[] buf = new byte[1024];
 77         int len = 0;
 78         while(  (len=in.read(buf))!=-1 ){
 79             System.out.println(new String(buf,0,len));
 80         }*/
 81
 82         /**
 83          * 统一方便地获取请求参数的方法
 84          */
 85         /*System.out.println("POST方式");
 86         //根据参数名得到参数值
 87         String name = request.getParameter("name");
 88         String password = request.getParameter("password");
 89         System.out.println(name+"="+password);
 90
 91         System.out.println("=============================");
 92         Enumeration<String> enums = request.getParameterNames();
 93         while( enums.hasMoreElements() ){
 94             String paramName = enums.nextElement();
 95             String paramValue = request.getParameter(paramName);
 96             System.out.println(paramName+"="+paramValue);
 97         }*/
 98
 99         //一定调用doGet方式
100         this.doGet(request, response);
101     }
102
103 }

responsedemo

public class ResponseDemo extends HttpServlet {

    /**
     * 1)tomcat服务器把请求信息封装到HttpServletRequest对象,且把响应信息封装到HttpServletResponse
     * 2)tomcat服务器调用doGet方法,传入request,和response对象
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 3)通过response对象改变响应信息
         */
        /**
         * 3.1 响应行
         */
        //response.setStatus(404);//修改状态码
        //response.sendError(404); // 发送404的状态码+404的错误页面

        /**
         * 3.2 响应头
         */
        response.setHeader("server", "JBoss");

        /**
         * 3.3 实体内容(浏览器直接能够看到的内容就是实体内容)
         */
//        response.getWriter().write("01.hello world"); //字符内容。
        response.getOutputStream().write("02.hello world".getBytes());//字节内容

    }

    /**
     * 4)tomcat服务器把response对象的内容转换成响应格式内容,再发送给浏览器解析。
     */

}

response重定向:

 1 public class ResponseDemo2 extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         /**
 6          * 需求: 跳转到adv.html
 7          * 使用请求重定向: 发送一个302状态码+location的响应头
 8          */
 9         /*response.setStatus(302);//发送一个302状态码
10         response.setHeader("location", "/day09/adv.html"); //location的响应头
11 */
12
13         //请求重定向简化写法
14         response.sendRedirect("/day09/adv.html");
15
16
17     }
18
19 }

定时刷新:

 1 public class ResponseDemo extends HttpServlet {
 2
 3     public void doGet(HttpServletRequest request, HttpServletResponse response)
 4             throws ServletException, IOException {
 5         /**
 6          * 定时刷新
 7          * 原理:浏览器认识refresh头,得到refresh头之后重新请求当前资源
 8          */
 9         //response.setHeader("refresh", "1"); //每隔1秒刷新次页面
10
11         /**
12          * 隔n秒之后跳转另外的资源
13          */
14         response.setHeader("refresh", "3;url=/day09/adv.html");//隔3秒之后跳转到adv.html
15     }
16
17 }
时间: 2024-12-31 03:41:59

HttpServletRequest和HttpServletResponse实例的相关文章

GenericServlet,HttpServletRequest和HttpServletResponse

最基本的是通过实现Servlet接口来编写Servlet类,这需要实现Servlet接口中定义的5个方法. 为了简化Servlet的编写,在javax.servlet包中提供了一个抽象类GenericServlet,它给出了除了service( )方法外的其他4个方法的简单实现. 如果要编写一个通用的Servlet,只需要从GenericServlet类继承,并实现其中的抽象方法service( ). 在GenericServlet类中,定义了两个重载的init( )方法:public void

HttpServletrequest 与HttpServletResponse总结

如果说DOM是javascript与HTML的桥梁,那么servlet就是前端与后端的桥梁,HttpServletRequest和HttpServletResponse就是之间的信使,好了,废话不多说! 由来 Web服务器收到一个http请求,会针对每个请求创建一个HttpServletRequest和HttpServletResponse对象,向客户端发送数据找HttpServletResponse,从客户端取数据找HttpServletRequest. HTTP 协议是基于请求-响应的协议,

java HttpServletRequest和HttpServletResponse詳解

這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 最近由於CAS相關的JAR包的重新封裝,所以想盡量做到0配置,而這個過程中大量使 用HttpServletRequest,現在整理如下,以便以後查閱.(表格為從別的地方復制的,排版渣瞭點,酬和看吧.) 請求與響應相關的類和接口非常多,下表是主要的與請求和接口相關的類以及接口. 主要的與請求和接口相關的類及接口 方法 說明 ServletInputStrea

Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包

转载: http://xyly624.blog.51cto.com/842520/865630/ Maven项目下HttpServletRequest 或 HttpServletResponse需引用的依赖包:servlet-api.jar,并将scope设置为provided. pom.xml: <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifac

servlet中的HttpServletRequest,HttpServletResponse对象以及service 和 doXX方法区别

一:HttpServletRequest对象作用是用于获取请求数据. 核心的API: 请求行: request.getMethod(); 请求方式 request.getRequetURI() / request.getRequetURL() 请求资源 request.getProtocol() 请求http协议版本 请求头: request.getHeader("名称") 根据请求头获取请求值 request.getHeaderNames() 获取所有的请求头名称 实体内容: req

HttpServletRequest和HttpServletResponse详解

最近由于CAS相关的JAR包的重新封装,所以想尽量做到0配置,而这个过程中大量使 用HttpServletRequest,现在整理如下,以便以后查阅.(表格为从别的地方复制的,排版渣了点,酬和看吧.) 请求与响应相关的类和接口非常多,下表是主要的与请求和接口相关的类以及接口. 主要的与请求和接口相关的类及接口 方    法 说    明 ServletInputStream Servlet的输入流 ServletOutputStream Servlet的输出流 ServletRequest 代表

Servlet——HttpServletRequest、HttpServletResponse

HttpServletRequest对象 范例: package com.zgy.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServle

Java web基础总结五之—— HttpServletRequest与HttpServletResponse

Java web基础总结五之-- HttpServletRequest与HttpServletResponse 在前面总结过,每当客户端给Web服务器发送一个http请求,web服务器就会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象就代表请求和响应,所以我们可以通过request对象获得请求相关的数据和操作.通过response对象进行对响应相关的数据封装和一些其他的操作. 一.HttpServletRequ

如何自定义HttpServletRequest、HttpServletResponse?

如何自定义一个HttpServletRequest呢? 比如spring mvc,我们通常写成 @RequestMapping(value = "/helloworld", method = RequestMethod.GET) public ModelAndView test(HttpServletRequest req, HttpServletResponse res) {    return new ModelAndView("index.jsp"); } 一