日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

SSM(Spring+Spring MVC+MyBatis)框架整合詳細(xì)步驟(非基于Maven)

時(shí)間:2020-02-09 20:47:34 類型:JAVA
字號(hào):    

因?yàn)?Spring MVC 是 Spring 框架中的一個(gè)子模塊,所以 Spring 與 SpringMVC 之間不存在整合的問題。實(shí)際上,SSM 框架的整合只涉及 Spring 與 MyBatis 的整合以及 Spring MVC 與 MyBatis 的整合。

詳細(xì)步驟如下:

  1. 創(chuàng)建應(yīng)用ssmDemo并導(dǎo)入相關(guān) JAR 包

    1>MyBatis 框架所需的 JAR 包

         MyBatis 框架所需的 JAR 包包括它的核心包和依賴包

    2>Srping框架所需要的JAR包

        Spring 框架所需的 JAR 包包括它的核心模塊 JAR、AOP 開發(fā)使用的 JAR、JDBC 和事務(wù)的 JAR 包

    3> MyBatis 與 Spring 整合的中間 JAR 包  mybatis-spring-2.0.3.jar

    4> 數(shù)據(jù)庫驅(qū)動(dòng) JAR 包   mysql-connector-java-5.1.39-bin.jar

    5> 數(shù)據(jù)源所需的 JAR 包

         在整合時(shí)使用的是 DBCP 數(shù)據(jù)源,需要準(zhǔn)備 DBCP 和連接池的 JAR 包

        commons-dbcp2-2.7.0.jar

        下載地址: http://mirror.bit.edu.cn/apache//commons/dbcp/binaries/commons-dbcp2-2.7.0-bin.tar.gz

        commons-pool2-2.8.0.jar

         下載地址:http://mirror.bit.edu.cn/apache//commons/pool/binaries/commons-pool2-2.8.0-bin.tar.gz

     

    6> Spring MVC 的相關(guān) JAR 包

    spring-web-5.2.3.RELEASE.jar  和 spring-webmvc-5.2.3.RELEASE.jar

    7.  事務(wù)管理相關(guān)的JAR包

         aspectjrt-1.8.7.jar,   aspectjweaver.jar

    8> spring mvc返回json格式需要引入的jar

          11.jpg

    最終所有的JAB包如下:

    1.jpg

  2.  創(chuàng)建數(shù)據(jù)庫及表格

       

  3. CREATE DATABASE `ssmone` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
      CREATE TABLE `user` (
      `uid` tinyint(2) NOT NULL,
      `uname` varchar(20) DEFAULT NULL,
      `usex` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`uid`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  4. 創(chuàng)建持久化類

    在 src 目錄下創(chuàng)建一個(gè)名為 com.po 的包,并在該包中創(chuàng)建一個(gè) PO 類 MyUser。具體代碼如下


  5. package com.po;
    
    public class MyUser {
    	    private Integer uid;
    	    private String uname;
    	    private String usex;
    	    public Integer getUid() {
    	        return uid;
    	    }
    	    public void setUid(Integer uid) {
    	        this.uid = uid;
    	    }
    	    public String getUname() {
    	        return uname;
    	    }
    	    public void setUname(String uname) {
    	        this.uname = uname;
    	    }
    	    public String getUsex() {
    	        return usex;
    	    }
    	    public void setUsex(String usex) {
    	        this.usex = usex;
    	    }
    	    @Override
    	    public String toString() { // 為了方便查看結(jié)果,重寫了toString方法
    	        return "User[uid=" + uid + ",uname=" + uname + ",usex=" + usex + "]";
    	    }
    }

  5. 創(chuàng)建 Dao 層

  在 src 目錄下創(chuàng)建一個(gè)名為 com.dao 的包,并在該包中創(chuàng)建一個(gè)名為 UserDao 的接口。具體代碼如下:

package com.dao;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.po.MyUser;
@Repository("userDao")
@Mapper
/*
* 使用Spring自動(dòng)掃描MyBatis的接口并裝配 (Spring將指定包中所有被注解標(biāo)注的接口自動(dòng)裝配為Mybatis的映射接口
*/
public interface UserDao {
    /**
     * 接口方法對(duì)應(yīng)的SQL映射文件UserMapper.xml中的id
     */
    public MyUser selectUserById(Integer uid);
    public List<MyUser> selectAllUser();
    public int addUser(MyUser user);
    public int updateUser(MyUser user);
    public int deleteUser(Integer uid);
}

  6.  創(chuàng)建 Controller 層

  在 src 目錄下創(chuàng)建一個(gè)名為 com.controller 的包,并在該包中創(chuàng)建一個(gè)名為 UserController 的控制器類。具體代碼如下:

package com.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.dao.UserDao;
import com.po.MyUser;
@Controller("userController")
public class UserController {
    @Autowired
    private UserDao userDao;

	@RequestMapping("/select")
    public String test(Model model) {
        // 查詢一個(gè)用戶
        MyUser auser = userDao.selectUserById(1);
        System.out.println(auser);
        System.out.println("============================");
        // 添加一個(gè)用戶
        MyUser addmu = new MyUser();
        addmu.setUname("莊子");
        addmu.setUsex("男");
        int add = userDao.addUser(addmu);
        System.out.println("添加了" + add + "條記錄");
        System.out.println("============================");
        // 修改一個(gè)用戶
        MyUser updatemu = new MyUser();
        updatemu.setUid(1);
        updatemu.setUname("老子");
        updatemu.setUsex("男");
        int up = userDao.updateUser(updatemu);
        System.out.println("修改了" + up + "條記錄");
        System.out.println("============================");
        // 刪除一個(gè)用戶
        int dl = userDao.deleteUser(9);
        System.out.println("刪除了" + dl + "條記錄");
        System.out.println("============================");
        // 查詢所有用戶
        List<MyUser> list = userDao.selectAllUser();
        for (MyUser myUser : list) {
            System.out.println(myUser);
        }
        List<MyUser> list1 = userDao.selectAllUser();
        model.addAttribute("userList", list1);
        return "user/userList";
    }
}

7.    創(chuàng)建用戶信息顯示頁面

  在 WEB-INF 目錄下創(chuàng)建文件夾views/user,并在該文件夾下user創(chuàng)建用戶信息顯示頁面 userList. jsp。具體代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>顯示用戶信息</title>
</head>
<body>
    用戶信息
    <br>
    <c:forEach items="${userList }" var="user">
    ${user.uid }&nbsp;&nbsp;&nbsp;&nbsp;
    ${user.uname }&nbsp;&nbsp;&nbsp;&nbsp;
    ${user.usex }<br>
    </c:forEach>
</body>
</html>

8.  創(chuàng)建相關(guān)配置文件

     1> web.xml

      在 WEB-INF 目錄下創(chuàng)建 web.xml 文件,并在該文件中實(shí)例化 ApplicationContext 容器、啟動(dòng) Spring 容器、配置 DispatcherServlet 以及配置字符編碼過濾器。具體代碼如下:

<?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">
  <display-name>ssmDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 實(shí)例化ApplicationContext容器 -->
    <context-param>
        <!-- 加載src目錄下的 applicationContext-*.xml文件-->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- ContextLoaderListener的作用就是啟動(dòng)Web容器時(shí),自動(dòng)裝配ApplicationContext.xml的配置信息。
              因?yàn)樗鼘?shí)現(xiàn)了ServletContextListener這個(gè)接口,在web.xml配置這個(gè)監(jiān)聽器,啟動(dòng)容器時(shí),就會(huì)默認(rèn)執(zhí)行它實(shí)現(xiàn)的方法。 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>

 2> springmvc-servlet.xml

      在 src目錄下創(chuàng)建Spring MVC的核心配置文件 springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 使用掃描機(jī)制掃描包 -->
    <context:component-scan base-package="com.controller" />
    <mvc:annotation-driven >
           <!-- 消息轉(zhuǎn)換器 -->
           <mvc:message-converters register-defaults="true">
               <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                   <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
               </bean>
           </mvc:message-converters>
        </mvc:annotation-driven>
    <!-- annotation-driven用于簡化開發(fā)的配置,注解DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <!-- 完成視圖的對(duì)應(yīng) -->
    <!-- 對(duì)轉(zhuǎn)向頁面的路徑解析。prefix:前綴, suffix:后綴 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

    3> applicationContext.xml

        在 src 目錄下創(chuàng)建 Spring 的配置文件 applicationContext.xml,在該文件中配置數(shù)據(jù)源、添加事務(wù)支持、開啟事務(wù)注解、配置 MyBatis 工廠、進(jìn)行 Mapper 代理開發(fā)以及指定掃描包。具體代碼如下:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    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-3.0.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!--配置數(shù)據(jù)源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close" scope="singleton">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url"
            value="jdbc:mysql://localhost:3306/ssmone?characterEncoding=utf8" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="maxTotal" value="30" />
        <property name="maxIdle" value="10" />
        <property name="initialSize" value="5" />
    </bean>
    <!-- 添加事務(wù)支持 -->
    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 開啟事務(wù)注解 -->
    <tx:annotation-driven transaction-manager="txManager" />
    <!-- 配置mybitas工廠,同時(shí)指定數(shù)據(jù)源,并與MyBatis完美整合 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- configLocation的屬性值為Mybatis的核心配置文件 -->
        <!--  <property name="configLocation" value="classpath:mybatis-config.xml" /> -->
         <!-- 所有配置的mapper文件 -->
        <property name="mapperLocations" value="classpath:com/mybatis/*.xml" />
    </bean>
    <!-- Mapper代理開發(fā),使用Spring自動(dòng)掃描Mybatis的接口并裝配 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- mybatis-spring組件的掃描器 -->
        <property name="basePackage" value="com.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
