spring 相关

Spring注解--servlet使用

2019-01-14  本文已影响0人  aix91

1. 使用@WebServlet定义servlet

@WebServlet("/hello")
public class ServletExample extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = resp.getWriter();
        writer.println("hello");
    }
}

2. Shared libraries / Runtimes pluggability

  1. META-INF/services目录下定义一个名字是 javax.servlet.ServletContainerInitializer的文件
  2. ServletContainerInitializer文件里面,写上自定义ServletContainerInitializer类的全类名。
  3. 添加@HandlesTypes注解,引入@HandlesTypes指定类型下的所有子类型

3. 添加web组件(Servlet,Filter,Listener)

@HandlesTypes(IServlet.class)
public class MyServletContainerInitializer implements ServletContainerInitializer {
    public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
        System.out.println("classes interests");
        for (Class<?> claz : c) {
            System.out.println(claz);
        }
        ServletRegistration.Dynamic servlet = ctx.addServlet("myServlet", new MyServlet());
        servlet.addMapping("/myServlet2");
        FilterRegistration.Dynamic filter = ctx.addFilter("myFilter", MyFilter.class);
        filter.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
        ctx.addListener(MyListener.class);
    }

输出

classes interests
class main.com.test.tournesol.myservlet.ServletImp
class main.com.test.tournesol.myservlet.AbstractServlet
contextInitialized...
my filter
``
上一篇 下一篇

猜你喜欢

热点阅读