Request请求的应用

cqyp 2019-09-09 原文

Request请求的应用

1.通过request获得请求行

 

获得客户端的请求方式:String getMethod()

 

获得请求的资源:

 

String getRequestURI()

 

StringBuffer getRequestURL()

 

String getContextPath() ---web应用的名称

 

String getQueryString() ---- get提交url地址后的参数字符串

 

注意:request获得客户机(客户端)的一些信息

 

request.getRemoteAddr() — 获得访问的客户端IP地址

 

 

 

 

 1 //获得请求方式
 2         String Method=request.getMethod();
 3         System.out.println("方式"+Method);
 4         //获得请求资源相关内容
 5         String requestURI=request.getRequestURI();
 6         System.out.println("uri:"+requestURI);
 7         StringBuffer requestURL =request.getRequestURL();
 8         System.out.println("url:"+requestURL);
 9         //获得WEB应用名称
10         String contextPath=request.getContextPath();
11         System.out.println("WEB应用名称"+contextPath);
12         //地址后的参数字符串
13         String queryString=request.getQueryString();
14         System.out.println(queryString);
15         //获得访问者的IP地址
16         String remoteAddr=request.getRemoteAddr();
17         System.out.println("ip:"+remoteAddr);

 

 

2.通过request获得请求头

 

1)long getDateHeader(String name)

 

2)String getHeader(String name)

 

3)Enumeration getHeaderNames()

 

4)Enumeration getHeaders(String name)

 

5)int getIntHeader(String name)

 

1 //获得指定的头
2         String header=request.getHeader("User-Agent");
3         System.out.println(header);
4         //2.获得所有头的信息
5         Enumeration<String> headerNames=request.getHeaderNames();
6         while(headerNames.hasMoreElements()) {  //判断是否还有更多
7             String headerName=headerNames.nextElement();
8             String headerValue=request.getHeader(headerName);//通过名获取值
9             System.out.println(headerName+"   "+headerValue);

 

注意:referer头的作用:执行此次访问的来源做防盗链

防止其他网站盗用自家网站信息

 

//简单的一个获取referer头的网页 
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Insert title here</title> 6 </head> 7 <body> 8 <a href="/WEB4/referer">访问HeaderServlet资源</a> 14 </body> 15 </html>
String header =request.getHeader("referer"); 
//判断访问的地址是否为该地址 if(header!=null && header.startsWith("http://localhost")) { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("啦啦啦啦啦啦啦啦"); }else { System.out.println("fsf"); }

 

 3.通过request获得请求体

 

1)String getParameter(String name); 

2)String[] getParameterValues(String name);

3)Enumeration getParameterNames();

4)Map<String,String[]> getParameterMap();

注意:get请求方式的请求参数 上述的方法一样可以获得;

解决post提交方式的乱码:request.setCharacterEncoding(“UTF-8”);

解决get提交的方式的乱码:parameter = new String(parameter.getbytes(“iso8859-1″),”utf-8”);

<form action="/WEB4/content" method="post">
<input type="text" name="username"><br>
<input type="password" name="passworld"><br>
<input type="checkbox" name="hobby" value="zq">足球
<input type="checkbox" name="hobby" value="lq">篮球
<input type="checkbox" name="hobby" value="pq">乒乓球<br>
<input type="submit" value="提交">
</form>
 1         //获得单个表单值
 2         String username=request.getParameter("username");
 3         System.out.println(username);
 4         String password =request.getParameter("passworld");
 5         System.out.println(password);
 6         System.out.println("-------------------");
 7         //2.获得多个表单的值
 8         String[] hobbys = request.getParameterValues("hobby");
 9         for(String hobby:hobbys) {
10             System.out.println(hobby);    
11         }
12         System.out.println("-------------------");
13         //3.获得所有请求参数名称
14         Enumeration<String> parameterNames = request.getParameterNames();
15         while(parameterNames.hasMoreElements()) {
16             System.out.println(parameterNames.nextElement());
17         }
18         System.out.println("-------------------");
19         //4.获得所有的参数,参数封装到Map<String,String[]>
20         Map<String, String[]> parameterMap = request.getParameterMap();
21         for(Map.Entry<String, String[]> entry:parameterMap.entrySet()) {
22             System.out.println(entry.getKey());
23             for(String str:entry.getValue()) {
24                 System.out.println(str);
25             }
26             System.out.println("---------------");
27         }

 

 

4.request的域对象和请求转发

(1)request是一个域对象

request对象也是一个存储数据的区域对象,所以也具有如下方法:

1)setAttribute(String name, Object o)

2)getAttribute(String name)

3)removeAttribute(String name)

 

注意:request域的作用范围:一次请求中

(2)request完成请求转发

获得请求转发器—-path是转发的地址

RequestDispatcher getRequestDispatcher(String path)

通过转发器对象转发

requestDispathcer.forward(ServletRequest request, ServletResponse response)

客户端请求forwar1,forward1又发送请求到forward2;

//向request域当中存取数据
        request.setAttribute("name", "tom");
        //forward1将请求转发给forward2(获得转发器)
        RequestDispatcher dispatcher = request.getRequestDispatcher("/forward2");//服务器端地址
        //执行转发方法
        dispatcher.forward(request, response);
//从request域中取数据
        Object attribute = request.getAttribute("name");
        response.getWriter().write("hello haohao..."+attribute);

 

 

注意转发与重定向的区别?

    1)重定向两次请求,转发一次请求

    2)重定向地址栏的地址变化,转发地址不变

    3)重新定向可以访问外部网站 转发只能访问内部资源

    4)转发的性能要优于重定向

posted on
2019-09-09 19:51 撑起一片阳光 阅读() 评论() 编辑 收藏

 

版权声明:本文为cqyp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/cqyp/p/11493846.html

Request请求的应用的更多相关文章

随机推荐

  1. 学习jenv

    背景 生活不只是眼前的苟且, 还有诗和远方. 上个月工作需要启动了一个小项目, 按最初的计划会用JDK8. 但 […]...

  2. 数据方舟 for Excel工具箱使用说明

    一款免费无限制的Excel工具箱 一、界面    二、下载链接:The Latest Version:V3.2 […]...

  3. 内网小组 | 端口转发 全剧终

    出品|MS08067实验室(www.ms08067.com) 本文作者:掉到鱼缸里的猫(Ms08067内网安全 […]...

  4. Python中的代码注释

    为什么要使用注释? 1. 方便自己查看写过的代码  2. 互联网人才流动大,为了项目能更好维护,需要适当写注释 […]...

  5. Windows Server 2016-配置Windows Defender防病毒排除项 – stoneyeung

    Windows Server 2016-配置Windows Defender防病毒排除项 Windows Se […]...

  6. 用户登录(三次机会重试)

    #!/usr/bin/env python # -*- coding: utf-8 -*- #用户登录(三次机 […]...

  7. elasticsearch 基础 语法总结

    elasticsearch 基础 语法总结   1. es 使用 restful 风格的 api   备注: […]...

  8. chrome.socket

    chrome.socket https://chajian.baidu.com/developer/apps/ […]...

展开目录

目录导航