开发工具: 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 {@Autowiredprotected 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 {@Autowiredprivate 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 {@Autowiredprivate IUserDao userDao;public User getUserInfoByName(String name){return userDao.getUserInfoByName(name);}
}

==================================================================================================

login.jsp

<%--Created by IntelliJ IDEA.User: forworDate: 2018/8/27Time: 17:32To 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();//遍历cookiesif (cookies != null) {for (Cookie cookie : cookies) {if (cookie.getName().equals("userInfo")) {String ui = cookie.getValue(); //zhangsan:123up = 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

spring4+hibernate4+springmvc+nginx+redis实现session共享相关推荐

  1. SpringBoot笔记:SpringBoot2.3集成SpringSession+nginx+redis实现session共享

    文章目录 Spring Session介绍 Redis集成 yml配置 依赖添加 redis存值查看 登录服务器查看redis的值 查询所有"spring:session:"开头的 ...

  2. Tomcat通过Redis实现session共享的完整部署记录

    对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为在客户端每 ...

  3. 单点登录实现(spring session+redis完成session共享)

    一.前言 项目中用到的SSO,使用开源框架cas做的.简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩. 二.工程结构 我模拟了 sso的客户端和s ...

  4. php 获取cookieid,Redis实现Session共享详解

    Redis实现Session共享 这几天在做session共享这么一个小模块,也查了好多资料,给我的感觉,就是太乱了,一直找不到我想要的东西,几乎全部实现方法都与我的想法不一样,在这里,我总结一下自己 ...

  5. Tomcat集群通过redis实现session共享

    Tomcat集群通过redis实现session共享 最近在XXX项目上做了tomcat集群的session共享,闲来无事鄙人将整个踩坑的过程粗糙的记录下来,给同学们分享一波,整个过程无硬编码,爽歪歪 ...

  6. tomcat集群redis配置session共享

    针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共享:下载JDK7.tomcat7以备后续测试: 一.下载tomcat-red ...

  7. 使用Shiro+Redis实现Session共享

    章节目录 1. 为什么要实现Session共享? 1.1 负载均衡 1.2 负载均衡中的Session问题 1.3 案例演示 2. Shiro架构 3. Shiro集成Redis 1. 为什么要实现S ...

  8. 分布式中使用 Redis 实现 Session 共享(中)

    http://blog.jobbole.com/91874/ 原文出处: 焰尾迭   欢迎分享原创到伯乐头条 上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最 ...

  9. nginx负载均衡session共享

    文章目录 一.可道云项目结合redis缓存部署 redis缓存可道云项目数据及会话,加快网站访问速度 二.Nginx负载均衡会话共享 1.1 什么是会话保持 1.2 为什么需要会话保持 1.3 Coo ...

最新文章

  1. 第六届数学、计算机与生命科学交叉研究青年学者论坛 (大牛云集的生信会议,免注册费且提供午餐)...
  2. YARN执行作业报错Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out.
  3. react列表元素hover
  4. LoRa技术实现水表抄表远距离无线传输方案的应用
  5. SIT与UAT的分别
  6. C++ 标准函数库 —— 文件的输入输出 (Input/Output with files)
  7. windows 禁用ipv6服务_39.Dism++ Windows系统简洁优化
  8. 解决: Vue 项目本地运行 run 与服务器上 build 样式不一致,build 后样式不生效
  9. 问题 A: 编写函数:比较三个数大小 (Append Code)
  10. UI自定义UITableView的右侧索引
  11. 再续2014年网页设计趋势
  12. 编译gcc5.1.0时的报错
  13. 微软Win11 商店各个应用可单独下载
  14. 小甲鱼C语言课程学习之P1-P7
  15. 解决ios微信小程序弹框点击穿透问题
  16. Ubuntu 安装之后无法连接网络问题
  17. 《计算机应用基础》在线考核,2019年秋季考试《计算机应用基础》在线考核试题 在Excel 2010中为了取消分类汇总的操作必须...
  18. dau计算公式_手游LTV(用户终生价值)计算公式
  19. 第一章 Activity的生命周期和启动模式
  20. Facebook全球争夺工智能人才,看上了中国高校

热门文章

  1. 【夏目鬼鬼分享】centos7安装rabbitmq
  2. 4.15 最短路 题
  3. 蓝桥杯重点(C/C++)(随时更新,更新时间:2023.2.9)
  4. 专门画像素图的软件_新世纪像素画设计软件,你值得一试!
  5. 2016年4月编程语言排行榜 Visual Basic正渐行渐远
  6. 树莓派ssh远程连接
  7. java使用freemarker实现word下载
  8. HTML5期末大作业:动漫网站设计——斗破苍穹动漫(6页)带轮播特效 HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品
  9. PicGo配置(gitee)
  10. gdb调试器之测不准原则