ssm整合

整合:spring4.2.5+mybatis3.2.8+springMVC+maven
环境:Myeclipse2014+mysql5.5.20+tomcat8+jdk1.7+linux
目标:实现对用户表的简单添加(分别有表单数据提交和json提交)、分页查看和文件上传
源码在github上:https://github.com/fuckyourdick/myRegisterSystem/tree/master/mavenSSM
效果图:

ssm整合_第1张图片

ssm整合_第2张图片

ssm整合_第3张图片

ssm整合_第4张图片

ssm整合_第5张图片

项目结构图:

ssm整合_第6张图片

ssm整合_第7张图片

1).创建maven项目,引入所需的jar包

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.hsp.mavengroupId>
  <artifactId>mavenSSHartifactId>
  <packaging>warpackaging>
  <version>0.0.1-SNAPSHOTversion>
  <name>mavenSSHname>
  <url>http://maven.apache.orgurl>
    <properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>

    
    <spring.version>4.2.5.RELEASEspring.version>

    
    <mybatis.version>3.2.8mybatis.version>

    
    <mysql-driver.version>5.1.29mysql-driver.version>

    
    <slf4j.version>1.7.18slf4j.version>
    <log4j.version>1.2.17log4j.version>

  properties>

  <dependencies>

  
    <dependency>
      <groupId>jstlgroupId>
      <artifactId>jstlartifactId>
      <version>1.2version>
    dependency>

    <dependency>
      <groupId>javaxgroupId>
      <artifactId>javaee-apiartifactId>
      <version>7.0version>
    dependency>

    <dependency>
      <groupId>junitgroupId>
      <artifactId>junitartifactId>
      <version>4.11version>
      <scope>testscope>
    dependency>

    
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-coreartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-oxmartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-txartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-jdbcartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-webmvcartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-contextartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-context-supportartifactId>
      <version>${spring.version}version>
    dependency>
    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-aopartifactId>
      <version>${spring.version}version>
    dependency>

    <dependency>
      <groupId>org.springframeworkgroupId>
      <artifactId>spring-testartifactId>
      <version>${spring.version}version>
    dependency>

     
    <dependency>
      <groupId>org.mybatisgroupId>
      <artifactId>mybatisartifactId>
      <version>${mybatis.version}version>
    dependency>

    
    <dependency>
      <groupId>org.mybatisgroupId>
      <artifactId>mybatis-springartifactId>
      <version>1.2.2version>
    dependency>

    
    <dependency>
      <groupId>mysqlgroupId>
      <artifactId>mysql-connector-javaartifactId>
      <version>${mysql-driver.version}version>
    dependency>
    
    <dependency>
      <groupId>commons-dbcpgroupId>
      <artifactId>commons-dbcpartifactId>
      <version>1.2.2version>
    dependency>

    
    <dependency>
      <groupId>com.alibabagroupId>
      <artifactId>fastjsonartifactId>
      <version>1.1.41version>
    dependency>

    
    <dependency>
      <groupId>log4jgroupId>
      <artifactId>log4jartifactId>
      <version>${log4j.version}version>
    dependency>
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-apiartifactId>
      <version>${slf4j.version}version>
    dependency>
    <dependency>
      <groupId>org.slf4jgroupId>
      <artifactId>slf4j-log4j12artifactId>
      <version>${slf4j.version}version>
    dependency>

    
    
    <dependency>
      <groupId>org.codehaus.jacksongroupId>
      <artifactId>jackson-mapper-aslartifactId>
      <version>1.9.13version>
    dependency>
    
    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-coreartifactId>
      <version>2.8.0version>
    dependency>
    
    <dependency>
      <groupId>com.fasterxml.jackson.coregroupId>
      <artifactId>jackson-databindartifactId>
      <version>2.8.0version>
    dependency>

    <dependency>
      <groupId>commons-fileuploadgroupId>
      <artifactId>commons-fileuploadartifactId>
      <version>1.3.1version>
    dependency>

    <dependency>
      <groupId>commons-iogroupId>
      <artifactId>commons-ioartifactId>
      <version>2.4version>
    dependency>

    <dependency>
      <groupId>commons-codecgroupId>
      <artifactId>commons-codecartifactId>
      <version>1.9version>
    dependency>

    
    <dependency> 
      <groupId>com.thoughtworks.xstreamgroupId> 
      <artifactId>xstreamartifactId> 
      <version>1.3.1version> 
    dependency>

    <dependency>
      <groupId>javax.servletgroupId>
      <artifactId>javax.servlet-apiartifactId>
      <version>3.1-b07version>
    dependency>


  dependencies>

  <build>
    <finalName>mavenSSMfinalName>
  build>
