zoukankan      html  css  js  c++  java
  • SpringMVC 常用applicationContext.xml、web.xml、servlet-mvc.xml简单配置

    在进行学习配置文件之前,为了加深对框架的认识,简单的做了SSM框架的简单实验。然后画出listAll查询方法的整个过程的思维导图。 这里写图片描述 整个过程中的web.xml、SpringMVC.xml、applicationContext.xml配置文件起到关键作用,同时也是为了加深理解,在此做下记录,请看下面! github源码链接:https://github.com/Jian0110/ssm

    一、SpringMVC的web.xml配置

    关于SpringMVC 的web.xml详细介绍,我之前已经做过了介绍并记录,请看Spring MVC的web.xml配置详解

    1.思维导图:

    这里写图片描述

    2.详细描述:

    (1)servlet配置(即SpringMVC核心分发器Dispatcher):

    • dispatcher配置与servlet-mvc.xml配置 若没有<init-param>初始化servlet-mvc.xml,那么就会自动寻找servletname-servlet.xml并加载!
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- spring mvc的配置文件:springMVC.xml -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springMVC.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

     

    • dispatcherer 拦截路径配置:
    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

     

    (2)applicationContext.xml的自动装配:

    ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext.xml的配置信息。

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

     

    二、SpringMVC的servlet-mvc.xml配置

    servlet-mvc.xml配置文件主要是用来扫描@Controller注解并注入,还有视图解析转向等。

    1.思维导图

    这里写图片描述

    2.详细描述:

    (1)annotation-configcomponent-scan

    • servlte-mvc.xml扫描注入bean的时候只需要找到@Controller注解,同时注入bean,其他的bean的注入是依靠applicationContext.xml进行的。
    • 关于扫描包component-scan的详细介绍可以看SpringMVC扫描包使用
    <!-- 1. 扫描Controller,并将其生命周期纳入Spring管理(这里只扫描@Controller) -->
    
    <!--  <context:annotation-config/> -->
    <context:component-scan base-package="com.test.controller">
        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

     

    • annotation-config:对已被注册到Spring容器里的Bean进行操作(比如注入到某个类的内部),主要的作用是为了能够识别相应的注解(@Autowired、@Required、@Resource、@ PostConstruct、@ PreDestroy等)。  
    • component-scan:不仅具有annotation-config的功能,还可以扫描指定包下的类,将拥有注解的它们注册到Spring容器中中。

    (2)annotation-driven注解驱动:

    SpringMVC就知道了我们启用注解驱动。然后通过context:component-scan标签的配置,会自动为我们将扫描到的@Component,@Controller,@Service,@Repository等注解标记的组件注册到工厂中,来处理我们的请求。

    <!-- 注解驱动,以使得访问路径与方法的匹配可以通过注解配置 -->
    <mvc:annotation-driven />

     

    (3)default-servlet-handler静态资源:

    由于在web.xml中的的</servlet-mapping>拦截了所有的url请求,那么如果请求中使用到静态资源的话,则无法加载像js,css,jgp这样格式的资源。<mvc:default-servlet-handler />就是解决这个问题的,具体请看这位博主写的,解释很清晰mvc:default-servlet-handler标签的的作用

     <!-- 3. 静态页面,如html,css,js,images可以访问 -->
     <mvc:default-servlet-handler />

     

    (4)InternalResourceViewResolver视图解析器:

    Controller层视图跳转mav.setViewName("listAll");中,只需要输入listAll.jsp文件前缀listAll即可跳转。

    <!-- 4. 视图定位到/WEB/INF/jsp 这个目录下 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="viewClass"
             value="org.springframework.web.servlet.view.JstlView" />
         <property name="prefix" value="/WEB-INF/jsp/" />
         <property name="suffix" value=".jsp" />    
     </bean>

     

    三、SpringMVC的applicationContext.xml配置

    1.思维导图:

    这里写图片描述

    2.详细描述:

    (1)component-scan自动扫描

    这里的component-scan不同servlet-mvc.xml中的component-scan,它不光只扫描@Controller,扫描包com.test的所有都会被注入。

    <context:component-scan base-package="com.test" />

     

    (2)dataSource数据库配置

    在此之前,通常还需要引入db.properties数据库配置文件,才能使用EL表达式。

    <bean class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="locations">
            <value>classpath*:bd.properties</value>
        </property>
    </bean>

     

    数据库简单配置如下:

    
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <!-- 数据库连接基本信息 -->
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}?useUnicode=true&amp;characterEncoding=utf8&amp;" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
    
        <!-- 数据连接池基本信息 -->      
        <property name="maxActive" value="${maxActive}" />
        <property name="maxIdle" value="${maxIdle}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="timeBetweenEvictionRunsMillis" value="3600000"/>
        <property name="minEvictableIdleTimeMillis" value="3600000"/>
    </bean>
    

    (3)扫描mybatis.xml文件:

    <!-- 3. 扫描存放SQL语句的Category.xml -->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="typeAliasesPackage" value="com.test.pojo" />
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:com/test/mapper/*.xml"/>
    </bean>

     

    (4)配置Mapper接口   :

    Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring。  详情请看文章MapperScannerConfigurer自动扫描 将Mapper接口生成代理注入到Spring

    <!-- 4. 扫描Mapper,并将其生命周期纳入Spring的管理 (配置Mapper接口)-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.test.mapper"/>
    </bean>

     

    MapperScannerConfigurer将会创建MapperFactoryBean,之后自动装配。MapperFactoryBean创建的代理类实现了 XXXMapper接口,并且注入到应用程序中。这个bean就可以直接在应用程序中使用,比如:

     public class UserServiceImpl implements UserService {
    
      //直接使用userMapper
      private UserMapper userMapper;
    
      public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
      }
    
      public User getUser(String userId) {
        return this.userMapper.getUser(userId);
      }
    }

    (5)TransactionManager事务管理:

    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
          <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:annotation-driven transaction-manager="txManager"/>

     

    这样就可以在在Service实现类中增加@Transactional注解即可控制事务。

  • 相关阅读:
    [JSOI2008]巨额奖金(最小生成树计数)
    [HAOI2008] 糖果传递
    [SCOI2009]生日快乐
    BZOJ2821 作诗
    [HAOI2008]圆上的整点
    POJ1741
    AC自动机
    [JSOI2008]星球大战starwar
    二分图有关证明(感性版)
    初识Pentaho(一)
  • 原文地址:https://www.cnblogs.com/yelanggu/p/10142209.html
Copyright © 2011-2022 走看看