JavaWeb学习总结(七)Request类获取请求参数/GET、POST请求的中文乱码问题/base标签/Response类的两个输出流/响应的中文乱码解决方案/请求转发和请求重定向的区别

一、HttpServletRequest 类

(一)HttpServletRequest 类的作用

每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息(包括用户提交的信息以及客户端的一些信息)解析好封装到 Request 对象中。 然后传递到 service 方法(doGet 和 doPost)中给我们使用。 客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后服务器通过Request对象的相关方法来获取所有请求的信息。

(二)HttpServletRequest 类的常用方法

getRequestURI() 获取请求的资源路径
getRequestURL() 获取请求的统一资源定位符(绝对路径)
getRemoteHost() 获取客户端的 ip 地址
getHeader() 获取请求头
getParameter() 获取请求的参数
getParameterValues() 获取请求的参数(多个值的时候使用)
getMethod() 获取请求的方式 GET 或 POST
setAttribute(key, value) 设置域数据
getAttribute(key)获取域数据
getRequestDispatcher() 获取请求转发对象

案例
web.xml:

<servlet>
    <servlet-name>RequestAPIServlet</servlet-name>
    <servlet-class>com.fox.servlet.RequestAPIServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>RequestAPIServlet</servlet-name>
    <url-pattern>/requestAPI</url-pattern>
</servlet-mapping>

Servlet:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RequestAPIServlet extends HttpServlet {
   

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //获取请求的资源路径
        System.out.println("URI => " + req.getRequestURI());
        //获取请求的统一资源定位符(绝对路径)
        System.out.println("URL => " + req.getRequestURL());
        //获取客户端的ip地址
        //在IDEA中,使用localhost访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1或者0:0:0:0:0:0:0:1(ipv6)
        //在IDEA中,使用127.0.0.1访问时,得到的客户端 ip 地址是 ===>>> 127.0.0.1
        //在IDEA中,使用 真实ip 访问时,得到的客户端 ip 地址是 ===>>> 真实的客户端 ip 地址
        System.out.println("客户端 ip地址 => " + req.getRemoteHost());
        //获取请求头
        System.out.println("请求头User-Agent => " + req.getHeader("User-Agent"));
        //获取请求的方式GET或POST
        System.out.println( "请求的方式 => " + req.getMethod() );
    }
}

在这里插入图片描述

(三)如何获取请求参数

web.xml:

<servlet>
    <servlet-name>ParameterServlet</servlet-name>
    <servlet-class>com.fox.servlet.ParameterServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ParameterServlet</servlet-name>
    <url-pattern>/parameter</url-pattern>
</servlet-mapping>

html:

<!DOCTYPE html>
<html lang="zh_CN">
<head>
	<meta charset="UTF-8">
	<title>Title</title>
</head>
<body>
<form action="http://localhost:8080/WebStudy/parameterServlet" method="get">
	用户名:<input type="text" name="username"><br/>
	密码:<input type="password" name="password"><br/>
	兴趣爱好:<input type="checkbox" name="hobby" value="cpp">C++
	<input type="checkbox" name="hobby" value="java">Java
	<input type="checkbox" name="hobby" value="js">JavaScript<br/>
	<input type="submit">
</form>
</body>
</html>

Servlet:

import javax.servlet.ServletException;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值