鱼C论坛

 找回密码
 立即注册
查看: 2848|回复: 0

[学习笔记] Jsp&Servlet08

[复制链接]
发表于 2017-7-19 22:27:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Request 封装客户端所有的请求数据
        结构:
        请求行
        请求头
        空行
        请求体(get媒体)
       
        获取常用信息:
        获取客户端IP  request.getRemoteAddr()
        获取请求方式  request.getMethod()  post或者get
       
        获取(http)请求头
                String getHeader(String name) 适用于单值头
                Int getIntHeader(String name) 适用于单值INT类型的请求头
                Long getDateHeader(String naem) 适用于单值毫秒类型的请求头
                Enumeration<String> getHeaders(String)  适用于多值请求头
        通过User-Agent得到用户信息
        大多数请求都是get ,表单默认也是get,设置为post,请求才为post
       
        总结操作:
                        获取客户端的IP地址,获取请求方式,获取User-Agent,得到客户端信息
                        String addr=request.getRemoteAddr();
                                                System.out.println("IP: "+addr);
                                                System.out.println("请求方式: "+request.getMethod());
                                                String userAgent=request.getHeader("User-Agent");
                                                System.out.println(userAgent);
                                                //Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36
                                                if(userAgent.toLowerCase().contains("chrome")){
                                                        System.out.println(addr+": ,你使用的是谷歌");
                                                }else if(userAgent.toLowerCase().contains("firefox")){
                                                        System.out.println(addr+":你使用的是火狐");
                                                }
        获取请求URL
                Http://localhost:8080/day10_1/Aservlet?username=xxx&password=yyy
                String getScheme(): 获取协议  Http
                String getServerName(): 获取服务器名, localhost
                String getServerPort(): 获取端口 8080
                String getContextPath(): 获取项目名  /day10_2
                String getServletPath(): 获取Servlet路径 /Aservlet
                String getQueryString(): 获取参数部分,即问号后面部分  username=xxx&password=yyy
                String getRequestURI(): 获取请求URI 等于项目名+Servlet路径  /day10_2/Aservlet
                String getRequestURL():获取请求URL 等于不包含参数的整个请求路径  Http://localhost:8080/day10_1/Aservlet
       
        防盗链
                使用Referer请求头,来防盗链
                String referer =request.getHeader("Referer");
                                        System.out.println(referer);
                                        if(referer==null||!referer.contains("localhost")){
                                                response.sendRedirect("http://www.baidu.com");
                                        }else{
                                                System.out.println("Hello!!");
                                        }
               
        获取请求参数:请求参数是由客户端发送给服务器的
                String getParameter(String name):获取指定名称的请求参数值,单值请求参数
                Enumeraiotn<String> getParameterNames();获取所有请求参数的名称
                String[]  getParameterValues(String name):获取指定名称的请求参数值,适用于多值请求参数 一个参数对应多个值
                Map<String,String[]>  getParameterMap():获取所有请求参数
        实现:
                String username=req.getParameter("username");
                String password=req.getParameter("password");
                String[] hobby=req.getParameterValues("hobby");
                System.out.println(username+", "+password+", "+Arrays.toString(hobby));将字符串数组转为字符串
               
                Enumeration names=req.getParameterNames(); //枚举类型数据集合
                                while(names.hasMoreElements()){
                                        System.out.println(names.nextElement());
                                }
               
                获取所有请求参数,封装到Map中  map集合类型之一
                Map<String,String[]>map=req.getParameterMap();
                                System.out.println(map);
                        }
                或者:
                        Map<String,String[]>map=req.getParameterMap();
                                        //遍历
                                        for(String name:map.keySet()){
                                                String[] values=map.get(name);
                                                System.out.println(name+"="+Arrays.toString(values));
                                        }

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 13:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表