project>

2).建立各种资源文件

<1>jdbc.properties

driverClasss=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/maven?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
username=root
password=XXXXXXXX
#\u5B9A\u4E49\u521D\u59CB\u8FDE\u63A5\u6570
initialSize=0
#\u5B9A\u4E49\u6700\u5927\u8FDE\u63A5\u6570
maxActive=10
#\u5B9A\u4E49\u6700\u5927\u7A7A\u95F2
maxIdle=10
#\u5B9A\u4E49\u6700\u5C0F\u7A7A\u95F2
minIdle=1
#\u5B9A\u4E49\u6700\u957F\u7B49\u5F85\u65F6\u95F4
maxWait=60000

<2>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=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n

#普通文件日志
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=logs/ssm.log
log4j.appender.File.MaxFileSize=10MB
#输出日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n

<3>common.properties
该文件暂时不需要添加

<4>spring-mybatis.xml


<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:tx="http://www.springframework.org/schema/tx"
       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/tx
                        http://www.springframework.org/schema/tx/spring-tx.xsd">

    
    <context:component-scan base-package="ssm"/>

    
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties"/>
    bean>


    

    
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
          destroy-method="close">
        <property name="driverClassName" value="${driverClasss}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        
        <property name="initialSize" value="${initialSize}">property>
        
        <property name="maxActive" value="${maxActive}">property>
        
        <property name="maxIdle" value="${maxIdle}">property>
        
        <property name="minIdle" value="${minIdle}">property>
        
        <property name="maxWait" value="${maxWait}">property>
    bean>

    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        
        <property name="mapperLocations" value="classpath:mapping/*.xml">property>
    bean>

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="ssm.dao"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">property>
    bean>


    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    bean>

    
    <tx:annotation-driven transaction-manager="transactionManager"/>
beans>

<5>spring-mvc.xml


<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-4.0.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.0.xsd
                        http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">

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

    
    <bean id="mappingJacksonHttpMessageConverter"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8value>
            list>
        property>
    bean>
    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter"/> 
            list>
        property>
    bean>

    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp"/>
    bean>

    
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        
        <property name="defaultEncoding" value="UTF-8"/>
        
        <property name="maxUploadSize" value="32505856"/>
        
        <property name="maxInMemorySize" value="4096"/>
    bean>
beans>

<6>web.xml


<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         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>ssmdisplay-name>

    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:spring-mybatis.xmlparam-value>
    context-param>

    <context-param>
        <param-name>log4jConfigLocationparam-name>
        <param-value>classpath:log4j.propertiesparam-value>
    context-param>

    
    <filter>
        <filter-name>encodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>encodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>

    
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListenerlistener-class>
    listener>

    
    <servlet-mapping>
        <servlet-name>defaultservlet-name>         
        <url-pattern>*.jsurl-pattern>      
    servlet-mapping>
    <servlet-mapping>
        <servlet-name>defaultservlet-name>             
        <url-pattern>*.cssurl-pattern>        
    servlet-mapping>

    
    <servlet>
        <servlet-name>SpringMVCservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:spring-mvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
        <async-supported>trueasync-supported>
    servlet>
    <servlet-mapping>
        <servlet-name>SpringMVCservlet-name>
        
        <url-pattern>/url-pattern>
    servlet-mapping>

    <welcome-file-list>
        <welcome-file>/index.jspwelcome-file>
    welcome-file-list>

    
    <session-config>
        <session-timeout>20session-timeout>
    session-config>

web-app>

3).建立实体类和对应的实体dao和Mapper.xml文件

<1>先在数据库建立数据库和表(数据库名根据自己的实际而定)

ssm整合_第8张图片

<2>ssm.model–User.java

package ssm.model;

public class User {
    private Integer id;

    private String userName;

    private String userPhone;

    private String userEmail;

    private String userPwd;

    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 == null ? null : userName.trim();
    }

    public String getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone == null ? null : userPhone.trim();
    }

    public String getUserEmail() {
        return userEmail;
    }

    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail == null ? null : userEmail.trim();
    }

    public String getUserPwd() {
        return userPwd;
    }

    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd == null ? null : userPwd.trim();
    }
}

