一,Servlet概述
处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。
tomcat和servlet的关系:
- Tomcat 是Web应用服务器,是一个Servlet/JSP容器.
- Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.
- Servlet是一种运行在支持Java语言的服务器上的组件. Servlet最常见的用途是扩展Java Web服务器功能,提供非常安全的,可移植的,易于使用的CGI替代品.
Servlet基本上被SpringBoot替代了,故只需了解一下Servlet在 SpringBoot中用到的类即可。
二,接收和响应类
@RestController
public class DemoController {
@RequestMapping("/**")
public String testServlet(HttpServletRequest request,HttpServletResponse response){
return "1";
}
}
2.1 请求:HttpServletRequest
HttpServletRequest
接口继承自ServletRequest
接口HttpServletRequest
专门用于封装HTTP请求消息HttpServletRequest
提供了一些用于访问请求消息的方法,如获取请求行、获取请求头等
常用方法:
@RestController
public class DemoController {
@RequestMapping("/**")
public String testServlet(HttpServletRequest request,HttpServletResponse response){
//1.获取请求行的内容:
//获取请求行中的协议名和版本,例如:HTTP/1.0
String protocol = request.getProtocol();
//获取发送请求的客户端的ip地址
String remoteAddr = request.getRemoteAddr();
//获取发送请求的客户端的完整主机名,如果解析不到则返回IP地址
String remoteHost = request.getRemoteHost();
//获取发送请求的客户端的端口号
int remotePort = request.getRemotePort();
//2.获取请求头的内容
//获取请求头中指定名称字段的值,如果没有该字段则返回null,如果有多个该指定名称的字段,则返回第一个字段的值
String header = request.getHeader("name");
//获取Content-Type字段的值
String contentType = request.getContentType();
//获取Content-Length字段的值
int contentLength = request.getContentLength();
return "1";
}
}
2.2 响应:HttpServletResponse
response
对象的功能分为以下三种:
- 设置响应头信息;
- 设置响应状态码;
- 设置响应正文,发送响应。
@RestController
public class DemoController {
@RequestMapping("/**")
public String testServlet(HttpServletRequest request,HttpServletResponse response) throws IOException {
//1.设置响应头
//重置,设置头信息
response.setHeader("key1","value1");
//追加头信息
response.addHeader("key2","value2");
//2.设置状态码
response.setStatus(300);
//3.发送数据给客户端
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(1);
return "1";
}
}
三,Cookie和Seesion
3.1 Cookie
在 Web 开发中,Cookie 是一种用于存储客户端(通常是浏览器)数据的小型文本文件。
- Cookie 可以被服务器端创建并发送给客户端
- 然后客户端在之后的每次请求中都会将这些 Cookie 数据发送给服务器
- 这使得服务器可以在不同请求之间跟踪用户的状态和信息。
@RestController
public class DemoController {
@RequestMapping("/**")
public String testServlet(HttpServletRequest request, HttpServletResponse response){
//获取客户端发送的所有Cookie
Cookie[] cookies = request.getCookies();
//创建cookie
Cookie cookie = new Cookie("key", "value");
//设置cookie的
cookie.setMaxAge(3600);
//发送Cookie给客户端
response.addCookie(cookie);
//获取cookie的key
String name = cookie.getName();
//获取cookie的value
String value = cookie.getValue();
//设置cookie的value
cookie.setValue("123");
//删除cookie
cookie.setMaxAge(0);
return "1";
}
}
3.2 Seesion
HttpSession是Java中的一个接口,用于在Web应用中跟踪用户的会话信息。它提供了一种在请求之间存储信息的方式,使得服务器可以识别特定用户的请求。
@RestController
public class DemoController {
@RequestMapping("/**")
public String testServlet(HttpServletRequest request, HttpServletResponse response){
//获取Session,如果没有则创建
HttpSession session = request.getSession();
//存储数据
session.setAttribute("username","wdadwa");
//读取数据
String username =(String) session.getAttribute("username");
return "1";
}
}