美文网首页spring 相关
Spring注解--servlet使用

Spring注解--servlet使用

作者: aix91 | 来源:发表于2019-01-14 14:10 被阅读0次

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

  • 在servlet容器启动时,会扫描当前应用jar包的ServletContainerInitializer的实现
  • 也可以自定义ServletContainerInitializer的实现, 从而实现在servlet启动时,添加自定义类的扫描。
  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
``

相关文章

网友评论

    本文标题:Spring注解--servlet使用

    本文链接:https://www.haomeiwen.com/subject/ispddqtx.html