<3>ssm.dao–UserDao.java

package ssm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import ssm.model.User;

public interface UserDao {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

    List getAllUser();

    public List selectUserByPage(@Param(value="startPos") Integer startPos,@Param(value="pageSize") Integer pageSize);  

    public int selectUserCount();  
}

<4>mapping–UserMapper.xml



<mapper namespace="ssm.dao.UserDao" >
  <resultMap id="BaseResultMap" type="ssm.model.User" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="user_phone" property="userPhone" jdbcType="VARCHAR" />
    <result column="user_email" property="userEmail" jdbcType="VARCHAR" />
    <result column="user_pwd" property="userPwd" jdbcType="VARCHAR" />
  resultMap>
  <sql id="Base_Column_List" >
    id, user_name, user_phone, user_email, user_pwd
  sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from user
    where id = #{id,jdbcType=INTEGER}
  select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from user
    where id = #{id,jdbcType=INTEGER}
  delete>
  <insert id="insert" parameterType="ssm.model.User" >
    insert into user (id, user_name, user_phone, 
      user_email, user_pwd)
    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{userPhone,jdbcType=VARCHAR}, 
      #{userEmail,jdbcType=VARCHAR}, #{userPwd,jdbcType=VARCHAR})
  insert>
  <insert id="insertSelective" parameterType="ssm.model.User" >
    insert into user
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      if>
      <if test="userName != null" >
        user_name,
      if>
      <if test="userPhone != null" >
        user_phone,
      if>
      <if test="userEmail != null" >
        user_email,
      if>
      <if test="userPwd != null" >
        user_pwd,
      if>
    trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      if>
      <if test="userName != null" >
        #{userName,jdbcType=VARCHAR},
      if>
      <if test="userPhone != null" >
        #{userPhone,jdbcType=VARCHAR},
      if>
      <if test="userEmail != null" >
        #{userEmail,jdbcType=VARCHAR},
      if>
      <if test="userPwd != null" >
        #{userPwd,jdbcType=VARCHAR},
      if>
    trim>
  insert>
  <update id="updateByPrimaryKeySelective" parameterType="ssm.model.User" >
    update user
    <set >
      <if test="userName != null" >
        user_name = #{userName,jdbcType=VARCHAR},
      if>
      <if test="userPhone != null" >
        user_phone = #{userPhone,jdbcType=VARCHAR},
      if>
      <if test="userEmail != null" >
        user_email = #{userEmail,jdbcType=VARCHAR},
      if>
      <if test="userPwd != null" >
        user_pwd = #{userPwd,jdbcType=VARCHAR},
      if>
    set>
    where id = #{id,jdbcType=INTEGER}
  update>
  <update id="updateByPrimaryKey" parameterType="ssm.model.User" >
    update user
    set user_name = #{userName,jdbcType=VARCHAR},
      user_phone = #{userPhone,jdbcType=VARCHAR},
      user_email = #{userEmail,jdbcType=VARCHAR},
      user_pwd = #{userPwd,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  update>
  <select id="getAllUser" resultMap="BaseResultMap">
    SELECT * FROM user
  select>
    
<select id="selectUserByPage" resultMap="BaseResultMap">  
  select   
  *  
  from user limit #{startPos},#{pageSize}   
select>  
  
<select id="selectUserCount" resultType="java.lang.Integer">  
  SELECT COUNT(*) FROM user
select>   
mapper>

4).建立service层

<1>ssm.service–UserService.java

package ssm.service;


import ssm.model.User;

import java.util.List;

import org.apache.ibatis.annotations.Param;

public interface UserService {

    /*添加用户*/
    void addUser(User user);

    /*获得所有用户*/
    List getAllUsers();

    public List getUserByPage(Integer startPos, Integer pageSize);  

    public int getUserCount();  

}

<2>ssm.service.impl–UserServiceImpl.java

package ssm.service.impl;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import ssm.dao.UserDao;
import ssm.model.User;
import ssm.service.UserService;
import ssm.util.Page;

import javax.annotation.Resource;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;

    public void addUser(User user) {
        userDao.insert(user);

    }

    public List getAllUsers() {
        return userDao.getAllUser();
    }

    public List getUserByPage(Integer startPos, Integer pageSize) {
        return userDao.selectUserByPage(startPos, pageSize);
    }

    public int getUserCount() {
        return userDao.selectUserCount();
    }

}