</beans>

    4> 在 com.mybatis 文件夾中創(chuàng)建 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="com.dao.UserDao">
    <!--根據(jù)uid查詢一個(gè)用戶信息 -->
    <select id="selectUserById" parameterType="Integer" resultType="com.po.MyUser">
        select * from user where uid = #{uid}
    </select>
    <!-- 查詢所有用戶信息 -->
    <select id="selectAllUser" resultType="com.po.MyUser">
        select * from user
    </select>
    <!-- 添加一個(gè)用戶,#{uname}為 com.mybatis.po.MyUser 的屬性值 -->
    <insert id="addUser" parameterType="com.po.MyUser">
    insert into user (uname,usex) values(#{uname},#{usex})
    </insert>
    <!--修改一個(gè)用戶 -->
    <update id="updateUser" parameterType="com.po.MyUser">
        update user set uname = #{uname},usex = #{usex} where uid = #{uid}
    </update>
    <!-- 刪除一個(gè)用戶 -->
    <delete id="deleteUser" parameterType="Integer">
        delete from user where uid = #{uid}
    </delete>
</mapper>

9.  發(fā)布運(yùn)行應(yīng)用程序

     2.jpg

相關(guān): 通過eclipse創(chuàng)建基于maven的ssm(Spring+SpringMVC+Mybayts)框架

配置信息下載:

ssm配置.zip

 

注配置文件包目錄與上文不一致

<