首页 > 代码库 > SSM整合(三):Spring4与Mybatis3与SpringMVC整合

SSM整合(三):Spring4与Mybatis3与SpringMVC整合

源码下载 SSMDemo

上一节整合了Mybatis3Spring4,接下来整合SpringMVC!

说明:整合SpringMVC必须是在web项目中,所以前期,新建的就是web项目!

本节全部采用注解式,如要了解其他的配置方式请查看相关详细的文章!

一、新建SpringMVC配置文件applicationContext-mvc.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:context="http://www.springframework.org/schema/context"

    xmlns:mvc="http://www.springframework.org/schema/mvc"

    xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:jdbc="http://www.springframework.org/schema/jdbc"

    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

       http://www.springframework.org/schema/mvc

       http://www.springframework.org/schema/mvc/spring-mvc.xsd

       http://www.springframework.org/schema/jdbc

       http://www.springframework.org/schema/jdbc/spring-jdbc.xsd      

       http://www.springframework.org/schema/tx

       http://www.springframework.org/schema/tx/spring-tx.xsd      

        ">

    <!-- 使用注解配置 -->

    <mvc:annotation-driven />

    <!--自动扫描包 -->

    <context:component-scan base-package="com.ssm.demo2.controller" />

   

 

    <!-- ViewResolver 视图解释器 -->

    <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>

</beans>

 

二、WebApp/WEB-INF新建jsp目录存放jsp页面!
更改WebAppindex.jsp文件(如没有,新建)内容如下

技术分享

三、web.xml文件中添加spring的相关配置文件:

springmvcspring的一相模块,也通称为Spring配置文件!

内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<web-app

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns="http://java.sun.com/xml/ns/javaee"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

    id="WebApp_ID"

    version="3.0" >

    <!-- Spring应用上下文, 理解层次化的ApplicationContext ,

    applicationContext-*.xml这里用了通配符,

        这里只要与spring整合的文件符合这样的格式将自动全部加载

     -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring/applicationContext-*.xml</param-value>

    </context-param>

    <!-- DispatcherServlet, Spring MVC的核心 -->

    <servlet>

        <servlet-name>SSMDemo</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- DispatcherServlet对应的上下文配置, 默认为/WEB-INF/$servlet-name$-servlet.xml -->

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:spring/applicationContext-mvc.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>SSMDemo</servlet-name>

        <!-- mvc-dispatcher拦截所有的请求 -->

        <url-pattern>/</url-pattern>

    </servlet-mapping>

   

    <!--forwarding 跳转的servlet-->

    <servlet>

        <servlet-name>forwarding</servlet-name>

        <servlet-class>com.spring.mvcdemo.servlet.ForwardingServlet</servlet-class>

    </servlet>

    <!--配置文件编码  -->

    <filter>

        <filter-name>CharacterEncodingFilter</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>

    </filter>

    <filter-mapping>

        <filter-name>CharacterEncodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--Spring 全局上下文的 监听,当配置必须有 applicationContext.xml文件,否则报错  -->

    <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

</web-app>

 

四、配置tomcat
eclipse windows->preferences ->Serverruntime environment 添加:

技术分享

 

选择自己本地的安装版本号

技术分享

 

选择tomcat安装目录:

技术分享

 

Finish 完成!

 

4.2)在server控制面进行添加服务器

技术分享

前面配置好了,直接就会显示出,刚配好的tomcat,点完成!

双击服务器进行配置

技术分享

 

把配置改成以上图所示:

4.2)部署项目

在项目名右键 run on server

技术分享


五、开启tomcat部署,报错:

技术分享

 

这是因为在上一节中 配置sqlSessionFactory时配置文件少加了classpath: !

applicationContext-dao.xml中把定义sqlSessionFactory中的配置加上classpath:

技术分享

 

 

再部署再报如下错:

技术分享

 

提示缺少jar包,在pom.xml中添加:

 

      <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-validator</artifactId>

            <version>5.0.0.Final</version>

        </dependency>

然后maven ->update project 一下,再重新部署,ok!

技术分享

 

这时显示index.jsp页面的内容只说明web环境搭建好,配置文件是ok滴,并不代表与springmvc整合成功,接下来,写ControllerService,从数据库中查询数据并显示,来测试整合成功!

六、写Controller

com.ssm.demo2.controller新建UserController.java内容如下:

@Controller

@RequestMapping("/user")

publicclass UserController {

   @Autowired

   UserMapper userMapper;

  

   @RequestMapping("/list")

   public ModelAndView  userlist() throws Exception{

      List<User> users=userMapper.findUserList("");

      ModelAndView mView=new ModelAndView();

      mView.addObject("users",users);

      mView.setViewName("list");//返回的jsp页面名称

      returnmView;

   }

}

七、在jsp目录下新建list.jsp页面,内容:

<%@ page language="java" contentType="text/html; charset=UTF-8"

   pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<body>

   <h2>SSM 部署成功! </h2>

   <p>用户名:</p>

   <h3>${users}</h3>

</body>

</html>

 

八、重新部署:

在输入地址:http://localhost:8080/ssm_demo2/user/list

结果如下:

技术分享

 

查询与显示的结果是一样ok!

九、写Service

上面在Controller里直接操作 mapper,这是不规范的,现在在中间加上Service

com.ssm.demo2.service中新建UserService.java接口层

publicinterface UserService {

   public List<User>findUser(String name) throws Exception;

}

9.1)新建实现类的包名com.ssm.demo2.service.impl

并写实现类UserServiceImpl.java

@Service

publicclass UserServiceImpl implements UserService{

   @Autowired

   UserMapper userMapper; //spring框架配置了注解,自动注入

   @Override

   public List<User> findUser(String name) throws Exception {

      // TODO Auto-generated method stub

      List<User> users=userMapper.findUserList(name);

      returnusers;

   }

}

再把UserController.java改成如下:

 

@Controller

@RequestMapping("/user")

publicclass UserController {

   /*@Autowired

   UserMapper userMapper;*/

   @Autowired

   UserServiceImpl userServie;

  

   @RequestMapping("/list")

   public ModelAndView  userlist() throws Exception{

//    List<User> users=userMapper.findUserList("");

      List<User> users=userServie.findUser("");

      ModelAndView mView=new ModelAndView();

      mView.addObject("users",users);

      mView.setViewName("list");//返回的jsp页面名称

      returnmView;

   }

}

再重新布署:报如下错:

技术分享

 

 

提示在UserController.java出错,往后再看,显示如下:技术分享

说无法注入字段,这说明spring注解配置的无效,根据配置的分类applicationContext-dao.xml是配置管理数据库及spring框架配置的,

applicationContext-mvc.xml是配置SpringMVC模块相关的:

打开applicationContext-dao.xml查看注解配置,发现包名写错:

技术分享

 

这是Spring注解,这里包应该是根包名,而不是配置mvc注解的包名,

改成 com.ssm.demo2,再重新部署:显示

技术分享

 

显示结果为空:可以自行把日志打印的SQl语句 运行,验证结果,的确为空!

部署ok!

但时细心的话,会发现在启动Tomcat有报错一条错误:

因太快,没有截图上来,错误 如下:

技术分享

提示在 spring配置文件的 xsi:schemaLocation= 中必须是偶数uri

去掉最后spring-dwr-3.0.xsd这条uri,即可;

注:在配置这些uri时,后面最好不要加上版本号信息,让系统自动适配版本号!减少因版本号不配而报错!

 

此时,Mybatis3Spring4SpringMVC整合成功!

 

源码下载 SSMDemo



SSM整合(三):Spring4与Mybatis3与SpringMVC整合