5).在工具包添加文件上传和分页的工具类

<1>ssm.util–FileUpload.java

package ssm.util;

import java.io.File;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.multipart.MultipartFile;

public class FileUpload {

    public String upload(HttpServletRequest request, MultipartFile file) {
        String path = request.getSession().getServletContext().getRealPath("upload");  
        String fileName = file.getOriginalFilename();
        fileName=UUID.randomUUID()+fileName.substring(fileName.indexOf("."),fileName.length());
        File targetFile = new File(path, fileName);  
        if(!targetFile.exists()){  
            targetFile.mkdirs();  
        }  
        //保存  
        try {  
            file.transferTo(targetFile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } 
        return fileName;
    }

}

<2>ssm.util–Page.java

package ssm.util;

import java.io.Serializable;

public class Page implements Serializable {  

    private static final long serialVersionUID = -3198048449643774660L;  

    private int pageNow = 1; // 当前页数  

    private int pageSize = 5; // 每页显示记录的条数  

    private int totalCount; // 总的记录条数  

    private int totalPageCount; // 总的页数  

    @SuppressWarnings("unused")  
    private int startPos; // 开始位置,从0开始  

    @SuppressWarnings("unused")  
    private boolean hasFirst;// 是否有首页  

    @SuppressWarnings("unused")  
    private boolean hasPre;// 是否有前一页  

    @SuppressWarnings("unused")  
    private boolean hasNext;// 是否有下一页  

    @SuppressWarnings("unused")  
    private boolean hasLast;// 是否有最后一页  

    /** 
     * 通过构造函数 传入  总记录数  和  当前页 
     * @param totalCount 
     * @param pageNow 
     */  
    public Page(int totalCount, int pageNow) {  
        this.totalCount = totalCount;  
        this.pageNow = pageNow;  
    }  

    /** 
     * 取得总页数,总页数=总记录数/总页数 
     * @return 
     */  
    public int getTotalPageCount() {  
        totalPageCount = getTotalCount() / getPageSize();  
        return (totalCount % pageSize == 0) ? totalPageCount  
                : totalPageCount + 1;  
    }  

    public void setTotalPageCount(int totalPageCount) {  
        this.totalPageCount = totalPageCount;  
    }  

    public int getPageNow() {  
        return pageNow;  
    }  

    public void setPageNow(int pageNow) {  
        this.pageNow = pageNow;  
    }  

    public int getPageSize() {  
        return pageSize;  
    }  

    public void setPageSize(int pageSize) {  
        this.pageSize = pageSize;  
    }  

    public int getTotalCount() {  
        return totalCount;  
    }  

    public void setTotalCount(int totalCount) {  
        this.totalCount = totalCount;  
    }  
    /** 
     * 取得选择记录的初始位置 
     * @return 
     */  
    public int getStartPos() {  
        return (pageNow - 1) * pageSize;  
    }  

    public void setStartPos(int startPos) {  
        this.startPos = startPos;  
    }  

    /** 
     * 是否是第一页 
     * @return 
     */  
    public boolean isHasFirst() {  
        return (pageNow == 1) ? false : true;  
    }  

    public void setHasFirst(boolean hasFirst) {  
        this.hasFirst = hasFirst;  
    }  
    /** 
     * 是否有首页 
     * @return 
     */  
    public boolean isHasPre() {  
        // 如果有首页就有前一页,因为有首页就不是第一页  
        return isHasFirst() ? true : false;  
    }  

    public void setHasPre(boolean hasPre) {  
        this.hasPre = hasPre;  
    }  
    /** 
     * 是否有下一页 
     * @return 
     */  
    public boolean isHasNext() {  
        // 如果有尾页就有下一页,因为有尾页表明不是最后一页  
        return isHasLast() ? true : false;  
    }  

    public void setHasNext(boolean hasNext) {  
        this.hasNext = hasNext;  
    }  
    /** 
     * 是否有尾页 
     * @return 
     */  
    public boolean isHasLast() {  
        // 如果不是最后一页就有尾页  
        return (pageNow == getTotalCount()) ? false : true;  
    }  

    public void setHasLast(boolean hasLast) {  
        this.hasLast = hasLast;  
    }  

}  

6).测试

<1>ssm.test–TestService.java

