开发工具: intellJ idea
框架版本:spring4.3,hibernate4.3
新建maven项目,项目结构如下图:
直接上代码:
User.java:
package com.ssh.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* Created by forwor on 2018/8/27.
*/
@Entity
@Table(name="T_USER")
public class User {
@Id
@GeneratedValue(generator="id")
@GenericGenerator(name = "id",strategy="identity")
private Integer id;
@Column(name="user_name")
private String userName;
@Column(name="password")
private String password;
@Column(name="age")
private int age;
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;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
==================================================================================================
IUserDao.java:
package com.ssh.entity.dao;
import com.ssh.entity.User;
/**
* Created by forwor on 2018/8/27.
*/
public interface IUserDao {
public User getUserInfoByName(String name);
}
==================================================================================================
UserDao.java:
package com.ssh.entity.dao.impl;
import com.ssh.entity.User;
import com.ssh.entity.dao.IUserDao;
import com.util.base.BaseDao;
import org.springframework.stereotype.Repository;
import org.hibernate.Query;
import org.springframework.transaction.annotation.Propagation;
/**
* Created by forwor on 2018/8/27.
*/
@Repository("userDao")
public class UserDao extends BaseDao implements IUserDao {
public User getUserInfoByName(String name) {
String hql = "from User where userName = '"+name+"'";
Query query = sessionFactory.getCurrentSession().createQuery(hql);
return (User) query.uniqueResult();
}
}
=================================================================================================
BaseDao.java
package com.util.base;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import java.io.Serializable;
/**
* Created by forwor on 2018/8/27.
*/
public class BaseDao {
@Autowired
protected SessionFactory sessionFactory;
public Session getSession(){
return sessionFactory.openSession();
}
}
================================================================================================
LoginController.java:
package com.ssh.loginmana.action;
import com.ssh.entity.User;
import com.ssh.loginmana.ser.ILoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.UUID;
/**
* Created by forwor on 2018/8/27.
*/
@Controller
public class LoginController {
@Autowired
private ILoginService loginService;
// Log log = LogFactory.getLog(this.getClass());
@RequestMapping(value="/login", method= RequestMethod.POST)
public String login(@ModelAttribute User user, Model model, HttpSession session, HttpServletRequest request) {
if(user.getUserName() == null || user.getPassword() == null) {
return "failure";
}
System.out.println("---------------"+user.getUserName());
User loginUser = loginService.getUserInfoByName(user.getUserName());
if (loginUser == null) {
model.addAttribute("error", true);
model.addAttribute("message", "用户不存在。");
return "failure";
}
if(!user.getPassword().equals(loginUser.getPassword())) {
model.addAttribute("error", true);
model.addAttribute("message", "用户名或密码错误。");
return "failure";
}
//request.getSession().setAttribute("USER", user);
String token = UUID.randomUUID().toString();
System.out.println(token);
session.setAttribute("id", token);
session.setAttribute("login", true);
session.setAttribute("token", token);
session.setAttribute("loginDate",new Date());
session.setAttribute(user.getUserName(), token);
return "login_success";
}
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(Model model) throws Exception{
model.addAttribute("", new User());
return "login";
}
}
===============================================================================================
ILoginService.java:
package com.ssh.loginmana.ser;
import com.ssh.entity.User;
/**
* Created by forwor on 2018/8/27.
*/
public interface ILoginService {
public User getUserInfoByName(String name);
}
===============================================================================================
LoginService.java:
package com.ssh.loginmana.ser.impl;
import com.ssh.entity.User;
import com.ssh.entity.dao.IUserDao;
import com.ssh.loginmana.ser.ILoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* Created by forwor on 2018/8/27.
*/
@Service("loginService")
public class LoginService implements ILoginService {
@Autowired
private IUserDao userDao;
public User getUserInfoByName(String name){
return userDao.getUserInfoByName(name);
}
}
==================================================================================================
login.jsp
<%--
Created by IntelliJ IDEA.
User: forwor
Date: 2018/8/27
Time: 17:32
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆</title>
</head>
<body>
<form action="login.fw" method="post">
<p>这里是8181端口</p>
<%
String[] up = {};
//获取所有的cookie信息
Cookie[] cookies = request.getCookies();
//遍历cookies
if (cookies != null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("userInfo")) {
String ui = cookie.getValue(); //zhangsan:123
up = ui.split(":");
}
}
}
%>
用户名:<input type="text" name="userName" value="lien"><br>
密码:<input type="text" name="password" value="123456"><br>
<input type="submit" value="登陆">
</form>
</body>
</html>
================================================================================================
login-success.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>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆成功</title>
</head>
<body>
登陆成功,当前位于Tomcat7页面
<BR>
SessionID:<%=session.getId()%>
<BR>
SessionIP:<%=request.getServerName()%>
<BR>
SessionPort:<%=request.getServerPort()%>
<BR>
LoginTime:<%=session.getAttribute("loginDate")%>
</body>
</html>
=================================================================================================
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>jsp/login.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!--加载Spring的配置文件到上下文中去-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
</param-value>
</context-param>
<!-- spring MVC config start-->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 此处指向的的是SpringMVC的配置文件 -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--配置容器在启动的时候就加载这个servlet并实例化-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.fw</url-pattern>
</servlet-mapping>
<!-- spring MVC config end-->
<!-- Spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 字符集过滤 -->
<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>
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>Scutiry Filter</filter-name>
<filter-class>com.ssh.sysmana.SecuFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Scutiry Filter</filter-name>
<url-pattern>*.fw</url-pattern>
</filter-mapping>
<filter>
<filter-name>SpringOpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SpringOpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
================================================================================================
依赖包: pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.forwor</groupId>
<artifactId>ssh_nginx_redis_session</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 本人将配置包的版本信息都统一放入此处,方便以后管理-->
<properties>
<spring.version>4.3.1.RELEASE</spring.version>
<hibernateVersion>4.3.5.Final</hibernateVersion>
<jstlVersion>1.2</jstlVersion>
<taglibVersion>1.1.2</taglibVersion>
<servletVersion>3.0-alpha-1</servletVersion>
<jsonVersion>1.9.8</jsonVersion>
<jacksonVersion>2.5.0</jacksonVersion>
<mysqlVersion>5.1.38</mysqlVersion>
<c3p0Version>0.9.1.2</c3p0Version>
<log4jVersion>1.2.17</log4jVersion>
<fileuploadVersion>1.3.1</fileuploadVersion>
<lombokVersion>1.16.10</lombokVersion>
</properties>
<dependencies>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--spring start-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jms -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>3.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--spring end-->
<!-- hibernate配置-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<!-- hibernate 缓存, 视情况添加-->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>${hibernateVersion}</version>
</dependency>
<!-- jsp页面使用的jstl支持-->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstlVersion}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibVersion}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${servletVersion}</version>
<scope>provided</scope>
</dependency>
<!-- DataBase数据库连接 mysql包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysqlVersion}</version>
</dependency>
<!-- 数据库连接池-->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0Version}</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<!-- json数据 使springMVC可以返回json值 ,视情况添加-->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jsonVersion}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<!-- Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jacksonVersion}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jacksonVersion}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jacksonVersion}</version>
</dependency>
<!-- log4j配置, 视情况添加-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4jVersion}</version>
</dependency>
<!--文件 上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>${fileuploadVersion}</version>
</dependency>
<!-- lombok插件导包-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombokVersion}</version>
<scope>provided</scope>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.3.1.RELEASE</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
demo下载路径:https://download.csdn.net/download/qingyou193301/10631715