全栈开发实战|SSM框架整合开发

 今天开启一个新的专栏:全栈开发

01、相关JAR包

实现SSM框架整合开发,需要导入相关JAR包,包括MyBatis、Spring、Spring MVC、MySQL连接器、MyBatis与Spring桥接器、Log4j以及DBCP等JAR包。

1MyBatis框架所需的JAR包

MyBatis框架所需的JAR包,包括它的核心包和依赖包。

2Spring框架所需的JAR包

Spring框架所需的JAR包,包括它的核心模块JAR、AOP开发使用的JAR、JDBC和事务的JAR包以及Spring MVC所需要的JAR包,具体如下:

commons-logging-1.2.jar
spring-aop-5.3.2.jar
spring-beans-5.3.2.jar
spring-context-5.3.2.jar
spring-core-5.3.2.jar
spring-expression-5.3.2.jar
spring-jdbc-5.3.2.jar
spring-tx-5.3.2.jar
spring-web-5.3.2.jar
spring-webmvc-5.3.2.jar

3MyBatis与Spring整合的中间JAR包

该中间JAR包的最新版本为mybatis-spring-2.0.6.jar。此版本可从地址“http://mvnrepository.com/artifact/org.mybatis/mybatis-spring”下载。

4数据库驱动JAR包

我们所使用的MySQL数据库驱动包为mysql-connector-java-5.1.45-bin.jar。

5数据源所需的JAR包

整合时使用的是DBCP数据源,需要准备DBCP和连接池的JAR包。最新版本的DBCP的JAR包为commons-dbcp2-2.8.0.jar,可从地址“http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi”下载;最新版本的连接池的JAR包为commons-pool2-2.9.0.jar,可从地址“http://commons.apache.org/proper/commons-pool/download_pool.cgi”下载。

02、MapperScannerConfigurer方式

一般情况下,将数据源及MyBatis工厂配置在Spring的配置文件中,实现MyBatis与Spring的无缝整合。在Spring的配置文件中,首先,使用org.apache.commons.dbcp2.BasicDataSource配置数据源。其次,使用org.springframework.jdbc.datasource.DataSourceTransactionManager为数据源添加事务管理器。最后,使用org.mybatis.spring.SqlSessionFactoryBean配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合。

使用Spring管理MyBatis的数据操作接口的方式有多种。其中,最常用最简捷的一种是基于org.mybatis.spring.mapper.MapperScannerConfigurer的整合,实现Mapper代理开发。MapperScannerConfigurer将包()中所有接口自动装配为MyBatis映射接口Mapper的实现类的实例(映射器),所有映射器都被自动注入SqlSessionFactory实例,同时扫描包中SQL映射文件,MyBatis核心配置文件不再加载SQL映射文件(但要保证接口与SQL映射文件名相同)。配置文件的示例代码如下:

<!-- 配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
  <property name="driverClassName" value="${jdbc.driver}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <!-- 最大连接数 -->
  <property name="maxTotal" value="${jdbc.maxTotal}" />
  <!-- 最大空闲连接数 -->
  <property name="maxIdle" value="${jdbc.maxIdle}" />
  <!-- 初始化连接数 -->
  <property name="initialSize" value="${jdbc.initialSize}" />
</bean>
<!-- 添加事务支持 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
</bean>
<!-- 开启事务注解 -->
<tx:annotation-driven transaction-manager="txManager" />
<!-- 配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <!-- configLocation的属性值为MyBatis的核心配置文件 -->
  <property name="configLocation" value="classpath:config/mybatis-config.xml" />
</bean>
<!--Mapper代理开发,MapperScannerConfigurer将包中所有接口自动装配为MyBatis映射接口Mapper的实现类的实例(映射器),所有映射器都被自动注入SqlSessionFactory实例,同时扫描包中SQL映射文件,MyBatis核心配置文件不再加载SQL映射文件 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <!-- mybatis-spring组件的扫描器,basePackage:属性可以包含多个包名,多个包名之间可以用逗号或分号隔开 -->
  <property name="basePackage" value="dao" />
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>

03、整合示例

下面通过SSM框架整合,实现【例3-2】的功能。

【例3-2】SSM框架整合开发。

具体实现步骤如下。

1创建Web应用并导入相关JAR包

使用Eclipse创建一个名为ch3_2的Web应用,将相关JAR包复制到WEB-INF/lib目录中。

2创建数据库连接信息属性文件及Log4j的日志配置文件

在应用ch3_2的src目录下,创建名为config的包,并在该包中创建数据库连接信息属性文件jdbc.properties文件,具体内容如下:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/springtest?characterEncoding=utf8
jdbc.username=root
jdbc.password=root
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5

在应用ch3_2的src目录下,创建Log4j的日志配置文件log4j.properties文件.

3创建持久化类

