zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    [LeetCode] Happy Number 快乐数
    imread() not working in OpenCV 2.4.11 Debug mode
    OpenCV 3.0 VS2010 Configuration
    [LeetCode] 22. Generate Parentheses 生成括号
    [LeetCode] 24. Swap Nodes in Pairs 成对交换节点
    [LeetCode] 25. Reverse Nodes in k-Group 每k个一组翻转链表
    [LeetCode] 29. Divide Two Integers 两数相除
    [LeetCode] Bitwise AND of Numbers Range 数字范围位相与
    [LeetCode] 31. Next Permutation 下一个排列
    [LeetCode] 32. Longest Valid Parentheses 最长有效括号
  • 原文地址:https://www.cnblogs.com/cherishforchen/p/10000929.html
Copyright © 2011-2022 走看看