Servlet3.0注解知一二
1.Servlet3.0的优势:
- 新增的注解支持:该版本新增了若干注解,用于简化 Servlet、过滤器(Filter)和监听器(Listener)的声明,这使得 web.xml 部署描述文件从该版本开始不再是必选的,可以达到零配置,但现实中一般是注解+配置结合使用。
- 异步处理支持:大大减少了服务器资源的占用,并且提高了并发处理速度。
- 可插性支持:熟悉 Struts2 的开发者一定会对其通过插件的方式与包括 Spring 在内的各种常用框架的整合特性记忆犹新。将相应的插件封装成 JAR 包并放在类路径下,Struts2 运行时便能自动加载这些插件。现在 Servlet 3.0 提供了类似的特性,开发者可以通过插件的方式很方便的扩充已有 Web 应用的功能,而不需要修改原有的应用。
2.常用注解:
(1) @WebServlet: 在Servlet3.0中,可以使用 @WebServlet 注解将一个继承于 javax.servlet.http.HttpServlet 的类标注为可以处理用户请求的 Servlet,无需配置 web.xml。
@WebServlet(name = "servlet01",value = "/s01")也可以配置多个 urlPatterns 来指定多个访问路径
@WebServlet(name = "servlet01",urlPatterns = {"/s01","/s001"})
**(2) @WebFilter:**用来配置过滤器(使用注解时:过滤器链按照类名的字母排序(大部分情况))
@WebFilter(filterName = "filter01",urlPatterns = "/*")
(3)@WebListener: Servlet3.0 提供 @WebListener 注解将一个实现了特定监听器接口的类定义为监听器;
@WebListener
(4)@MultipartConfig: 使用注解 @MultipartConfig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将 multipart/formdata 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作。
3)通过注解实现文件上传:
(1)前台:
注意事项:
1.请求方式post
2.enctype=“multipart/form-data”
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<form action="/Test0909/upload" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="uname" /><br/>
头像:<input type="file" name="imageFile" /><br/>
<input type="submit" value="保存" />
</form>
</body>
</html>
(2)后台:
1.实现步骤:
1、得到Part文件对象,request.getPart(String name); name对应前台文件输入框的name属性的值
2、得到文件上传真实路径 path
3、输出文件 part.write(path)
2.注意事项:
1.一定要加上注解 @MultipartConfig
package com.mage.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class Upload extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname");
System.out.println("用户名:" + uname);
// 1、得到 文件 part 对象
Part part = request.getPart("imageFile");
// 得到上传文件名称
String submittedFileName = part.getSubmittedFileName();
System.out.println(submittedFileName);
// 2、得到文件上传路径
String realPath = request.getServletContext().getRealPath("/upload/" + submittedFileName);
// 3、输出文件
part.write(realPath);
}
}
(3)运行结果:

本文深入解析Servlet3.0版本中引入的注解功能,包括@WebServlet、@WebFilter、@WebListener和@MultipartConfig等注解的使用方法及应用场景,探讨如何通过注解实现零配置和文件上传。
2171

被折叠的 条评论
为什么被折叠?