package ssm.test;

import java.util.List;

import javax.annotation.Resource;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import ssm.model.User;
import ssm.service.UserService;
import ssm.service.impl.UserServiceImpl;

public class TestService {

    ApplicationContext ctx;

    @Before
    public void setUp() throws Exception {
        ctx=new ClassPathXmlApplicationContext("spring-mybatis.xml");
    }

    @Test
    public void test() {
    }

}

7).写前端界面

<1>WEB-INF–index.jsp

...
"user/goUser?flag=templet">模板引擎
"user/goUser?flag=json">json
"user/goUser?flag=fileupload">文件上传
...

<2>WEB-INF–jsp–templet.jsp

...
<h1>templeth1>
    <form>  
         <table>  
            <tr>  
                <td>usernametd>  
                <td>  
                    <input type="text" name="userName">  
                td>  
            tr>  
            <tr>  
                <td>userphonetd>  
                <td>  
                    <input type="text" name="userPhone">  
                td>  
            tr>
            <tr>  
                <td>useremailtd>  
                <td>  
                    <input type="email" name="userEmail">  
                td>  
            tr>  
            <tr>  
                <td>passwordtd>  
                <td>  
                    <input type="password" name="userPwd">  
                td>  
            tr>  
                <td> td>  
                <td>  
                    <input type="button" value="提交" onclick="addUser()">  
                td>  
            tr>  
        table>  
    form>  
    <script type="text/javascript">  
    //添加用户  
    function addUser() {  
        var form = document.forms[0];  
        form.action = "user/addUserTemplet?flag=add";  
        form.method = "post";  
        form.submit();  
    }  
script>  
...

<3>WEB-INF–jsp–json.jsp

...
<h1>jsonh1>
<form id="myform">  
        <table>  
            <tr>  
                <td>usernametd>  
                <td>  
                    <input type="text" name="userName" id="userName">  
                td>  
            tr>  
            <tr>  
                <td>userphonetd>  
                <td>  
                    <input type="text" name="userPhone" id="userPhone">  
                td>  
            tr>
            <tr>  
                <td>useremailtd>  
                <td>  
                    <input type="email" name="userEmail" id="userEmail">  
                td>  
            tr>  
            <tr>  
                <td>passwordtd>  
                <td>  
                    <input type="password" name="userPwd" id="userPwd">  
                td>  
            tr>  
            <tr>  
                <td> td>  
                <td>  
                    <input type="button" value="提交" id="submit" />
                td>  
            tr>  
        table>  
    form>  
    <script type="text/javascript" src="<%=request.getContextPath() %>/resource/js/jquery-1.9.1.min.js">script>  
    <script type="text/javascript"> 
    $(function(){
    $('#submit').click(function(){
        //选取表单
        var form = $('#myform');
        //获取表单数据
        var name = $("#userName").val();  
         var phone = $("#userPhone").val();  
         var email = $("#userEmail").val();  
         var pwd = $("#userPwd").val();
         var user = {userName:name,userPhone:phone,userEmail:email,userPwd:pwd};//拼装成json格式  
        //发送AJAX请求
        $.post('user/addUserJson',user,function(user){
            alert(user);
        });

    });

});
script>  
...

<4>WEB-INF–jsp–showUser.jsp

...
<c:if test="${!empty userList}">
        <c:forEach var="user" items="${userList}">
            姓名:${user.userName}   手机号:${user.userPhone}   邮箱:${user.userEmail}   <br>
        c:forEach>
    c:if>
     
    <div align="left">  
        <font size="2">共 ${page.totalPageCount} 页font> <font size="2">第  
            ${page.pageNow} 页font> <a href="addUserTemplet?pageNow=1">首页a>  
        <c:choose>  
            <c:when test="${page.pageNow - 1 > 0}">  
                <a href="addUserTemplet?pageNow=${page.pageNow - 1}">上一页a>  
            c:when>  
           <c:when test="${page.pageNow - 1 <= 0}">  
                <a href="addUserTemplet?pageNow=1">上一页a>  
            c:when>  
        c:choose>  
        <c:choose>  
            <c:when test="${page.totalPageCount==0}">  
                <a href="addUserTemplet?pageNow=${page.pageNow}">下一页a>  
            c:when>  
            <c:when test="${page.pageNow + 1 < page.totalPageCount}">  
                <a href="addUserTemplet?pageNow=${page.pageNow + 1}">下一页a>  
            c:when>  
            <c:when test="${page.pageNow + 1 >= page.totalPageCount}">  
                <a href="addUserTemplet?pageNow=${page.totalPageCount}">下一页a>  
            c:when>  
        c:choose>  
        <c:choose>  
            <c:when test="${page.totalPageCount==0}">  
                <a href="addUserTemplet?pageNow=${page.pageNow}">尾页a>  
            c:when>  
            <c:otherwise>  
                <a href="addUserTemplet?pageNow=${page.totalPageCount}">尾页a>  
            c:otherwise>  
        c:choose>  
    div>  
      
