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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 全栈开发实战|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所示。

image.png


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测试应用。


小结:


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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
17天前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
本文主要分享了在使用SSM+JSP进行网站开发时,因忽视setter、getter的隐式调用问题而导致的常见bug及其解决方法。详细介绍了setter和getter的隐式调用时机,并给出了具体示例,帮助开发者避免类似问题。
42 11
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
3月前
|
Java 数据库连接 Maven
SSM框架整合图书管理项目
这篇文章是关于SSM框架整合到图书管理项目的详细教程,涵盖了从Maven项目构建、依赖导入、数据库连接、配置文件编写、实体类和接口实现到SpringMVC整合的完整步骤。
SSM框架整合图书管理项目
|
2月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
36 0
|
3月前
|
Java 数据库
使用ssm框架搭建的图书管理系统
本文介绍了使用SSM框架搭建的图书管理系统,包括图书信息管理、借阅记录管理、公告管理、出入库管理以及用户管理等功能。
使用ssm框架搭建的图书管理系统
|
5月前
|
Java
SSM框架Controller层可以做什么
SSM框架Controller层可以做什么
|
5月前
|
前端开发
杨校老师之基于SSM开发的校园点餐配送系统
杨校老师之基于SSM开发的校园点餐配送系统
62 0
杨校老师之基于SSM开发的校园点餐配送系统
|
5月前
|
前端开发 Java
基于SSM框架的手机商城项目
基于SSM框架的手机商城项目
59 0
|
2月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
下一篇
无影云桌面