Spring+SpringMVC+Mybatis簡單配置和使用

之前做的項目一直使用SSM框架開發,用了幾個月的SSM,個人感覺搭建起來比較簡單也非常好用,之前自己也搭過小型的ssm但沒記錄下來,正好寫ftp+nginx+fileinput的時候需要用到,所以又整理了一次就記錄了下來。

SSM整合

一、配置文件

  1. 需要的JAR包

    這裏寫圖片描述

  2. 創建編寫jdbc配置文件jdbc.properties
    #JDBC Configure
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/test
    jdbc.username=root
    jdbc.password=123456
  1. 建立配置spring-mybatis文件
<?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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                        http://www.springframework.org/schema/context    
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                        http://www.springframework.org/schema/mvc    
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
      <!-- 自動掃描 -->
      <context:component-scan base-package="com.xw.demo"></context:component-scan>
      <!-- 引入jdbc.properties配置文件 -->
      <bean id="jdbcConfigure" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
            <property name="location" value="classpath:jdbc.properties"></property>
      </bean>
      <!-- 數據庫連接   -->
      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
            <property name="driverClassName" value="${jdbc.driver}"></property>
            <property name="url" value="${jdbc.url}"></property>
            <property name="username" value="${jdbc.username}"></property>
            <property name="password" value="${jdbc.password}"></property>
      </bean>
      <!-- 配置sessionFactory -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" value="dataSource"></property>
            <!-- 掃描Mapper.xml文件 -->
            <property name="mapperLocations" value="classpath:com/xw/demo/dao/mapper/*.xml"></property>
      </bean>
      <!-- 裝配dao接口 -->
      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.xw.demo.dao"></property>
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
      </bean>
      <!-- 配置事物管理 -->
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
      </bean>
  </beans>
  1. 建立配置spring-mvc文件
<?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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                        http://www.springframework.org/schema/context    
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                        http://www.springframework.org/schema/mvc    
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
     <!-- 自動掃描包 -->  
     <context:component-scan base-package="com.xw.demo.controller"></context:component-scan>
     <!-- 配置文件的前後綴 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/page/"></property>
        <property name="suffix" value=".jsp"></property>
     </bean>
     <!-- 註解驅動 -->
     <mvc:annotation-driven></mvc:annotation-driven>
     <!-- 靜態資源加載目錄 -->
     <mvc:resources location="/js/" mapping="/js/**"/>
     <mvc:resources location="/image/" mapping="/image/**"/>
     <mvc:resources location="/css/" mapping="/css/**"/>
</beans>
  1. 配置web.xml文件
    <?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"  
    version="3.0">  
  <display-name></display-name> 
    <!-- 全局加載加載spring-mybatis配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:spring-mybatis.xml</param-value>  
    </context-param>
    <!-- 編碼過濾器 -->
    <filter>  
        <filter-name>encodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <async-supported>true</async-supported>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    <!-- spring監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 防止Spring內存溢出監聽器 -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
    <!-- servlet配置 -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
        <async-supported>true</async-supported>  
    </servlet>
    <servlet-mapping> 
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>    
    </servlet-mapping>  
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list> 
</web-app>
  1. 建立配置日誌記錄文件log4j.properties
log4j.rootLogger=INFO,Console,File  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  

log4j.appender.File = org.apache.log4j.RollingFileAppender  
log4j.appender.File.File = logs/ssm.log  
log4j.appender.File.MaxFileSize = 10MB  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n  

關於上面的幾個配置文件可以參照博文http://blog.csdn.net/mrslw/article/details/52824145的詳細介紹,上面每個配置的功能介紹是比較詳細的。

二、功能編寫

上面的配置文件配置好後接下來就做一個簡單的用戶登錄系統
建立的文件結構:

這裏寫圖片描述
User.java文件:

package com.xw.demo.domain;

import java.io.Serializable;

public class User implements Serializable {

    private static final long serialVersionUID = -5383127837792395250L;
    //用戶ID
    private Integer id;
    //用戶名
    private String username;
    //用戶密碼
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

UserMapper代碼:

    <?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.xw.demo.dao.UserDao">
    <resultMap type="com.xw.demo.domain.User" id="UserMap">
        <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="password" property="password" />
    </resultMap>
    <!-- 根據用戶名查詢的方法 -->
    <select id="selectByUsername" resultMap="UserMap" parameterType="String" resultType="com.xw.demo.domain.User">
        SELECT * FROM TB_USER WHERE USERNAME = #{username};
    </select>
</mapper>

UserDao代碼:

package com.xw.demo.dao;

import com.xw.demo.domain.User;

public interface UserDao {
    /**
     * 根據用戶名查詢
     * @param username 用戶名
     * @return
     */
    public User selectByUsername(String username);
}

UserService代碼:

package com.xw.demo.service;

import com.xw.demo.domain.User;

public interface UserService {
    /**
     * 根據用戶名查詢
     * @param username 用戶名
     * @return
     */
    public User selectByUsername(String username);
}

UserServiceImpl代碼:

package com.xw.demo.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.xw.demo.dao.UserDao;
import com.xw.demo.domain.User;
import com.xw.demo.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;

    /**
     * 根據用戶名查詢
     * @param username 用戶名
     * @return user 用戶集合
     */
    public User selectByUsername(String username) {
        User user = userDao.selectByUsername(username);
        return user;
    }

}

登錄頁面:
這裏寫圖片描述
代碼:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>用戶登錄</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <link rel="stylesheet" href="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">  
    <script src="https://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>

  </head>

  <body>
    <div style="padding: 300px 100px 10px;" align="center">
        <form class="bs-example bs-example-form" name="login_form" id="login_form">
            <div class="input-group">
                <span class="input-group-addon" style="width:67px;">用戶名</span>
                <input type="text" name="username" id="username" class="form-control" placeholder="請輸入您的用戶名" />
            </div>
            <div style="margin:10px"></div>
            <div class="input-group">
                <span class="input-group-addon" style="width:67px;">密&nbsp;&nbsp;&nbsp;碼</span>
                <input type="text" name="password" id="password" class="form-control" placeholder="請輸入您的密碼" />
            </div>
            <div style="margin:10px"></div>
            <div>
                <button type="button" style="width:265px;" name="login_btn" id="login_btn" class="btn btn-primary" data-toggle="button">登錄</button>
            </div>
        </form>
    </div>
  </body>
  <script type="text/javascript">
        $(function() {
            $("#login_btn").click(function(){
                $("#login_form").submit();
            });
            $("#login_form").ajaxForm({
                url:"/SSM/user/loginCheck",
                dataType:"json",
                type:"post",
                success:function(data){
                    alert(data.message);
                }
            });
        });
  </script>
</html>

Controller層編寫

package com.xw.demo.controller;

import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.xw.demo.domain.User;
import com.xw.demo.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;

    private final static String LOGIN_PAGE = "/login";

    @RequestMapping(value = "/login",method=RequestMethod.GET)
    public String tologin(){
        return LOGIN_PAGE;
    }

    @RequestMapping(value = "/loginCheck", method = RequestMethod.POST)
    @ResponseBody
    public Map<Object,String> login(String username,String password){
        Map<Object,String> map = new HashMap<Object, String>();
        User user = userService.selectByUsername(username);
        if(user != null && user.getPassword().equals(password)){
            map.put("message", "登陸成功!");
        }else{
            map.put("message", "用戶名或者密碼錯誤!");
        }
        return map;
    }
}

三、功能測試

輸入正確的用戶名和密碼:
這裏寫圖片描述
輸入錯誤的用戶名和密碼:
這裏寫圖片描述
到這裏整個SSM環境下的登錄驗證就完成了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章