request 的相关请求方法

1,获取客户端IP , 案件 :封IP getRemoteAddr

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String ip = req.getRemoteAddr();
        resp.getWriter().print(ip);
        if(ip == "113.102.241.121") {
            resp.sendError(404,"IP:"+ip);
        }
    }

2,请求方式,resp.getMethod() 获取请求方法

 

3,请求头

4,获取浏览器型号,操作系统,IP 

 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            String ip = req.getRemoteAddr();
            System.out.println(ip+" IP");
            System.out.println(req.getMethod()+" method");
            String useragent = req.getHeader("User-Agent");
            System.out.println(useragent);
            if(useragent.toLowerCase().contains("chrome")) {
                System.out.println("您的IP是:"+ip+" 你用的是谷歌浏览器!");
                resp.getWriter().print("your ip is :"+ip+" your browser is: Chrome");
            }else if(useragent.toLowerCase().contains("firefox")) {
                System.out.println("您的IP是:"+ip+" 你用的是火狐浏览器!");
                resp.getWriter().print("your ip is :"+ip+" your browser is: Firefox");
            }else if(useragent.toLowerCase().contains("msie")) {
                System.out.println("您的IP是:"+ip+" 你用的是IE浏览器!");
                resp.getWriter().print("your ip is :"+ip+" your browser is: IE");
            }
        }

5,获取请求URL

String uri = req.getRequestURI();
        StringBuffer url = req.getRequestURL();
        
        String n = req.getScheme();
        String l = req.getServerName();
        int s = req.getServerPort();
        String n2 = req.getContextPath();
        System.out.println(url);
        System.out.println(uri);
        System.out.println(n);
        System.out.println(l);
        System.out.println(s);
        System.out.println(n2); 

6,Referer 这个请求头表示,访问来源

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String referer = req.getHeader("ReFerer");
        System.out.println(referer);
        if(referer == null ||! referer.contains("localhost")) {
            resp.sendRedirect("http://www.baidu.com");
        }else{
            System.out.println("hello");
        }
    } 

7,request 请求参数

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
        resp.getWriter().print(req.getParameter("xxx"));
        resp.getWriter().print(req.getParameter("yyy"));
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(req.getParameter("name"));
        System.out.println(req.getParameter("age"));
        System.out.println(req.getParameter("sex"));
        System.out.println(req.getParameterValues("like"));
        resp.getWriter().print(req.getParameter("name"));
        resp.getWriter().print(req.getParameter("age"));
        resp.getWriter().print(req.getParameter("sex"));
        resp.getWriter().print(Arrays.toString(req.getParameterValues("like")));
    }

8,request 请求,response 请求响 应 , 请求转发与包含

Fservlet 类

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("oneServlet");
        resp.setHeader("aaa","888");//设置响应头
        resp.getWriter().print("hello.设置响应体");//设置响应体
        //等同于调用了Gservlet的service()方法---doget
        req.getRequestDispatcher("/Gservlet").forward(req, resp);
    }

 当执行 Fservlet  类时,浏览器不输出,Fservlet的内容,只输出 Gservlet 所输出的内容 “twoServlet” 

这叫做,留头,不留体

Gservlet  类

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("twoServlet");
        resp.setHeader("aaa", "AAA");
        resp.getWriter().print("twoServlet");
     }

包含 include  留下头又留体,所以屏幕会输出,Fservlet类的打印内容,和Gservlet类的打印内容

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("oneServlet");
        resp.setHeader("aaa","888");//设置响应头
        resp.getWriter().print("hello.设置响应体");//设置响应体
        //等同于调用了Gservlet的service()方法---doget
        //req.getRequestDispatcher("/Gservlet").forward(req, resp);
        //包含 include
        req.getRequestDispatcher("/Gservlet").include(req, resp);
    }

9, request 域属性 void Attribute(String name,object value)   getAttribute(String name) removeAttribute(String name)

同一请求范围使用,request.setAttribute() , request.getAttribute()来传值 ,前一个Servlet保存值 ,后一个Servlet调用取值 

10,编码默认使用 UTF-8万国码,《存入时的编码和取出的编码不一致时会 产生编码》

设置响应编码的三种方式

response.getCharacterEncoding("content-type" )

        resp.setCharacterEncoding("utf-8");

        resp.setContentType("text/html;charset=utf-8");// 用这个最简单,通常都用这个,
        resp.setHeader("Content-Type", "text/html;charset=utf-8"); //设置响应头,同时设置setCharacterEncoding()

        

 设置请求编码 post get请求

post 请求 在getparameter() 前面用,setCharacterEncoding("utf-8") 即可!

get 请求 在tomcat > conf > service.xml  在connector 结尾 加上 URIEncoding="UTF-8"

(小心使用,除非你客户装的也是TOMCAT服务器)

真正设计get请求 (今后都用如下代码)

 String name = req.getParameter("name"); //此get过来传来到的编码默认是iso

//反编回来

 byte[] bytes = name.getBytes("ISO-8859-1");

name = new String(bytes,"utf-8"); 

以下是编码案例

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String sex = req.getParameter("sex");
        //反编译字符编码
        byte[] s =sex.getBytes("iso-8859-1");
        byte[] b = name.getBytes("iso-8859-1");
        name = new String(b,"utf-8");
        sex = new String(s,"utf-8");
        
        resp.setContentType("text/html;charset=utf-8"); //响应编码也就是浏览器的
        resp.getWriter().print(name);
        resp.getWriter().print(sex);
        System.out.println(name);
        
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            req.setCharacterEncoding("UTF-8");
            resp.setContentType("text/html;charset=utf-8");//响应编码也就是浏览器的
            
            String name =req.getParameter("name");
            String sex = req.getParameter("sex");
            resp.getWriter().print(name+" / "+sex);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值