JavaWeb-Servlet-HttpServletRequest

简介: JavaWeb学习:HttpServletRequest 类

HttpServletRequest 类

每次有请求进入 Tomcat 服务器,Tomcat 服务器就会将请求过来的 Http 协议信息封装到 Request 对象中,然后传递到 service 方法(doGet 和 doPost)中给我们使用。可以通过 HttpServletRequest 对象,获取到所有请求信息

常用方法

  1. getRequestRI() 获取请求的资源路径
  2. getRequestURL() 获取请求的统一资源定位符(绝对路径)
  3. getRemoteHost() 获取客户端的 ip 地址
  4. getHeader() 获取请求头
  5. getParameter() 获取请求参数
  6. getParameterValues() 请求参数为多个值时使用
  7. getMethod() 获取请求方式
  8. setAttribute(key, value) 设置域数据
  9. getAttribute(key) 获取域数据
  10. getRequestDispatcher() 获取请求转发对象

    1. 服务器收到请求后,从一个资源跳转到另一个资源的操作
    2. 两个资源共同处理一个请求,并且共享 request 域
    3. 可以转发到 WEB-INF 目录下(一般访问不到,可以转发进去)
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;

public class RequestAPIServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1. getRequestRI() 获取请求的资源路径
        System.out.println("URI:" + req.getRequestURI());
//        2. getRequestURL() 获取请求的统一资源定位符(绝对路径)
        System.out.println("URL:" + req.getRequestURL());
//        3. getRemoteHost() 获取客户端的 ip 地址
        /*
        * 本地使用 localhost 访问将得到 127.0.0.1
        * 使用本地真实 ip 访问得到本地真实 ip
        * */
        System.out.println("客户端 IP:" + req.getRemoteHost());
//        4. getHeader() 获取请求头
        System.out.println(req.getHeader("User-Agent"));
//        5. getParameter() 获取请求参数
        System.out.println(req.getParameter("username"));
        System.out.println(req.getParameter("gender"));
//        6. getParameterValues() 请求参数为多个值时使用
        System.out.println(Arrays.toString(req.getParameterValues("hobby")));
//        7. getMethod() 获取请求方式
        System.out.println(req.getMethod());
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // post 请求中包含中文时,要设置请求体的字符集
        // 要在获取请求前调用
        req.setCharacterEncoding("UTF-8");
        System.out.println(Arrays.toString(req.getParameterValues("hobby")));
    }
}

getRequestDispatcher() 获取请求转发对象

DispatcherServlet1

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class DispatcherServlet1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println("在 DispatcherServlet1 查看到 username:" + username);

        // 设置域数据并共享到 DispatcherServlet2 中
        request.setAttribute("key1", "DispatcherServlet1 已处理");

        // 转发到哪个地址(在 web.xml 中)
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/dispatcher2");

        // 转向转发地址
        requestDispatcher.forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

DispatcherServlet2

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class DispatcherServlet2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        System.out.println("在 DispatcherServlet2 查看到 username:" + username);

        // 查看是否已经经过 DispatcherServlet1 处理
        System.out.println(request.getAttribute("key1"));

        // 处理自己业务
        System.out.println("DispatcherServlet2 进行处理");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
相关文章
|
12月前
|
XML 小程序 Java
javaWeb-Servlet
javaWeb-Servlet
|
应用服务中间件 容器
【JavaWeb】知识总结Ⅹ(HttpServletRequest, HttpServletResponse)
请求行信息:可以使用getMethod()方法获取请求方法(如GET、POST等),使用getRequestURI()方法获取请求的URI(统一资源标识符),使用getProtocol()方法获取请求使用的协议(如HTTP/1.1)。 请求头信息:可以使用getHeader(String name)方法获取指定名称的请求头的值,使用getHeaderNames()方法获取所有请求头的名称的枚举。 请求参数:可以使用getParameter(String name)方法获取指定名称的请求参数的值,使用getParameterNames()方法获取所有请求参数的名称的枚举。
|
6月前
|
存储 安全 JavaScript
JavaWeb之Servlet(下)
本文主要介绍了JavaWeb开发中关于请求、响应、会话和Servlet3.0注解的相关知识。首先讲解了请求(Request)的常用方法,以及处理请求乱码问题的几种方式。接着讨论了响应(Response)的方法,,以及设置全局初始化参数。然后介绍了会话(Session)的概念,包括其生命周期、如何设置和获取初始化参数,并对比了全局初始化参数和Servlet3.0的`@WebServlet`注解。文中给出了具体的代码示例和测试结果,帮助读者更好地理解和掌握这些概念。
|
6月前
|
Java 应用服务中间件 程序员
JavaWeb之Servlet(上)
本篇博文介绍了JavaWeb中Servlet的基本概念和应用。Servlet是用于交互式浏览和修改数据、生成动态Web内容的Java程序,通常运行在支持Java的应用服务器上。文章讲解了Servlet的工作模式,包括客户端请求、服务器调用Servlet以及响应返回客户端的过程。此外,还提到了Servlet API,特别是doGet和doPost方法用于处理请求和响应。作者通过创建第一个Servlet的步骤,展示了如何实现Servlet接口并配置web.xml文件。最后,文章简述了Servlet的工作原理和生命周期,强调了Servlet的单例特性以及初始化、服务和销毁的过程。
|
XML JSON 缓存
JavaWeb-Servlet(一)
1.Servlet生命周期 2.Servlet的配置 3.Servlet的常用方法 4.Servlet体系结构 5.HTTP请求报文 6.HTTP响应报文
52 0
|
Java 关系型数据库 MySQL
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
660 0
Eclipse中出现javax.servlet.ServletException: javax.servlet.jsp.JspTagException: ...500问题
|
6月前
|
小程序 应用服务中间件 数据库连接
|
Java 中间件 应用服务中间件
【JavaWeb】知识总结Ⅶ(Servlet)
什么是 Servlet? Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
|
前端开发 网络协议 Java
JavaWeb 速通Servlet(Servlet和HttpServlet)
JavaWeb——Servlet,HttpServlet及其底层原理 内容分享。
69 0
|
Java 应用服务中间件 API
【JavaWeb】Servlet
【JavaWeb】Servlet