Maven+SSM框架整合模板项目

 

Maven+SSM(Spring+SpringMVC+Mybatis)框架整合

各框架使用使用的版本如下:

Spring 3.2.8

Mybatis 3.2.8

Maven 3.3.9

MySQL 5.6.39

好久没写SSM框架整合的项目了,都快记不清楚了,复习下以往的SSM框架整合项目的经验,先写个简单的SSM框架整合的项目当作模板使用!

 

项目结构图:

 

web前端页面目录结构:

 

 

开始整合项目:

1、Maven导入jar包(配置Maven项目的 pom.xml 文件) 

pom.xml

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" 
  2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5     <groupId>org.ifg.bn</groupId>
  6     <artifactId>ssm_roll</artifactId>
  7     <version>0.0.1-SNAPSHOT</version>
  8     <packaging>war</packaging>
  9     <description>spring+springmvc+mybatis</description>
 10     <dependencies>
 11         <!-- spring -->
 12         <dependency>
 13             <groupId>org.springframework</groupId>
 14             <artifactId>spring-webmvc</artifactId>
 15             <version>3.2.8.RELEASE</version>
 16         </dependency>
 17         <dependency>
 18             <groupId>org.springframework</groupId>
 19             <artifactId>spring-jdbc</artifactId>
 20             <version>3.2.8.RELEASE</version>
 21         </dependency>
 22         
 23         <!-- mybatis -->
 24         <dependency>
 25             <groupId>org.mybatis</groupId>
 26             <artifactId>mybatis</artifactId>
 27             <version>3.2.8</version>
 28         </dependency>
 29         <dependency>
 30             <groupId>org.mybatis</groupId>
 31             <artifactId>mybatis-spring</artifactId>
 32             <version>1.2.2</version>
 33         </dependency>
 34         
 35         <!-- mysql连接驱动 -->
 36         <dependency>
 37             <groupId>mysql</groupId>
 38             <artifactId>mysql-connector-java</artifactId>
 39             <version>5.1.37</version>
 40         </dependency>
 41         
 42         <!-- javaee -->
 43         <dependency>
 44             <groupId>javaee</groupId>
 45             <artifactId>javaee-api</artifactId>
 46             <version>5</version>
 47         </dependency>
 48         
 49         <!-- dbcp数据库连接池 -->
 50         <dependency>
 51             <groupId>commons-dbcp</groupId>
 52             <artifactId>commons-dbcp</artifactId>
 53             <version>1.4</version>
 54         </dependency>
 55         
 56         <!-- json数据传输 -->
 57         <dependency>
 58             <groupId>com.fasterxml.jackson.core</groupId>
 59             <artifactId>jackson-annotations</artifactId>
 60             <version>2.2.3</version>
 61         </dependency>
 62         <dependency>
 63             <groupId>com.fasterxml.jackson.core</groupId>
 64             <artifactId>jackson-core</artifactId>
 65             <version>2.2.3</version>
 66         </dependency>
 67         <dependency>
 68             <groupId>com.fasterxml.jackson.core</groupId>
 69             <artifactId>jackson-databind</artifactId>
 70             <version>2.2.3</version>
 71         </dependency>
 72         
 73         <!-- MD5字符串加密,加密解密的工具 -->
 74         <dependency>
 75             <groupId>commons-codec</groupId>
 76             <artifactId>commons-codec</artifactId>
 77             <version>1.10</version>
 78         </dependency>
 79         
 80         <!-- log4j日志 -->
 81         <dependency>
 82             <groupId>log4j</groupId>
 83             <artifactId>log4j</artifactId>
 84             <version>1.2.12</version>
 85         </dependency>
 86         
 87         <!-- 文件上传 -->
 88         <dependency>
 89             <groupId>commons-fileupload</groupId>
 90             <artifactId>commons-fileupload</artifactId>
 91             <version>1.2.1</version>
 92         </dependency>
 93         <dependency>
 94             <groupId>commons-io</groupId>
 95             <artifactId>commons-io</artifactId>
 96             <version>2.1</version>
 97         </dependency>
 98         
 99         <!-- jstl标签 -->
