servlet3.0注解
在servlet3.0之后添加了注解,可以通过注解减少web.xml中的配置代码
@WebServlet
在Servlet3.0中,可以使用 @WebServlet 注解将一个继承于 javax.servlet.http.HttpServlet 的类标
注为可以处理用户请求的 Servlet,无需配置 web.xml。
用注解配置 Servlet
@WebServlet(name = "servlet01",value = "/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...");
}
}
也可以配置多个 urlPatterns 来指定多个访问路径
@WebServlet(name = "servlet01",urlPatterns = {"/s01","/s001"})
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(filterName = "filter01",urlPatterns = "/*")
public class Filter01 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System.out.println("Filter01...");
chain.doFilter(request, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
注:使用注解时,过滤器链按照类名的字母排序(大部分情况)
@WebListener
Servlet3.0 提供 @WebListener 注解将一个实现了特定监听器接口的类定义为监听器。比如将实现
了 ServletSessionListener 接口的类标注为监听器。
@WebListener
public class Listener02 implements HttpSessionListener {
//监听session的创建
public void sessionCreated(HttpSessionEvent se) {
}
//监听session的销毁
public void sessionDestroyed(HttpSessionEvent se) {
}
}
@MultipartConfifig
使用注解 @MultipartConfifig 将一个 Servlet 标识为支持文件上传。Servlet3.0 将 multipart/form
data 的 POST 请求封装成 Part,通过 Part 对上传的文件进行操作。
前台
<form action="upload" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="uname"/>
文件:<input type="file" name="myfile"/>
<input type="submit" value="上传" />
</form>
后台
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
System.out.println("上传文件...");
// 设置编码
request.setCharacterEncoding("UTF-8");
// 获取普通表单项参数
String uname = request.getParameter("uname");
System.out.println(uname);
// 上传文件
// 得到part对象 request.getpart(name):name代表的是表单中file元素的name属性值
Part part = request.getPart("myfile");
// 得到文件存放的路径
String path = request.getServletContext().getRealPath("/");
// 得到文件名String fileName = part.getSubmittedFileName();
// 上传
part.write(path + fileName);
}
}