212 日 , 2025 14:23:13
web三大组件-随记
javaWeb 三大组件是指 Servlet、Filter、Listener ,以下为你介绍:

Servlet

  • 定义:是 Java EE 中用于处理客户端请求并生成响应的组件,运行在 Web 服务器上。它通过实现javax.servlet.Servlet接口或继承HttpServlet类来创建。
  • 作用:主要负责处理 HTTP 请求,接收客户端发送的数据,进行业务逻辑处理,并将处理结果返回给客户端。例如,开发一个用户登录功能,可编写一个 Servlet 来接收用户提交的用户名和密码,与数据库进行比对验证,并返回登录结果。
  • 生命周期:包括初始化(调用init方法)、处理请求(调用servicedoGetdoPost等方法)和销毁(调用destroy方法)三个阶段 。

Filter

  • 定义:过滤器是 JavaWeb 的组件,实现javax.servlet.Filter接口,能够对 Web 资源的请求和响应进行拦截和处理。
  • 作用:常用于完成通用操作,如登录校验(判断用户是否登录,未登录则阻止访问受保护资源)、统一编码处理(设置请求和响应的字符编码,避免乱码问题)、敏感字符过滤(对用户输入数据中的敏感词汇进行替换或拦截)等。
  • 执行流程:客户端请求到达服务器时,先经过过滤器的doFilter方法处理,过滤器可决定是放行请求让其继续访问目标资源,还是返回特定响应阻止访问。

Listener

  • 定义:监听器是 JavaWeb 中能够监听 Web 应用程序中某些事件(如 ServletContext、HttpSession、ServletRequest 的创建、销毁、属性变化等)的组件,通过实现相应的监听器接口来创建。
  • 作用:用于在特定事件发生时执行相应逻辑。比如,HttpSessionListener可监听会话的创建和销毁,在会话创建时进行资源初始化,在会话销毁时进行资源清理;ServletRequestAttributeListener可监听请求属性的添加、删除和替换等操作,进行日志记录或其他相关处理。
212 日 , 2025 12:00:06
@RequestBody随记
请求参数的数据格式为raw..需要使用@RequestBody对参数进行反序列化
@PostMapping(“/login”) public Result login(@RequestBody Emp emp) { // … }
@PostMapping("/login")表示该方法处理的是/login路径的 POST 请求。@RequestBody Emp emp表示将客户端发送的 HTTP 请求体中的数据,按照Emp类的结构进行反序列化,然后赋值给emp参数。
请求参数的数据格式为x – www – form – urlencoded不需要
x – www – form – urlencoded:也是用于表单数据提交,将表单数据编码为key=value的格式,各个键值对之间用&连接,只适用于文本数据提交。
比如在浏览器地址栏中以http://example.com/user/register?username=abc&password=123这种形式发起请求,usernamepassword作为查询参数被服务器接收;或者以表单提交形式(Content - Typeapplication/x - www - form - urlencoded ),服务器也可按这种方式获取参数,不需要从请求体中反序列化数据,所以不需要@RequestBody

@RequestBody适用场景

@RequestBody主要用于将请求体中的 JSON、XML 等格式的数据反序列化为 Java 对象或基本数据类型。例如当客户端以 JSON 格式发送请求体{"username":"abc","password":"123"} ,且服务器端需要将其映射为一个包含usernamepassword属性的 Java 对象时,就需要@RequestBody注解来实现从请求体到对象的转换。
204 日 , 2025 7:10:21