通过request对象获得请求行

  • 获得客户端请求方式:String getMethod();
  • 获得请求的资源:
    • String getRequestURL();
    • String getQueryString();--用于获取get提交url地址后的参数字符串(username=张三&password=123)
    • String getContextPath();****重要 重要 重要--用于获取请求的web应用的名称
        // 获得请求方式
String method = request.getMethod(); // 获得请求资源相关的内容
StringBuffer requestURL = request.getRequestURL();
String requestURI = request.getRequestURI();
System.out.println("URI=" + requestURI + "\r\nURL=" + requestURL); // 获得web应用的名称
String contextPath = request.getContextPath();
System.out.println("web应用名称为:"+contextPath); //获得地址后的参数字符串
String queryString = request.getQueryString();
System.out.println(queryString);

注意:request可以获得访问客户端的一些信息,例如:

request.getRemoteAddr();--获得访问的客户端的ip地址

通过request获得请求头

String getHeader()

        // 获得指定的头
String header = request.getHeader("User-Agent");
System.out.println(header); // 获得所有头的名称
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
System.out.println(headerName + ":" + headerValue);
}

referer头信息的作用:意思是执行该次访问的来源,可以做防盗链

通过request获得请求体

        response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8"); // 获得单个表单值
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username=" + username + ";password=" + password); // 获得多个表单的值
String[] hobbies = request.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println(hobby);
} // 获得所有请求参数的名称,该方法很少用
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
System.out.println(paramNames.nextElement());
} // Map<String, String[]> getParameterMap()
// 获得所有的参数,分装在一个map中
Map<String, String[]> parameterMap = request.getParameterMap();
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
String key = entry.getKey();
String[] values = entry.getValue(); // 值是一数组,还要遍历
for (String value : values) {
System.out.println(key + ":" + value);
}
}

request的其他功能

request是一个域对象

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

  • setAttribute(String name, Object o)
  • getAttribute(String name)
  • removeAttribute(String name)

request完成请求转发

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

    RequestDispather getRequestDispather(String path)
  2. 通过转发器对象转发

    requestDispather.forward(ServletRequest request, ServletResponse response)
        //Servlet1将请求转发给Servlet2
//1获得请求转发器对象,由于是在服务器内部进行的转发,所以下面写的地址不是/WEB15/servlet2(客户端地址),而是/servlet2(服务器端地址)
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");
//2执行转发的方法
dispatcher.forward(request, response);

注意

  • 转发的地址是不会变的,因为是服务器内部进行的,客户端并不知道,所以客户端的地址不会变。
  • 每次访问都会有一对新的requestresponse对象,这对对象是服务器帮我们创建的。
  • request的作用范围:一次请求

最新文章

  1. ArrayList用法
  2. bash检查文件格式
  3. math对象和date对象
  4. defrag磁盘整理命令
  5. linux/unix网络编程之 select
  6. 创建共享内存函数CreateFileMapping()详解
  7. 详解ExplosionField的使用,实现View的粉碎效果
  8. 安卓数据存储(2):SharedPreferences
  9. Ubuntu一些配置和技巧
  10. JavaScript DOM编程艺术读后感(1)—— 平稳退化
  11. javascript编程解决黑白卡片问题
  12. JDK动态代理[4]----ProxyGenerator生成代理类的字节码文件解析
  13. Android简易实战教程--第一话《最简单的计算器》
  14. pyltp安装踩坑记录
  15. python模块------shutil
  16. C# Winform 对话框控件&amp;简单记事本
  17. python中的*arg和**kwargs
  18. Observer,观察者模式,C++描述
  19. 记第十四届省赛参赛体会&amp;第十三届
  20. 车载文档记录(ROM)

热门文章

  1. vue组件传值之父传子
  2. Hive学习之路(一)Hive初识
  3. php面试专题---18、MySQL查询优化考点
  4. PHP的重载-使用魔术方法实现
  5. The server time zone value &#39;EDT&#39; is unrecognized or represents more than one time zone
  6. Vagrant 手册之 box - box 的信息格式
  7. ucenter 验证码看不到的解决办法
  8. 写的一个双向链表,测试OK
  9. Java基础复习(1)
  10. php优化方法