【JavaWeb】Servlet中HttpServletRequest 类和HttpServletResponse 类

本文详细介绍了HTTP请求和响应的工作原理。重点讲解了HttpServletRequest和HttpServletResponse类的使用方法,包括如何处理请求参数、解决乱码问题、实现请求转发与重定向等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、HttpServletRequest 类

1、HttpServletRequest

客户端请求进入Tomcat服务器后,服务器会把把请求过来的 HTTP 协议信息解析好封装到 Request 对象中然后传递到 service 方法( doGet 和 doPost) 中给我们使用。 我们可以通过 HttpServletRequest 对象, 获取到所有请求的信息。

2、HttpServletRequest 常用方法

方法名称作用
getRequestURI()获取请求的资源路径
getRequestURL()获取请求的统一资源定位符(绝对路径),加上了主机信息
getRemoteHost()获取客户端的 ip 地址
getParameter()获取请求参数
getParameterValues()获取多个请求参数
getMethod()获取请求的方式 GET 或 POST
setAttribute(; 设置域数据
getAttribute(key);获取域数据
getRequestDispatcher();获取请求转发对象

3、乱码问题

doGet 请求的中文乱码解决:

/ 获取请求参数
String username = req.getParameter("username");
//1 先以 iso8859-1 进行编码
//2 再以 utf-8 进行解码
username = new String(username.getBytes("iso-8859-1"), "UTF-8");

POST 请求的中文乱码解决

// 设置请求体的字符集为 UTF-8, 从而解决 post 请求的中文乱码问题, 一定写在最前面
req.setCharacterEncoding("UTF-8");

4、请求转发

请求转发是指, 服务器收到请求后, 从一次资源跳转到另一个资源的操作叫请求转发。
在这里插入图片描述
总结:
转发的特点:1、浏览器地址无变化;2、一次请求;3、共享request中数据;4、可以转发到WEB-INF目录下;5、不可以访问工程外资源。

5、xml中base标签

base标签可以设置当前页面跳转时候,参照跳转的路径。

<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--base 标签设置页面相对路径工作时参照的地址
href 属性就是参数的地址值
-->
<base href="http://localhost:8080/07_servlet/a/b/">
</head>
<body>
这是 a 下的 b 下的 c.html 页面<br/>
<a href="../../index.html">跳回首页</a><br/>
</body>
</html>

6、路径

在这里插入图片描述
web 中 / 斜杠的不同意义
如果被浏览器解析,就是 http://ip:port/
如果被服务器解析,得到地址 http://ip:port/工程路径

二、HttpServletResponse 类

1、HttpServletResponse

浏览器每次发送请求后, Tomcat 服务器也会创建一个 Response 对象传递给 Servlet 程序去使用。来传递服务器对浏览器请求的响应信息。需要返回给浏览器的信息,都可以通过HttpServletResponse 对象来设置。

2、常用两个输出

httpServletResponse.getWriter();  // 常用于回传字符串(常用)
httpServletResponse.getOutputStream(); // 常用于下载(传递二进制数据)

两个不能同时使用,同时使用会报错。

在浏览器页面,通过响应流打印hello。

PrintWriter writer = httpServletResponse.getWriter(); // 响应流
        writer.print("hello");

3、响应乱码问题

方法一:
先设置服务器

httpServletResponse.setCharacterEncoding("UTF-8");

再设置浏览器

 httpServletResponse.setHeader("Content-Type", "text/html; charset=UTF-8");

方法二:
同时设置

httpServletResponse.setContentType("text/html; charset=UTF-8");

4、请求重定向

请求重定向:浏览器向服务器发送请求,服务器返回给浏览器一些新的地址,让其在新的地址进行访问。这就是重定向。
在这里插入图片描述
特点:1、地址改变;2、两次请求,3、不共享resquest域数据;4、不能访问web-INF;5、可以访问外部资源。

public class DemoServlet01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.sendRedirect("/demo02");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值