springmvc 源码分析(一)
2021-05-06 22:28
标签:col 依赖 doget get nbsp 现在 listen write loading 一. servlet 3.0 的使用 1.1 环境搭建: servlet跟spring没有任何关系,我创建一个servlet可以不依赖spring,现在搭建一个纯的servlet项目,并实现简单的类似springMVC的功能: 引入依赖: 项目的结构: 1.2 web 三大组件的创建 servlet filter listener: 自己创建的servlet可以直接实现Servlet接口,也可以继承HttpServlet 自己创建的filter要实现Filter接口: 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中有使用到: 猜想: springmvc 源码分析(一) 标签:col 依赖 doget get nbsp 现在 listen write loading 原文地址:https://www.cnblogs.com/yangxiaohui227/p/13187719.html dependency>
groupId>javax.servlet.jspgroupId>
artifactId>jsp-apiartifactId>
version>2.0version>
scope>providedscope>
dependency>
dependency>
groupId>javax.servletgroupId>
artifactId>javax.servlet-apiartifactId>
version>4.0.0version>
scope>providedscope>
dependency>
dependency>
groupId>javaxgroupId>
artifactId>javaee-apiartifactId>
version>8.0.1version>
scope>providedscope>
dependency>
public class DispatcherServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("test");
}
}
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) {
}
}
1.3.自定义简单的springMVC功能:
上一篇:Spring系列.SpEL表达式
下一篇:Python异常处理