100         <dependency>
101             <groupId>jstl</groupId>
102             <artifactId>jstl</artifactId>
103             <version>1.2</version>
104         </dependency>
105         <dependency>
106             <groupId>taglibs</groupId>
107             <artifactId>standard</artifactId>
108             <version>1.1.2</version>
109         </dependency>
110         
111         <!-- 测试 -->
112         <dependency>
113             <groupId>junit</groupId>
114             <artifactId>junit</artifactId>
115             <version>3.8.2</version>
116             <scope>test</scope>
117         </dependency>
118         
119         <!-- 处理事务和AOP所需的包 -->
120         <dependency>
121             <groupId>org.aspectj</groupId>
122             <artifactId>aspectjweaver</artifactId>
123             <version>1.8.2</version>
124         </dependency>
125     </dependencies>
126 </project>

 

2、配置log4j日志

log4j.proper.ties

 1 # Global logging configuration\uff0c\u5efa\u8bae\u5f00\u53d1\u73af\u5883\u4e2d\u8981\u7528debug
 2 log4j.rootLogger=DEBUG, stdout, logfile, logaFile
 3 #控制台打印日志
 4 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 5 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 6 log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%p]-[%c] %m%n
 7 #写出到日志文件,每天一个新的日志文件
 8 log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
 9 log4j.appender.logfile.File=logs/app.log 
10 log4j.appender.logfile.encoding=UTF-8
11 log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
12 log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
13 #写出到一个日志文件里 
14 log4j.appender.logaFile=org.apache.log4j.FileAppender
15 log4j.appender.logaFile.Threshold=ERROR
16 log4j.appender.logaFile.File=logs/app-error.log
17 log4j.appender.logaFile.encoding=UTF-8
18 log4j.appender.logaFile.layout=org.apache.log4j.PatternLayout
19 log4j.appender.logaFile.layout.ConversionPattern=%d %p [%c] - %m%n
20 
21 log4j.logger.srp.bapp.sys.filter.UserRoleFilter=DEBUG

 

3、配置数据连接配置文件

写url时,可以加上字符编码的设置,如第3行所示。

jdbc.properties

 1 #Mysql Conncetion
 2 #set uriEncoding
 3 #jdbc:mysql://localhost:3306/spring?useUnicode=true&amp;characterEncoding=utf-8
 4 jdbc.driver=com.mysql.jdbc.Driver
 5 jdbc.url=jdbc:mysql://127.0.0.1:3306/test
 6 jdbc.username=root
 7 jdbc.password=mysql
 8 
 9 jdbc.initSize=1
10 jdbc.maxSize=1

 

4、配置spring

配置Spring上下文设置和spring与mybatis整合的相关配置。

spring与springmvc的配置信息写成两个配置文件是为了方便在web.xml中整合spring与springmvc。

 

   spring-context.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" 
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context" 
 5     xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
 6     xmlns:jee="http://www.springframework.org/schema/jee" 
 7     xmlns:tx="http://www.springframework.org/schema/tx"
 8     xmlns:aop="http://www.springframework.org/schema/aop" 
 9     xmlns:mvc="http://www.springframework.org/schema/mvc"