在应用ch3_2的src目录下,创建一个名为com.mybatis.po的包,并在该包中创建持久化类MyUser。

4创建SQL映射文件

在应用ch3_2的src目录下,创建一个名为com.mybatis.mapper的包,并在该包中创建SQL映射文件UserMapper.xml。

5创建MyBatis的核心配置文件

在应用ch3_2的config包中,创建MyBatis的核心配置文件mybatis-config.xml。在该文件中,配置实体类别名、日志输出等,具体内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <setting name="logImpl" value="LOG4J" />
  </settings>
  <typeAliases>
    <package name="com.mybatis.po" />
  </typeAliases>
</configuration>

6创建Mapper接口

在应用ch3_2的com.mybatis.mapper包中,创建接口UserMapper。使用@Repository注解标注该接口是数据访问层。该接口中的方法与SQL映射文件UserMapper.xml的id一致。UserMapper接口的核心代码如下:

@Repository
public interface UserMapper {
  public MyUser selectUserById(Integer id);
  public List<MyUser> selectAllUser();
  public int addUser(MyUser myUser);
  public int updateUser(MyUser myUser);
  public int deleteUser(Integer id);
}

7创建控制类

在应用ch3_2的src目录下,创建一个名为controller的包,并在该包中创建控制器类TestController。在该控制器类中,调用Mapper接口中的方法操作数据库,核心代码如下:

@Controller
public class TestController {
    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/test")
public String test() {
    //查询一个用户
    MyUser mu = userMapper.selectUserById(1);
    System.out.println(mu);
    //添加一个用户
    MyUser addmu = new MyUser();
    addmu.setUname("陈恒");
    addmu.setUsex("男");
    userMapper.addUser(addmu);
    //修改一个用户
    MyUser updatemu = new MyUser();
    updatemu.setUid(1);
    updatemu.setUname("张三");
    updatemu.setUsex("女");
    userMapper.updateUser(updatemu);
    //删除一个用户
    userMapper.deleteUser(3);
    //查询所有用户
    List<MyUser> listMu = userMapper.selectAllUser();
    for (MyUser myUser : listMu) {
      System.out.println(myUser);
    }
    return "test";
  }
}

 8创建测试页面

在/WEB-INF/目录下,创建一个名为jsp的文件夹,并在该文件夹中创建test.jsp文件

9创建Web、Spring、Spring MVC的配置文件

在应用ch3_2的config包中创建Spring配置文件applicationContext.xml和Spring MVC配置文件springmvc.xml,在应用ch3_2的/WEB-INF/目录中创建Web配置文件web.xml。

在Spring配置文件applicationContext.xml中,首先,使用加载数据库连接信息属性文件;其次,使用org.apache.commons.dbcp2.BasicDataSource配置数据源,并使用org.springframework.jdbc.datasource.DataSourceTransactionManager为数据源添加事务管理器;再次,使用org.mybatis.spring.SqlSessionFactoryBean配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合;最后,使用org.mybatis.spring.mapper.MapperScannerConfigurer实现Mapper代理开发,将basePackage属性指定包中所有接口自动装配为MyBatis映射接口Mapper的实现类的实例(映射器),所有映射器都被自动注入SqlSessionFactory实例,同时扫描包中SQL映射文件,MyBatis核心配置文件不再加载SQL映射文件。Spring配置文件applicationContext.xml的具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 加载数据库配置文件 -->
  <context:property-placeholder location="classpath:config/db.properties" />
  <!-- 配置数据源 -->
  <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- 最大连接数 -->
    <property name="maxTotal" value="${jdbc.maxTotal}" />
    <!-- 最大空闲连接数 -->
    <property name="maxIdle" value="${jdbc.maxIdle}" />
    <!-- 初始化连接数 -->
    <property name="initialSize" value="${jdbc.initialSize}" />
  </bean>
  <!-- 添加事务支持 -->
  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
  <!-- 开启事务注解 -->
  <tx:annotation-driven transaction-manager="txManager" />
  <!-- 配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation" value="classpath:config/mybatis-config.xml" />
  </bean>
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.mybatis.mapper" />
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
  </bean>
</beans>

 在Spring MVC配置文件springmvc.xml中,使用扫描控制器包,并使用org.springframework.web.servlet.view.InternalResourceViewResolver配置视图解析器。具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"> 
   <context:component-scan base-package="controller"/> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            id="internalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/jsp/" />
       <property name="suffix" value=".jsp" />
    </bean>
</beans>

 在Web配置文件web.xml中,首先通过加载Spring配置文件applicationContext.xml,并通过org.springframework.web.context.ContextLoaderListener启动Spring容器;其次配置Spring MVC DispatcherServlet,并加载Spring MVC配置文件springmvc.xml。Web配置文件web.xml的代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  id="WebApp_ID" version="4.0">
  <!-- 实例化ApplicationContext容器 -->
  <context-param>
    <!-- 加载applicationContext.xml文件 -->
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:config/applicationContext.xml
      </param-value>
  </context-param>
  <!-- 指定以ContextLoaderListener方式启动Spring容器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--配置Spring MVC DispatcherServlet -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <!-- classpath是指到src目录查找配置文件 -->
      <param-value>classpath:config/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

