通过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的作用范围:一次请求

Java Web 之HttpServletRequest对象初识的更多相关文章

  1. java web学习总结(十) -------------------HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  2. java web 学习十(HttpServletRequest对象1)

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  3. Java web 中的HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  4. Java Web学习总结(7)——HttpServletRequest对象

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  5. [原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  6. [原创]java WEB学习笔记08:HttpServletRequest & ServletRequest

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. Java Web学习总结(5)HttpServletRequest

    一,HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

  8. java web HttpServletRequest

    一.HttpServletRequest介绍 HttpServletRequest 对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,通过这个对象提供的方法,可以获得客户端请求的所有信息. ...

  9. httpServletRequest对象、filter、servlet、servlet容器、catalina、tomcat、以及web容器之间的关系

    学习servlet的时候经常感到疑惑 HttpServletRequest是服务器创建的?还是servlet容器创建的? 过滤器是服务器创建的?还是servlet容器创建的? serlet容器和tom ...

随机推荐

  1. Integrating .NET Code and SQL Server Reporting Services

    SQL Server Reporting Services versions 2000 and 2005 (SSRS) has many powerful features. SSRS has a w ...

  2. [CSP-S模拟测试]:轰炸行动(bomb)(塔尖+拓扑排序+语文)

    题目描述 战狂也在玩<魔方王国>.他只会征兵而不会建城市,因此他决定对小奇的城市进行轰炸.小奇有n座城市,城市之间建立了$m$条有向的地下通道.战狂会发起若干轮轰炸,每轮可以轰炸任意多个城 ...

  3. js 和jquery

    1. js 全称 javascript 是 web客户端 运行的 解释性语言.. 2. jquery 只不过是 js 封装 简化了 ajax 和 dhtml 的 一款js 框架而已. 简单来说 Jqu ...

  4. js数组声明+split()方法

    split()方法:var words = sentence.split(' '): "hello".split("", 3) //可返回 ["h&q ...

  5. flask之二

    flask之二 预热 在渲染模板的时候,默认会从项目根路径下的templates目录下查找模板 如果想要指定模板路径的时候,就在初始化APP的时候,这样操作即可: app = Flask(__name ...

  6. 虚拟机安装linux遇到的问题

    1.运行 yum -y update,提示没有权限,改为sudo yum  -y update后,提示没有已启用的仓库.网上查找发现没有yum的库,然后开始安装yum. sudo apt-get in ...

  7. (转)基于TLS证书手动部署kubernetes集群(下)

    转:https://www.cnblogs.com/wdliu/p/9152347.html 一.master节点组件部署 承接上篇文章--基于TLS证书手动部署kubernetes集群(上),我们已 ...

  8. hadoop分布式环境安装

    1. 下载hadoop和jdk安装包到指定目录,并安装java环境. 2.解压hadoop到指定目录,配置环境变量.vim /etc/profile export JAVA_HOME=/home/xi ...

  9. Jenkins使用三:管理slave节点(配置SSH公钥和私钥)

    添加slave 给节点起个名字 1.远程工作目录:/test/workspace--这个地址是测试机的 jenkins 的 workspace 工作目录,自己随便写个本机的路径2.用法--尽可能的使用 ...

  10. time in china

    https://www.timeanddate.com/worldclock/china