10     xmlns:util="http://www.springframework.org/schema/util"
11     xsi:schemaLocation="
12         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
13         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
14         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
15         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
16         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
17         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
18         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
19         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
20     <!-- 配置组件扫描 -->
21     <context:component-scan base-package="org.ifg.bn">
22          <!--制定扫包规则,不扫描@Controller注解的Java类 -->
23         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
24     </context:component-scan>
25     
26     <!-- 加载配置文件 -->
27     <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>
28     
29     <!-- 配置连接池 -->
30     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
31         <property name="driverClassName" value="${jdbc.driver}" />
32         <property name="url" value="${jdbc.url}" />
33         <property name="username" value="${jdbc.username}" />
34         <property name="password" value="${jdbc.password}" />
35         <property name="initialSize" value="${jdbc.initSize}"/>
36         <property name="maxActive" value="${jdbc.maxSize}"/>
37     </bean>
38     
39     <!-- 配置SqlSessionFactory -->
40     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
41         <property name="dataSource" ref="dataSource"/>
42         <property name="configLocation" value="classpath:mybatis/mybatis.xml"/><!-- mybatis配置文件 -->
43         <property name="mapperLocations" value="classpath:org/ifg/bn/dao/*.xml"/><!-- 自动扫描映射文件 -->
44     </bean>
45     
46     <!-- 配置MapperScannerConfigurer自动扫描映射器 -->
47     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
48           <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!-- 此种情况下不能使用ref链接sqlSessionFactory -->
49           <property name="basePackage" value="org.ifg.bn.dao"/><!-- 注入要扫描的包,扫描Mapper映射器(接口) -->
50     </bean>
51     
52     <!-- 配置xml形式的事务管理器 -->
53     <!-- 事务管理器 -->
54     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
55         <property name="dataSource" ref="dataSource"/>
56     </bean>
57 
58     <!-- 事务通知 -->
59     <tx:advice id="txAdvice" transaction-manager="transactionManager">
60         <tx:attributes>
61             <tx:method name="save*" propagation="REQUIRED"/>
62             <tx:method name="insert*" propagation="REQUIRED"/>
63             <tx:method name="update*" propagation="REQUIRED"/>
64             <tx:method name="delete*" propagation="REQUIRED"/>
65             <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
66             <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
67             <tx:method name="load*" propagation="SUPPORTS" read-only="true"/>
68             <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
69         </tx:attributes>
70     </tx:advice>
71     
72     <!-- AOP把事务控制在Service层 -->
73     <aop:config>
74         <aop:advisor advice-ref="txAdvice" pointcut="execution(* org.ifg.bn.service.impl.*.*(..))"/>
75     </aop:config>
76     
77 </beans>

 

5、配置springmvc

spring-mvc.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" 
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context" 
 5     xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
 6     xmlns:jee="http://www.springframework.org/schema/jee" 
 7     xmlns:tx="http://www.springframework.org/schema/tx"
 8     xmlns:aop="http://www.springframework.org/schema/aop" 
 9     xmlns:mvc="http://www.springframework.org/schema/mvc"
10     xmlns:util="http://www.springframework.org/schema/util"
11     xsi:schemaLocation="
12         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
13         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
14         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
15         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
16         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
17         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
18         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
19         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
20     <!-- 配置组件扫描 -->
21     <context:component-scan base-package="org.ifg.bn">
22          <!--制定扫包规则,只扫描@Controller注解的Java类 -->
23         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
24     </context:component-scan>
25 
26     <!-- 启用注解驱动;扩充了注解驱动,可以将请求参数绑定到控制器参数 -->
27     <!-- 通过annotation-driven可以替代下面的处理器映射器和适配器 -->
28     <mvc:annotation-driven/>
29     
30     <!-- 注解处理器映射器
31          <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
32      -->
33     <!-- 注解适配器
34         <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
35      -->
36     
37     <!-- 配置ViewResolver 视图解析器 -->
38     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
39         <property name="prefix" value="/WEB-INF/"/>
40         <property name="suffix" value=".jsp"/>
41     </bean>
42     
43     <!-- 支持文件上传 -->
44     <bean id="multipartResolver" 
45         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
46         <!-- 上传文件大小上限,单位为字节(10G) -->
47         <property name="defaultEncoding" value="UTF-8"></property>
48         <property name="maxUploadSize" value="10737418240"></property>
49     </bean>
50     
51 </beans>

 

6、配置mybatis配置文件

mybatis.xml

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <settings>
 7         <!-- 开启懒加载机制 -->
 8         <setting name="lazyLoadingEnabled" value="true"/>
 9         <!-- 设置按需加载 -->