10测试应用

发布应用ch3_2到Web服务器Tomcat后,通过地址http://localhost:8080/ch3_2/test测试应用。成功运行后,控制台信息输出结果,如图3.4所示。

 ■ 图3.4  应用ch3_2的控制台信息输出结果

04、SqlSessionDaoSupport方式

在MyBatis中,当我们编写好访问数据库的映射器接口后,MapperScannerConfigurer就能自动根据这些接口生成DAO对象,然后使用@Autowired把这些DAO对象注入到业务逻辑层或控制层。因此,在这种情况下的DAO层中,几乎不用编写代码,而且也没有地方编写,因为只有接口。这固然方便,不过当我们需要在DAO层写代码时,这种方式就无能为力。幸运的是,MyBatis-Spring提供了继承SqlSessionDaoSupport类的方式访问数据库。

类org.mybatis.spring.support.SqlSessionDaoSupport继承了org.springframework.dao.support.DaoSupport类,是一个抽象类,是作为DAO的基类使用,需要一个SqlSessionFactory。我们在继承SqlSessionDaoSupport类的子类中通过调用SqlSessionDaoSupport类的getSqlSession()方法来获取这个SqlSessionFactory提供的SqlSessionTemplate对象。而SqlSessionTemplate类实现了SqlSession接口,即可以进行数据库访问。所以,我们需要Spring框架给SqlSessionDaoSupport类的子类的对象(多个DAO对象)注入一个SqlSessionFactory。

但自mybatis-spring-1.2.0以来,SqlSessionDaoSupport的setSqlSessionTemplate和setSqlSessionFactory两个方法上的@Autowired注解被删除,这就意味着继承于SqlSessionDaoSupport的DAO类,它们的对象不能被自动注入SqlSessionFactory或SqlSessionTemplate对象。如果在Spring的配置文件中一个一个地配置的话,显然太麻烦。比较好的解决办法是在我们的DAO类中覆盖这两个方法之一,并加上@Autowired或@Resource注解。那么如果在每个DAO类中都这么做的话,显然很低效。更合理的做法是,写一个继承于SqlSessionDaoSupport的 BaseDao,在BaseDao中完成这个工作,然后其他的DAO类再都BaseDao继承。BaseDao的示例代码如下:

package dao;
import javax.annotation.Resource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
public class BaseDao extends SqlSessionDaoSupport  {
   //依赖注入sqlSession工厂
   @Resource(name = "sqlSessionFactory")
   public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
         super.setSqlSessionFactory(sqlSessionFactory);
   }
}

下面通过实例讲解继承SqlSessionDaoSupport类的方式访问数据库。

【例3-3】【例3-2】的基础上,实现继承SqlSessionDaoSupport类的方式访问数据库。

1创建Web应用并导入相关JAR包

使用Eclipse创建一个名为ch3_3的Web应用,将相关JAR包复制到WEB-INF/lib目录中。

2复制数据库连接信息属性文件及Log4j的日志配置文件

在应用ch3_3的src目录下,创建名为config的包,将应用ch3_3的数据库连接信息属性文件jdbc.properties文件复制到该包中。

将应用ch3_2的Log4j日志配置文件log4j.properties文件,复制到ch3_3的src目录中,并将其中的“log4j.logger.com.mybatis.mapper=DEBUG”修改为“log4j.logger.dao=DEBUG”。

3创建持久化类

在应用ch3_3的src目录下,创建一个名为po的包,并在该包中创建持久化类MyUser。

4创建SQL映射文件

在应用ch3_3的src目录下,创建一个名为dao的包,并在该包中创建SQL映射文件UserMapper.xml。该文件内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserMapper">
  <!-- 根据uid查询一个用户信息 -->
  <select id="selectUserById" parameterType="Integer"  resultType="MyUser">
    select * from user where uid = #{uid}
  </select>
  <!-- 查询所有用户信息 -->
  <select id="selectAllUser"  resultType="MyUser">
    select * from user
  </select>
</mapper>

5创建MyBatis的核心配置文件

在应用ch3_3的config包中,创建MyBatis的核心配置文件mybatis-config.xml。在该文件中,配置实体类别名、日志输出、指定映射文件位置等,具体内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <setting name="logImpl" value="LOG4J" />
  </settings>
  <typeAliases>
    <package name="po" />
  </typeAliases>
  <!-- 告诉 MyBatis到哪里去找映射文件 -->
   <mappers>
        <mapper resource="dao/UserMapper.xml"/>
   </mappers>
