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

源碼下載 SSMDemohtml

上一節整合了Mybatis3Spring4,接下來整合SpringMVC!java

說明:整合SpringMVC必須是在web項目中,因此前期,新建的就是web項目!git

本節所有采用註解式,如要了解其餘的配置方式請查看相關詳細的文章!web

1、新建SpringMVC配置文件applicationContext-mvc.xml:spring

內容以下:sql

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

<beanswindows

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

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

    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>

 

2、WebApp/WEB-INF新建jsp目錄存放jsp頁面!
更改WebAppindex.jsp文件(如沒有,新建)內容以下



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

 

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

 

選擇本身本地的安裝版本號

 

選擇tomcat安裝目錄:

 

Finish 完成!

 

4.2)在server控制面進行添加服務器

前面配置好了,直接就會顯示出,剛配好的tomcat,點完成!

雙擊服務器進行配置

 

把配置改爲以上圖所示:

4.2)部署項目

在項目名右鍵 run on server


5、開啓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,從數據庫中查詢數據並顯示,來測試整合成功!

6、寫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;

   }

}

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

 

8、從新部署:

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

結果以下:

 

查詢與顯示的結果是同樣ok!

9、寫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

相關文章
相關標籤/搜索