10         <setting name="aggressiveLazyLoading" value="false"/>
11         <!-- 日志框架 -->
12         <setting name="logImpl" value="LOG4J"/>
13     </settings>
14     
15     <!-- 定义别名 -->
16     <!-- 批量别名,指定扫描包的路径,自动将包下边的POJO(DTO)定义别名,别名为类名(第一个字母小写和大写都可以) -->
17     <typeAliases>
18         <package name="org.ifg.bn.dto"/>
19     </typeAliases>
20 </configuration>

 

7、配置web.xml(整合spring+springmvc)

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 5     version="2.5">
 6     <display-name>ssm_roll</display-name>
 7     <welcome-file-list>
 8         <welcome-file>index.html</welcome-file>
 9         <welcome-file>index.jsp</welcome-file>
10     </welcome-file-list>
11     
12     <!-- 编码过滤器,解决中文乱码 只针对POST提交方式有效 -->
13     <filter>
14         <filter-name>characterEncodingFilter</filter-name>
15         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
16         <init-param>
17             <param-name>encoding</param-name>
18             <param-value>UTF-8</param-value>
19         </init-param>
20     </filter>
21     <filter-mapping>
22         <filter-name>characterEncodingFilter</filter-name>
23         <url-pattern>/*</url-pattern>
24     </filter-mapping>
25     
26     <!-- 配置spring核心监听器 -->
27     <context-param>
28        <param-name>contextConfigLocation</param-name>
29        <param-value>classpath:spring/spring-context.xml</param-value>
30     </context-param>
31     <listener>
32        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
33     </listener>
34 
35     <!-- 配置springmvc的前端控制器 -->
36     <servlet>
37         <servlet-name>springmvc</servlet-name>
38         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
39         <init-param>
40             <param-name>contextConfigLocation</param-name>
41             <param-value>classpath:spring/spring-mvc.xml</param-value>
42         </init-param>
43         <load-on-startup>1</load-on-startup>
44     </servlet>
45     <servlet-mapping>
46         <servlet-name>springmvc</servlet-name>
47         <url-pattern>*.do</url-pattern>
48     </servlet-mapping>
49     
50     <!-- 配置session超时时间,单位分钟 -->
51     <session-config>
52         <session-timeout>15</session-timeout>
53     </session-config>
54     
55 </web-app>

 

8、编写实体类(DTO(Data Transfer Object)数据传输对象)

User.java

 1 package org.ifg.bn.dto;
 2 
 3 import java.util.Date;
 4 
 5 public class User {
 6     private String username;
 7     private String realname;
 8     private String password;
 9     private Date birth;
10     private String addr;
11 
12     public User() {
13         super();
14     }
15 
16     public User(String username, String realname, String password, Date birth, String addr) {
17         super();
18         this.username = username;
19         this.realname = realname;
20         this.password = password;
21         this.birth = birth;
22         this.addr = addr;
23     }
24 
25     public String getUsername() {
26         return username;
27     }
28 
29     public void setUsername(String username) {
30         this.username = username;
31     }
32 
33     public String getRealname() {
34         return realname;
35     }
36 
37     public void setRealname(String realname) {
38         this.realname = realname;
39     }
40 
41     public String getPassword() {
42         return password;
43     }
44 
45     public void setPassword(String password) {
46         this.password = password;
47     }
48 
49     public Date getBirth() {
50         return birth;
51     }
52 
53     public void setBirth(Date birth) {
54         this.birth = birth;
55     }
56 
57     public String getAddr() {
58         return addr;
59     }
60 
61     public void setAddr(String addr) {
62         this.addr = addr;
63     }
64 
65     @Override
66     public String toString() {
67         return "User [username=" + username + ", realname=" + realname + ", password=" + password + ", birth=" + birth
68                 + ", addr=" + addr + "]";
69     }
70 
71 }

9、DAO层

UserDAO.java

package org.ifg.bn.dao;

import org.ifg.bn.dto.User;

public interface UserDAO {

    User findUser(User user);
    
}
/*
 * 如果spring的配置文件中配置了映射器的自动扫描。就不需要在dao层上面进行配置@Repository注解
 * 
 */