</configuration>

6创建DAO接口和接口实现类

在应用ch3_3的dao包中,创建接口UserMapper。UserMapper接口代码如下:

package dao;
import java.util.List;
import po.MyUser;
public interface UserMapper {
   public MyUser selectUserById(int id);
   public List<MyUser> selectAllUser();
}

 在应用ch3_3的dao包中,创建BaseMapper类,在该类中使用@Resource(name = "sqlSessionFactory")注解依赖注入sqlSession工厂。BaseMapper类的核心代码如下:

public class BaseMapper extends SqlSessionDaoSupport  {
   //依赖注入sqlSession工厂
   @Resource(name = "sqlSessionFactory")
   public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
         super.setSqlSessionFactory(sqlSessionFactory);
   }
}

 在应用ch3_3的dao包中,创建接口UserMapper的实现类UserMapperImpl,在该类中使用@Repository注解标注该类的实例是数据访问对象。UserMapperImpl类的核心代码如下:

@Repository
public class UserMapperImpl extends BaseMapper implements UserMapper {
  public MyUser selectUserById(int id) {
    //获取SqlSessionFactory提供的SqlSessionTemplate对象
    SqlSession session = getSqlSession();
    return session.selectOne("dao.UserMapper.selectUserById", id);
  }
  public List<MyUser> selectAllUser() {
    SqlSession session = getSqlSession();
    return session.selectList("dao.UserMapper.selectAllUser");
  }
}

7创建控制类

在应用ch3_3的src目录下,创建一个名为controller的包,并在该包中创建控制器类MyController。在该控制器类中,调用UserMapper接口中的方法操作数据库,核心代码如下:

@Controller
public class MyController {
  @Autowired
  private UserMapper userMapper;
  @RequestMapping("/test")
  public String test() {
    // 查询一个用户
    MyUser mu = userMapper.selectUserById(1);
    System.out.println(mu);
    // 查询所有用户
    List<MyUser> listMu = userMapper.selectAllUser();
    for (MyUser myUser : listMu) {
      System.out.println(myUser);
    }
    return "test";
  }
}

8创建测试页面

在/WEB-INF/目录下,创建一个名为jsp的文件夹,并在该文件夹中创建test.jsp文件

9创建Web、Spring、Spring MVC的配置文件

在应用ch3_3的config包中创建Spring配置文件applicationContext.xml和Spring MVC配置文件springmvc.xml,在应用ch3_3的/WEB-INF/目录中创建Web配置文件web.xml。

在Spring配置文件applicationContext.xml中,首先,使用加载数据库连接信息属性文件;其次,使用org.apache.commons.dbcp2.BasicDataSource配置数据源,并使用org.springframework.jdbc.datasource.DataSourceTransactionManager为数据源添加事务管理器;最后,使用org.mybatis.spring.SqlSessionFactoryBean配置MyBatis工厂,同时指定数据源,并与MyBatis完美整合。Spring配置文件applicationContext.xml的具体内容如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:context="http://www.springframework.org/schema/context"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 加载数据库配置文件 -->
  <context:property-placeholder location="classpath:config/db.properties" />
  <!-- 配置数据源 -->
  <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <!-- 最大连接数 -->
    <property name="maxTotal" value="${jdbc.maxTotal}" />
    <!-- 最大空闲连接数 -->
    <property name="maxIdle" value="${jdbc.maxIdle}" />
    <!-- 初始化连接数 -->
    <property name="initialSize" value="${jdbc.initialSize}" />
  </bean>
  <!-- 添加事务支持 -->
  <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
  </bean>
  <!-- 开启事务注解 -->
  <tx:annotation-driven transaction-manager="txManager" />
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:config/mybatis-config.xml"></property>
    </bean>
</beans>

 在Spring MVC配置文件springmvc.xml中,使用扫描包,并使用org.springframework.web.servlet.view.InternalResourceViewResolver配置视图解析器。具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd"> 
    <context:component-scan base-package="controller"/> 
    <context:component-scan base-package="dao"/> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            id="internalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/jsp/" />
       <property name="suffix" value=".jsp" />
    </bean> 
</beans>

 在Web配置文件web.xml中,首先通过加载Spring配置文件applicationContext.xml,并通过org.springframework.web.context.ContextLoaderListener启动Spring容器;其次配置Spring MVC DispatcherServlet,并加载Spring MVC配置文件springmvc.xml。

10测试应用

发布应用ch3_3到Web服务器Tomcat后,通过地址http://localhost:8080/ch3_3/test测试应用。

小结:

全新的专栏可能文章还是有点不成熟,希望大家多提点建议,我也会愈加完善专栏及文章。

最后放一张端午节出去玩的照片给大家瞧瞧:

猜你喜欢

转载自blog.csdn.net/qq_41640218/article/details/125142830
今日推荐