...

<5>WEB-INF–jsp–fileupload.jsp

...
"user/addUserFileUpload" method="post" enctype="multipart/form-data"> "file" name="file" /> "submit" value="上传" />

${message}

...

8).由于7)的步骤需要jquery,所以需要引进jquery

在webapp下建立resource目录,在resource下建立js目录,在js目录下存放一个jquery-1.9.1.min.js

9).写控制类处理页面逻辑

<1>ssm.controller–UserController.java

package ssm.controller;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import ssm.model.User;
import ssm.service.UserService;
import ssm.util.FileUpload;
import ssm.util.Page;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {

    private Logger log = Logger.getLogger(UserController.class);
    @Resource
    private UserService userService;

    /*json数据交互*/
    @RequestMapping("/addUserJson")
    public void addUserJson(HttpServletRequest request, HttpServletResponse response, User user)
    throws IOException {
        log.info("添加用户");
        System.out.println("添加用户"+user.getUserName()+","+user.getUserPhone()+","+
        user.getUserEmail()+","+user.getUserPwd()+".");
        userService.addUser(user);
        List userList = userService.getAllUsers();
        JSONArray jsons = new JSONArray();
        for(User a_user : userList) {
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("id", a_user.getId());
            jsonObject.put("UserName", a_user.getUserName());
            jsonObject.put("UserPhone", a_user.getUserPhone());
            jsonObject.put("UserEmail", a_user.getUserEmail());
            jsonObject.put("UserPwd", a_user.getUserPwd());
            jsons.add(jsonObject);  
        }
        /*设置字符集为'UTF-8'*/
        response.setCharacterEncoding("UTF-8"); 
        response.getWriter().print(jsons.toString()) ;
    }

    /*模板引擎渲染*/
    @RequestMapping("/addUserTemplet")
    public String addUserTemplet(HttpServletRequest request, Model model, User user){
        String flag = request.getParameter("flag");
        if(null != flag && flag.equals("add"))
        {
            log.info("添加用户");
            System.out.println("添加用户"+user.getUserName()+","+user.getUserPhone()+","+
                user.getUserEmail()+","+user.getUserPwd()+".");
            userService.addUser(user);
        }
        Page page = null;
        String pageNow = request.getParameter("pageNow");
        List userList = new ArrayList();
        int totalCount = userService.getUserCount();
        if (pageNow != null) {  
            page = new Page(totalCount, Integer.parseInt(pageNow));  
            userList = userService.getUserByPage(page.getStartPos(), page.getPageSize());  
        } else {  
            page = new Page(totalCount, 1);  
            userList = userService.getUserByPage(page.getStartPos(), page.getPageSize());  
        } 
        model.addAttribute("userList", userList);  
        model.addAttribute("page", page); 
        return "showUser";
    }

    /*文件上传*/
    @RequestMapping("/addUserFileUpload")
    public String fileUpload(@RequestParam(value = "file", required = false) MultipartFile file, 
            HttpServletRequest request, Model model){
        log.info("添加用户");
        System.out.println("文件上传");
        FileUpload fileUpload = new FileUpload();
        String filename = fileUpload.upload(request, file);
        System.out.println(filename);
        model.addAttribute("message", "文件上传成功");
        return "fileupload";
    }

    @RequestMapping("/goUser")
    public String goUser(HttpServletRequest request, Model model){
        log.info("前往用户界面");
        String flag = request.getParameter("flag");
        if(null != flag && flag.equals("fileupload")) {
            return "fileupload";
        }
        if(null != flag && flag.equals("templet")) {
            return "templet";
        }
        else {
            return "json";  
        }
    }
}

10).完

你可能感兴趣的:(mybatis,java,spring,springMVC,ssm)