映射文件 UserDAO.xml 

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <mapper namespace="org.ifg.bn.dao.UserDAO">
 6 
 7     <select id="findUser" parameterType="User" resultType="User">
 8         SELECT * FROM user u WHERE u.username=#{username} and u.password=#{password}
 9     </select>
10 
11 </mapper>

 

10、编写Service层

UserService.java

 1 package org.ifg.bn.service;
 2 
 3 import org.ifg.bn.dto.User;
 4 
 5 public interface UserService {
 6 
 7     /**
 8      * 用户登录
 9      * @param user
10      * @return
11      */
12     User login(User user);
13     
14 }

UserServiceImpl.java

 1 package org.ifg.bn.service.impl;
 2 
 3 import org.ifg.bn.dao.UserDAO;
 4 import org.ifg.bn.dto.User;
 5 import org.ifg.bn.service.UserService;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Service;
 8 
 9 @Service
10 public class UserServiceImpl implements UserService {
11 
12     @Autowired
13     private UserDAO userDAO;
14     
15     
16     public User login(User user) {
17         user.setPassword(user.getPassword());
18         User resUser = userDAO.findUser(user);
19         return resUser;
20     }
21 
22 }

 

11、编写Controller层

UserController.java

 1 package org.ifg.bn.controller;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpSession;
 5 
 6 import org.apache.commons.logging.Log;
 7 import org.apache.commons.logging.LogFactory;
 8 import org.ifg.bn.dto.User;
 9 import org.ifg.bn.service.UserService;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.stereotype.Controller;
12 import org.springframework.web.bind.annotation.RequestMapping;
13 import org.springframework.web.bind.annotation.RequestMethod;
14 import org.springframework.web.bind.annotation.ResponseBody;
15 
16 @Controller
17 @RequestMapping("/sys")
18 public class UserController {
19     
20     private static final Log logger = LogFactory.getLog(UserController.class);
21 
22     @Autowired
23     private UserService userService;
24     
25     /**
26      * 进入登录页面
27      * @return
28      */
29     @RequestMapping("/tologin.do")
30     public String toLogin() {
31         logger.info("进入登录页面");
32         return "login";
33     }
34     
35     /**
36      * 登录操作
37      * @param user
38      * @return
39      */
40     @RequestMapping(value="/login.do", method=RequestMethod.POST)
41     @ResponseBody
42     public String login(User user,HttpServletRequest request,HttpSession session){
43         logger.info("开始登录");
44         String allPath = request.getRequestURL().toString();
45         String appName = allPath.substring(0, allPath.indexOf(request.getServletPath()));
46         session.setAttribute("appName", appName);
47         User resUser = userService.login(user);
48         if (resUser != null){
49             session.setAttribute("loginUser", user);
50             return "true";
51         }else{
52             logger.error("登录失败");
53             return "false";
54         }
55     }
56     
57     /**
58      * 系统首页
59      * @return
60      */
61     @RequestMapping("/toindex.do")
62     public String toIndex() {
63         logger.info("进入系统首页");
64         return "index";
65     }
66     
67     /**
68      * 登录失败页面
69      * @return
70      */
71     @RequestMapping("/toerror.do")
72     public String toError() {
73         logger.info("登录失败,跳转错误页面");
74         return "error";
75     }
76 
77 }

 

12、前端页面

需要先导入jquery.js文件。

 

  login.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html>
 4 <html lang="zh-CN">
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <script src="../js/jquery-1.12.2.js"></script>
 8 <title>登录</title>
 9 </head>
