全栈开发实战|SSM框架整合开发
01、相关JAR包
实现SSM框架整合开发,需要导入相关JAR包,包括MyBatis、Spring、Spring MVC、MySQL连接器、MyBatis与Spring桥接器、Log4j以及DBCP等JAR包。
1●MyBatis框架所需的JAR包
MyBatis框架所需的JAR包,包括它的核心包和依赖包。
2●Spring框架所需的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
3●MyBatis与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所示。
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测试应用。
- 点赞
- 收藏
- 关注作者
评论(0)