标签:col 依赖 doget get nbsp 现在 listen write loading
一. servlet 3.0 的使用
1.1 环境搭建:
servlet跟spring没有任何关系,我创建一个servlet可以不依赖spring,现在搭建一个纯的servlet项目,并实现简单的类似springMVC的功能:
引入依赖:
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0.1</version> <scope>provided</scope> </dependency>
项目的结构:
1.2 web 三大组件的创建 servlet filter listener:
自己创建的servlet可以直接实现Servlet接口,也可以继承HttpServlet
public class DispatcherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("test"); } }
自己创建的filter要实现Filter接口:
public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest=(HttpServletRequest) request; String userName = httpServletRequest.getParameter("userName"); if(!"xiaoMing".equals(userName)){ response.getWriter().write("用户名不正确"); return; } chain.doFilter(request,response); } }
自己创建的监听器需要实现下面接口:
public class MyServletContextListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent sce) { ServletContext sc = sce.getServletContext(); //todo 可以用sc注册各种组件 } @Override public void contextDestroyed(ServletContextEvent sce) { } }
web组建注册到tomcat容器的三种方式:
方式1: 在web.xml中配置:
方式2: servlet3.0的方式,使用注解实现
方式3: 通过servletContex来注册:这里要用到servlet的3.0的一个SPI规范: tomcat容器在启动时,会找到类路径下: META-INF/services/javax.servlet.ServletContainerInitializer 这个文件,文件名是固定的,为ServletContainerInitializer类的全限定类名,
文件里面的内容,为实现ServletContainerInitializer该接口的类的全限定类名,tomcat会调用该类的onStartup方法:
那么我们可以定义一个类来实现它:
然后在类路径下:
上面的方式一和方式三在springMVC中有使用到:
1.3.自定义简单的springMVC功能:
猜想:
标签:col 依赖 doget get nbsp 现在 listen write loading
原文地址:https://www.cnblogs.com/yangxiaohui227/p/13187719.html