10 <body>
11     <div>
12         <form class="cus-form">
13             <table>
14                 <tr>
15                     <td><label>用户名:</label></td>
16                     <td><input type="text" name="username" id="username"></td>
17                 </tr>
18                 <tr>
19                     <td><label>密码:</label></td>
20                     <td><input type="password" name="password" id="password"></td>
21                 </tr>
22                 <tr>
23                     <td><input type="button" value="登录" onclick="login();"></td>
24                 </tr>
25             </table>
26         </form>
27     </div>
28     <script type="text/javascript">
29         $(document).ready(function(){
30             //监听Enter按键 
31             $('body').keydown(function(e){
32                 if(e.keyCode === 13){
33                     login();
34                 }
35             });
36         })
37        
38         //使用JQuery的ajax方法进行异步提交登录
39         function login() {
40             $.ajax({
41                 url : 'login.do',
42                 data : $('form').serialize(),
43                 dataType : 'json',
44                 type : 'post',
45                 success : function(data) {
46                     if (data == true) { //登陆成功
47                         window.location.href = '${appName}/sys/toindex.do';
48                     } else {
49                         window.location.href = '${appName}/sys/toerror.do';
50                     }
51                 }
52             });
53         }
54     </script>
55 </body>
56 </html>

error.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <!DOCTYPE html>
 3 <html lang="zh-CN">
 4 <head>
 5 <title>登录失败页面</title>
 6 <script language="javascript" type="text/javascript">
 7     var timer;
 8     //启动跳转的定时器
 9     function startTimes() {
10         timer = window.setInterval(showSecondes, 1000);
11     }
12 
13     var i = 5;
14     function showSecondes() {
15         if (i > 0) {
16             i--;
17             document.getElementById("secondes").innerHTML = i;
18         } else {
19             window.clearInterval(timer);
20             location.href = "${appName}/sys/tologin.do";
21         }
22     }
23 
24     //取消跳转
25     function resetTimer() {
26         if (timer != null && timer != undefined) {
27             window.clearInterval(timer);
28             location.href = "${appName}/sys/tologin.do";
29         }
30     }
31 </script>
32 </head>
33 <body class="error_page" onload="startTimes();">
34     <h1 id="error">
35         遇到错误,&nbsp;<span id="secondes">5</span>&nbsp;秒后将自动跳转,立即跳转请点击&nbsp; <a
36             href="javascript:resetTimer();">返回</a>
37     </h1>
38 </body>
39 </html>

index.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
 2 <!DOCTYPE html>
 3 <html lang="zh-CN">
 4 <head>
 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 6 <title>Index</title>
 7 </head>
 8 <body>
 9     <h4>SSM 框架整合</h4>
10     <h2>登录成功</h2>
11     <h2>欢迎<span style="color: blue;">${sessionScope.loginUser.username}</span>登录</h2>
12     <p>${appName }</p>
13 </body>
14 </html>

13、user表结构

user.sql

 1 /*
 2 Navicat MySQL Data Transfer
 3 
 4 Source Server         : mysql
 5 Source Server Version : 50639
 6 Source Host           : 127.0.0.1:3306
 7 Source Database       : test
 8 
 9 Target Server Type    : MYSQL
10 Target Server Version : 50639
11 File Encoding         : 65001
12 
13 Date: 2018-02-11 21:18:44
14 */
15 
16 SET FOREIGN_KEY_CHECKS=0;
17 
18 -- ----------------------------
19 -- Table structure for user
20 -- ----------------------------
21 DROP TABLE IF EXISTS `user`;
22 CREATE TABLE `user` (
23   `username` varchar(32) NOT NULL COMMENT '用户名',
24   `realname` varchar(64) NOT NULL COMMENT '真实姓名',
25   `password` varchar(64) NOT NULL COMMENT '密码',
26   `birth` date DEFAULT NULL COMMENT '出生日期',
27   `addr` varchar(255) DEFAULT NULL COMMENT '住址',
28   PRIMARY KEY (`username`)
29 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

14、部署项目

14、运行截图

登录页面:

登录失败页面:

 

登录成功页面:

 至此,一个简单的SSM模板项目编写完成!

posted @ 2018-02-11 21:39  IFGVBN  阅读(786)  评论(0)    收藏  举报