目录
可以利用Annotation来实现Servlet的配置,即代替修改web.xml方式配置。
WebServlet注解
1、简化配置@WebServlet("/hello")
package cn.ren.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("<h1> Hello World! </h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
2、其它配置
package cn.ren.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletConfig;
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;
@SuppressWarnings("serial")
@WebServlet(name="HelloServlet",urlPatterns = {"/hello","/Hello"}, initParams= {
@WebInitParam(value="ren",name="paramB") ,
@WebInitParam(value="57", name="paramA")
},loadOnStartup = 1)
public class HelloServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
Enumeration<String> enu = config.getInitParameterNames() ;
while(enu.hasMoreElements()) {
String name = enu.nextElement() ;
System.out.println(config.getInitParameter(name));
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("<h1> Hello World! </h1>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
过滤器的配置
使用“@WebFilter()”注解配置过滤器。
范例:注解配置过滤器
package cn.ren.servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
@WebFilter("/*")
public class MyFilter implements Filter {
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
throws IOException, ServletException {
System.out.println("*******");
arg2.doFilter(arg0, arg1);
}
}
配置监听器
使用注解“@WebListener”配置监听器。
范例:Servlet监听器
package cn.ren.servlet;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("**容器初始化**" + sce.getServletContext());
}
}
监听器就是一个组件,需要的时候配置上用就行了
总结
有可能要在部署的时候由用户动态修改的Servlet,还是要求继续使用web.xml文件配置,而不需要用户修改的程序类,再使用Annotation配置。