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  阅读(450)  评论(0编辑  收藏  举报

导航