spring4+hibernate4+springmvc+nginx+redis实现session共享
開發(fā)工具: intellJ idea
框架版本:spring4.3,hibernate4.3
?
新建maven項(xiàng)目,項(xiàng)目結(jié)構(gòu)如下圖:
直接上代碼:
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", "用戶名或密碼錯(cuò)誤。");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> 登陸成功,當(dāng)前位于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><!--配置容器在啟動(dòng)的時(shí)候就加載這個(gè)servlet并實(shí)例化--><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監(jiān)聽器 --><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><!-- 本人將配置包的版本信息都統(tǒng)一放入此處,方便以后管理--><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><!-- 單元測(cè)試 --><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數(shù)據(jù)庫(kù)連接 mysql包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysqlVersion}</version></dependency><!-- 數(shù)據(jù)庫(kù)連接池--><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數(shù)據(jù) 使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對(duì)象轉(zhuǎn)換成json對(duì)象和xml文檔,同樣也可以將json、xml轉(zhuǎn)換成Java對(duì)象--><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插件導(dǎo)包--><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
?
總結(jié)
以上是生活随笔為你收集整理的spring4+hibernate4+springmvc+nginx+redis实现session共享的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟天文台主节点成功上云
- 下一篇: 超级计算机紫金,紫金山天文台将用“天河一