Servlet3.0
在 Servlet3.0 之前一直使用的都是配置文件的方式来实现各种组件,Servlet3.0 之后提供了注解,可以达到零配置。但现实中一般是注解+配置结合使用。我们看几个常用的注解。
@WebServlet
开发 servlet 项目,使用@WebServlet 将一个继承于 javax.servlet.http.HttpServlet的类定义为 Servlet 组件。在 Servlet3.0 中 , 可以使用@WebServlet 注解将一个继承于javax.servlet.http.HttpServlet 的类标注为可以处理用户请求的 Servlet。
//@WebServlet("/Servlet01")
//@WebServlet(name="Servlet01",value="/s01")
//@WebServlet(name="Servlet01",value={"/s01","/s001"})
//@WebServlet(name="Servlet01",urlPatterns="/s01")
//@WebServlet(name="Servlet01",urlPatterns={"/s01","/s0001"})
@WebServlet("/s01")
public class Servlet01 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Servlet01...");
}
}
@WebFilter
用来配置过滤器。
- 使用注解时:过滤器链按照类名的字母排序(大部分情况)
@WebFilter("/*")
@WebListenser
Servlet3.0 提供@WebListener 注解将一个实现了特定监听器接口的类定义为监听器。将实现了 ServletContextListener 接口的 MyServletContextListener 标注为监听器。
@WebListener
@MultipartConfig
使用注解@MultipartConfig 将一个 Servlet 标识为支持文件上传。 Servlet3.0 将multipart/form-data 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作。
@MultipartConfig
@WebServlet("/uploadServlet")
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取参数
String uname = request.getParameter("uname");
/**
* 文件上传
*/
// 得到Part对象 request.getPart(name) name代表的是表单元素(文件域)的name属性值
Part part = request.getPart("myfile");
// 得到要存放的路径 part.getSubmittedFileName() 表示上传的文件名
String filePath = request.getServletContext().getRealPath("/") + part.getSubmittedFileName();
// 上传文件
part.write(filePath);
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<!--
文件上传表单
1、表单提交类型为POST
2、表单类型设置为enctype="multipart/form-data"
3、设置表单属性的name属性值
-->
<form action="uploadServlet" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname" /> <br>
文件:<input type="file" name="myfile" /><br>
<button>提交</button>
</form>
</body>
</html>