🎄欢迎来到@dandelionl_的csdn博文,本文主要讲解Java web中Servlet里面的HttpServletRequest, HttpServletResponse的相关知识🎄
🌈我是dandelionl_,一个正在为秋招和算法竞赛做准备的学生🌈
🎆喜欢的朋友可以关注一下,下次更新不迷路🎆
Ps: 月亮越亮说明知识点越重要 (重要性或者难度越大)🌑🌒🌓🌔🌕
目录
🌕注意事项
一. HttpServletRequest
HttpServletRequest介绍
HttpServletRequest代表了客户端向服务器发送的HTTP请求。它是Servlet容器在调用Servlet服务时,通过参数传递给Servlet的对象。
HttpServletRequest对象提供了许多方法来获取有关HTTP请求的信息,包括:
- 请求行信息:可以使用
getMethod()
方法获取请求方法(如GET、POST等),使用getRequestURI()
方法获取请求的URI(统一资源标识符),使用getProtocol()
方法获取请求使用的协议(如HTTP/1.1)。 - 请求头信息:可以使用
getHeader(String name)
方法获取指定名称的请求头的值,使用getHeaderNames()
方法获取所有请求头的名称的枚举。 - 请求参数:可以使用
getParameter(String name)
方法获取指定名称的请求参数的值,使用getParameterNames()
方法获取所有请求参数的名称的枚举。 - 请求体信息:对于POST请求,可以使用
getReader()
方法获取请求体的字符输入流,或者使用getInputStream()
方法获取请求体的字节输入流。 - Cookie:可以使用
getCookies()
方法获取所有的Cookie信息。 - Session管理:可以使用
getSession()
方法获取与当前请求关联的Session对象。
除了上述方法之外,HttpServletRequest还提供了其他许多方法,用于获取请求的各个方面的信息。通过HttpServletRequest对象,Servlet可以处理客户端发送的请求,并根据请求的信息做出相应的响应。
HttpServletRequest 常用方法
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = {"/HttpServletRequestMethods"})
public class HttpServletRequestMethods extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doPost(req, resp);
req.setCharacterEncoding("utf-8");
// http://localhost:8080/ServletStu/HttpServletRequestMethods?username=%E5%8F%91%E5%A3%AB%E5%A4%A7%E5%A4%AB&pwd=12345679&hobby=lh
// 看上一行你就全懂了
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
System.out.println("账号 : " + username + " 密码 : " + pwd);
// 账号 : 发士大夫 密码 : 12345679
String[] hobbies = req.getParameterValues("hobby");
for (String hobby : hobbies) {
System.out.println("爱好 : " + hobby);
}
// 爱好 : lh
String method = req.getMethod();
System.out.println(method); // 请求方法
// GET
String host = req.getHeader("Host");
System.out.println(host); // 服务器的主机 : ip+port
// localhost:8080
String referer = req.getHeader("Referer");
System.out.println(referer);
// http://localhost:8080/ServletStu/register_request.html
String header = req.getHeader("User-Agent");
System.out.println(header);
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
String[] split = header.split(" ");
System.out.println(split[1] + split[2] + split[3] + split[4] + split[5]);
// (WindowsNT10.0;Win64;x64)
String requestURI = req.getRequestURI();
System.out.println(requestURI);
// /ServletStu/HttpServletRequestMethods
StringBuffer requestURL = req.getRequestURL();
System.out.println(requestURL);
// http://localhost:8080/ServletStu/HttpServletRequestMethods
String protocol = req.getProtocol();
System.out.println(protocol);
// HTTP/1.1
String remoteAddr = req.getRemoteAddr();
String remoteUser = req.getRemoteUser();
String remoteHost = req.getRemoteHost();
int remotePort = req.getRemotePort();
System.out.println("remoteAddr = " + remoteAddr + ", remoteUser = " + remoteUser + ", remoteHost" + remoteHost + ", remotePort" + remotePort);
// remoteAddr = 127.0.0.1, remoteUser = null, remoteHost127.0.0.1, remotePort59671
}
}
HttpServletRequest 注意事项和细节
String username = req.getParameter("username");
二. HttpServletResponse
HttpServletResponse代表了服务器向客户端发送的HTTP响应。它是Servlet容器在调用Servlet服务时,通过参数传递给Servlet的对象。
HttpServletResponse对象提供了许多方法来设置和发送HTTP响应,包括:
- 设置响应状态码:可以使用
setStatus(int sc)
方法设置响应的状态码,如200表示成功、404表示资源未找到等。 - 设置响应头信息:可以使用
setHeader(String name, String value)
方法设置指定名称的响应头的值,使用addHeader(String name, String value)
方法添加响应头。 - 设置响应内容的数据类型:可以使用
setContentType(String type)
方法设置响应内容的MIME类型。 - 获取输出流:可以使用
getWriter()
方法获取字符输出流,或者使用getOutputStream()
方法获取字节输出流,用于向客户端发送响应内容。 - 设置重定向:可以使用
sendRedirect(String location)
方法将客户端重定向到另一个URL。 - 设置Cookie:可以使用
addCookie(Cookie cookie)
方法添加Cookie到响应中。
除了上述方法之外,HttpServletResponse还提供了其他许多方法,用于设置和发送HTTP响应的各个方面。通过HttpServletResponse对象,Servlet可以根据业务逻辑生成响应内容并发送给客户端,与客户端进行交互。
注意事项
- 方案一
//设置服务器字符集为UTF-8 resp.setCharacterEncoding("UTF-8"); //通过响应头,设置浏览器也使用UTF-8字符集 resp.setHeader( "Content-Type", "text/html;charset=UTF-8");
- 方案二
response.setContentType("text/html; charset=utf-8");
总结
HttpServletResponse代表了服务器向客户端发送的HTTP响应。
HttpServletRequest代表了客户端向服务器发送的HTTP请求。
两者都是Tomcat封装的对象, 传递给servlet进行执行, 而servlet可以获取它们的具体信息, 并对一些信息进行修改