02 HttpServletRequest对象

tomcat服务器把http请求信息封装到HttpServletRequest对象中。
开发者通过HttpServletRequest对象得到http请求信息。
常用方法:
请求行:

request.getMethod(); 请求方式
request.getRequestURI() 请求资源
request.getRequestURL()
request.getProtocol() 协议版本

请求头:

request.getHeader("name"): 根据请求头获取请求值
request.getHeaderNames(): 获取所有请求头名称

实体内容:

request.getInputStream();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //:获取请求行信息
        System.out.println("请求方法:"+request.getMethod());
        System.out.println("请求URI:"+request.getRequestURI());
        System.out.println("请求URL:"+request.getRequestURL());
        System.out.println("请求协议版本:"+request.getProtocol());
        
        //:获取请求头信息
        System.out.println("获取某一头信息:"+request.getHeader("Accept-Encoding"));
//      System.out.println("一个头信息多个值:");request.getHeaders(xxx);
        System.out.println("获取所有头信息:");
        Enumeration en = request.getHeaderNames();
        while(en.hasMoreElements()){
            String name=(String) en.nextElement();
            System.out.println(name+":"+request.getHeader(name));
        }
        
        //:获取实体内容
        InputStream in = request.getInputStream();
        byte[] buf = new byte[1024];
        int len = 0;
        while(  (len=in.read(buf))!=-1   ){
            String str = new String(buf,0,len);
            System.out.print(str);
        }
}
02 HttpServletRequest对象_第1张图片
Paste_Image.png

结论: service方法和doXXX方法的关系?

  • service方法是程序的入口。我们的代码逻辑就在这个方法被调用到。
  • 在HttpServlet的service方法源码中,根据不同请求方式调用了不同的doXX方法,
  • 所以我们在开发servlet的时候,就不需要去覆盖service方法,而是去doXX方法。
    
  • 因为get和post是最常用的的两种请求方式,所以只需要覆盖doGet和doPost方法即可!
    

userAgent的作用:
userAgent可以识别出浏览器的所属性设备:

  • chrome浏览器
  • firefox浏览器
  • ie
  • iphone
  • ......
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        
        String userAgent = request.getHeader("user-agent");
        
        if(userAgent.contains("Firefox")){
            response.getWriter().write("你正在使用火狐浏览器");
        }else if(userAgent.contains("Chrome")){
            response.getWriter().write("你正在使用谷歌浏览器");
        }else if(userAgent.contains("Trident")){
            response.getWriter().write("你正在是IE浏览器");
        }else{
            response.getWriter().write("识别不了的浏览器");
        }
        
        
    }

referer的作用:
referer表示当前的请求资源来自哪里;
可以用来判断用户是否是通过广告页面进来的;

02 HttpServletRequest对象_第2张图片
Paste_Image.png

你可能感兴趣的:(02 HttpServletRequest对象)