1.@WebListener注解
表示的就是我们之前的在xml中配置的
<listener> <listener-class>ListenerClass</listener-class> </listener>
下面我们只需要在我们写好的Listener类上面加上这个@WebListener注解就OK啦
使用Listener的类必须使用下列的几个接口
ServletContextListener
ServletContextAttributeListener
ServletRequestListener
ServletRequestAttributeListener
HttpSessionListener
HttpSessionAttributeListener
例子:
package com.hotusm.web.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class MyHttpSessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("创建session ");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁session ");
}
}
这样,在我们启动的时候 就会自动的帮助我们创建一个Listener了,这个注解有一个属性,是这个listener的描述信息
2.@WebFilter 这个注解就是表示的拦截器 同样的也是直接注解在写好的Filter上面就ok了。
package com.hotusm.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter(filterName = "filter1", urlPatterns="/*",
dispatcherTypes = {DispatcherType.REQUEST, DispatcherType.FORWARD},
initParams={@WebInitParam(name="account",value="1234"),@WebInitParam(name="hotusm",value="1234")}
)
public class MyFilter implements Filter {
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
String account = filterConfig.getInitParameter("account");
String hotusm = filterConfig.getInitParameter("hotusm");
System.out.println("account:"+account+" hotusm:"+hotusm);
}
@Override
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
注解的主要参数及其含义
3.@WebServlet 这个注解表示的就是一般的Servlet
package com.hotusm.web.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet(name = "servlet1", urlPatterns = {"/url1", "/url2","url3/*"}, loadOnStartup = 1,
initParams = {
@WebInitParam(name = "name", value="hotusm")
})
public class MyServlet extends HttpServlet {
private String name;
public MyServlet() {
System.out.println("load on startup");
}
@Override
public void init() throws ServletException {
super.init();
name= this.getInitParameter("name");
}
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
System.out.println(session);
System.out.println("name:"+name);
}
}
注解主要参数
参数和Filter差不多
4.其中在上面的注解Filter和Servlet用到的@WebInitParam 注解 表示的就是参数啦 相当于<init-param>
参数以及含义
5.@MultipartConfig 该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下:
通过上面的定义我们可以知道@MultipartConfig主要用来指明servlet的请求当中包含文件,文件我们通过以下的方式获取: Part part = req.getPart("filename");
下面是一个简单的示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>upload your logo</title> </head> <body> <form action="/multipart" method="post" enctype="multipart/form-data"> Please choose your logo: <input type="file" name="logo"><br> <input type="submit" value="submit"> </form> </body> </html>
2 Servlet代码片段
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; import java.io.IOException; import java.io.PrintWriter; @WebServlet(urlPatterns = {"/multipart"}) @MultipartConfig(location = "G:\maven-practice\sample-web\files\", maxFileSize = 2, maxRequestSize = 200) public class MultipartServletDemo extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Part part = req.getPart("logo"); PrintWriter out = resp.getWriter(); out.println("file name: " + part.getName()); out.println("file size: " + part.getSize()); out.println("file content type: " + part.getContentType()); out.println("upload successfully"); out.flush(); out.close(); } }
注解主要参数
参数和Filter差不多
4.其中在上面的注解Filter和Servlet用到的@WebInitParam 注解 表示的就是参数啦 相当于<init-param>
参数以及含义
5.@MultipartConfig 该注解主要是为了辅助 Servlet 3.0 中 HttpServletRequest 提供的对上传文件的支持。该注解标注在 Servlet 上面,以表示该 Servlet 希望处理的请求的 MIME 类型是 multipart/form-data。另外,它还提供了若干属性用于简化对上传文件的处理。具体如下: