SSM框架的配置
说道具体的配置:强烈推荐此文章
https://blog.csdn.net/qq_35571554/article/details/82453684
主要是这三个配置文件
web.xml(用来加载和初始化application.xml 和springMVC等配置文件)关于web.xml的作用:
web.xml放在WEB-INF 目录下面
首先简单讲一下,web.xml的加载过程。当启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。
https://blog.csdn.net/qq_35571554/article/details/82385838
https://blog.csdn.net/ahou2468/article/details/79015251(web.xml的配置详解)
https://www.cnblogs.com/yqskj/articles/2233061.html(web.xml的作用)
web.xml文件是用来初始化配置信息:比如Welcome页面、servlet、servlet-mapping、filter、listener、启动加载级别,指定错误处理页面等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件
(但不是每一个web工程一定要有页面这些的,比如dubbo的项目。有多个web项目,但只有一个负责页面,其他的可以分为service层等)
那什么是web项目呢:web项目通俗的说就是在服务器上跑的项目,页面是通过服务器上的程序运算所得到的结果
applicationcontet.xml(就是Spring的配置文件,一般包括声明式失误等等AOP)
Sprimgmvc,xml(一般面向Controller的)
可能还需要一些其他配置文件,有待后续的学习,比如。mybatis的映射文件啊
web.xml配置的spring分发器
<!-- spring-mvc分发器 -->功能就是我访问项目必须加上unifiapi这个路径 <servlet> <servlet-name>unifyapi</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/webContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>unifyapi</servlet-name> <url-pattern>/unifyapi/*</url-pattern> </servlet-mapping> <error-page> <error-code>400</error-code> <location>/WEB-INF/views/error/500.html</location> </error-page> <error-page> <error-code>404</error-code> <location>/WEB-INF/views/error/404.html</location> </error-page>
上面配置详解:
四、DispatcherServlet说明
使用Spring MVC,配置DispatcherServlet是第一步。
DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet。
DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。
“某某规则”:是根据你使用了哪个HandlerMapping接口的实现类的不同而不同。
先来看第一个例子:
<web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>*.form</url-pattern> </servlet-mapping> </web-app>
<load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动。
<url-pattern>*.form</url-pattern> 会拦截*.form结尾的请求。
<servlet-name>example</servlet-name>这个Servlet的名字是example,可以有多个DispatcherServlet,是通过名字来区分的。每一个DispatcherServlet有自己的WebApplicationContext上下文对象。同时保存的ServletContext中和Request对象中,关于key,以后说明。
在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。(这是第一种配置,常用下面的第二种)
第二个例子:
<servlet> <servlet-name>unifyapi</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/webContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>unifyapi</servlet-name> <url-pattern>/unifyapi/*</url-pattern> </servlet-mapping>
如果没有配置,则默认为[servlet-name]-servlet.xml 的配置文件,如果配置了,则如上面
<init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/webContext.xml</param-value> </init-param> 可以指定xml具体的文件
过滤器和拦截器的配置:
(1)、Filter需要在web.xml中配置,依赖于Servlet;
(2)、Interceptor需要在SpringMVC中配置,依赖于框架;
<!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>XSSFilter</filter-name> <filter-class>com.ai.checkstand.filter.XSSFilter</filter-class> </filter> <filter-mapping> <filter-name>XSSFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 跨域的配置--> <filter> <filter-name>corsFilter</filter-name> <filter-class>com.ai.checkstand.filter.CORSFilter</filter-class> </filter> <filter-mapping> <filter-name>corsFilter</filter-name> <url-pattern>/unifyapi/*</url-pattern> </filter-mapping>
web.xml配置:https://www.cnblogs.com/yanze/p/10457058.html(web.xml配置上下文,即spring的配置文件)
https://www.cnblogs.com/yanze/p/10375002.html(web.xml配置监听器)
https://www.cnblogs.com/yanze/p/10383991.html(web.xml配置过滤器)
application,xml的配置:
application.xml是应用于全局的应用于多个servlet,和listener配合使用, https://blog.csdn.net/qq_35571554/article/details/82453684
<!-- 配置监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param>
1.扫描service层和dao层注解(spring中扫描service(在application.xml配置),然后再在SpringMVC中扫描controller中扫描controller(在springmvc.xml中配置)。 因为如果Controller在主容器中进行扫描的话会扫描到原样的service,那时service还没有进行事务处理可能会引起事务失效)
<context:component-scan base-package="com.ai.checkstand" />
注意,这部分主要是扫描项目中除了controller以外的其他层的注解。配置这部分的目的是在于扫描service包和dao包里面的类,只要有@Service或者@Repository就注册成spring容器中的Bean,下次可以通过@Autowired直接注入。
2.配置数据库相关内容(这部分内容可以单独用一个spring-mybatis.xml进行配置,本项目没有单独进行配置,而是和applicaitonContext.xml文件一起配置的);
需要配置MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring,这部分实现mapper.xml文件映射成mapper接口类的实现类,自动注入到spring中,这样我们就不用写mapper接口的实现类了
3.配置事务管理器(声明式事务:用面向切片编程AOP的思想,来管理事务;编程式:TransactionTemplate)
sping-mvc.xml的配置
web项目启动时,读取web.xml配置文件,首先解析的是applicationContext.xml文件,其次才是sping-mvc.xml文件,sping-mvc.xml文件中主要的工作是:启动注解、扫描controller包注解;静态资源映射;视图解析(defaultViewResolver);文件上传(multipartResolver);返回消息json配置。
1.自动扫描 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.javen.controller" /> 2.注解驱动 <!-- 扩充了注解驱动,可以将请求参数绑定到控制参数--> <mvc:annotation-driven /> 3.静态资源处理 <!-- 静态资源处理 css js images --> <mvc:resources location="/resources/**" mapping="/resource/"/> 4.避免IE执行AJAX时,返回JSON出现下载文件 <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> 5.启动SpringMVC的注解功能,完成请求和注解POJO的映射 <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/><!-- JSON转换器 --> </list> </property> </bean> 6.配置文件上传 <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默认编码 --> <property name="defaultEncoding" value="utf-8" /> <!-- 上传文件最大值 --> <property name="maxUploadSize" value="10485760000"/> <!-- 内存中的最大值 --> <property name="maxInMemorySize" value="40960"/> <!-- 启用是为了推迟文件解析,以便捕获文件大小异常 --> <property name="resolveLazily" value="true"/> </bean> 7.配置viewResolver视图解析 <!-- 配置viewResolver。可以用多个viewResolver。使用order属性排序。InternalResourceViewResolver 放在最后 --> <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="order" value="1"></property> <property name="mediaTypes"> <map> <!-- 告诉视图解析器,返回的类型为json格式 --> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> <entry key="htm" value="text/htm" /> </map> </property> <property name="defaultViews"> <list> <!-- ModelAndView里的数据变成JSON --> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" /> </list> </property> <property name="ignoreAcceptHeader" value="true"></property> </bean> 8.定义跳转的文件的前后缀 ,视图模式配置 <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
posted on 2018-11-22 14:36 Cherishforchen 阅读(464) 评论(0) 编辑 收藏 举报