Servlet在SpringBoot程序中常用的类

6 阅读3分钟

一,Servlet概述

处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。 image


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";
    }
}