发表于: 2019-12-26 21:52:20
1 1094
不看案例重写理解SSM springmvc
一,web.xml
启动一个WEB项目容器(Tomcat,JBoss),首先会去读取web.xml配置文件里的配置,没错才会正常启动
先读取 两个节点:<listener> </listener>和<context-param> </context-param>
紧接着,容器创建一个ServletContext(application)web项目的所有部分都将共享这个上下文。容器以<context-param></context-param>的name作为键,value作为值,将其转化为键值对,存入ServletContext
容器创建<listener></listener>中的类实例,根据配置的class类路径<listener-class>来创建监听,在监听中会有初始化方法,启动Web应用时,系统调用Listener的该方法 contextInitialized(ServletContextEvent args)
接着,容器会读取<filter></filter>,根据指定的类路径来实例化过滤器。
以上都是在WEB项目还没有完全启动起来的时候就已经完成了的工作。如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的那几个要迟。总的来说,web.xml的加载顺序是: <context-param>-> <listener> -> <filter> -> <servlet>。
配置Spring,必须需要<listener>,而<context-param>可有可无,如果在web.xml中不写<context-param>配置信息,默认的路径是/WEB-INF/applicationContext.xml
配置在同一个容器中的多个web项目,要配置不同的webAppRootKey,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,为防止log4j配置冲突,每个项目配置不同的webAppRootKey,不能重复。
Filter:也称为过滤器
对用户请求(HttpServletRequest)进行预处理
对服务器响应(HttpServletResponse)进行后处理
与Servlet的区别在于:它不能直接向用户生成响应
Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理
二,Servlet
创建Servlet实例有两个时机:
客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分Servlet都是这种Servlet;
web应用启动时立即创建Servlet实例,即<load-on-start>1</laod-on-start>
1创建servlet实例
2web容器用init()方法对其初始化
3 一直存在于容器中响应用户的请求,容器决定销毁时调用servlet的destory()销毁
controller:
404没跑通
明日计划:解决404问题 这个周希望能提交任务2
问题:sql语句不熟练
评论