struts2+Hibernate实现用户登陆功能
生活随笔
收集整理的這篇文章主要介紹了
struts2+Hibernate实现用户登陆功能
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)現(xiàn)的功能,在登陸頁面輸入U(xiǎn)sername和PassWord后,將username和password通過Hibernate匹對(duì)數(shù)據(jù)庫是否含有一樣的username和password,若有則登陸進(jìn)去,若沒有則返回到登陸頁面
顯示層
<%@ page language="java" contentType="text/html; charset=GB18030"pageEncoding="GB18030"%> <%@taglib prefix="s" uri="/struts-tags"%> <!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=GB18030"> <title>Insert title here</title> </head> <body><form action="userlogin">用戶名:<input type="text" name="username"><br/>密碼:<input type="password" name="password"><br/><input type="submit" value="submit"><input type="reset" value="reset"></form> </body> </html>?
model層
User
package com.zs.model;public class User {private String username;private String password;private Short sex;private String email;private String address;private String grade;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 Short getSex() {return sex;}public void setSex(Short sex) {this.sex = sex;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;} }User.hbm.xml:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Generated 2014-12-14 14:51:48 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping><class name="com.zs.model.User" table="USER"><id name="username" type="java.lang.String"><column name="USERNAME" /><generator class="assigned" /></id><property name="password" type="java.lang.String"><column name="PASSWORD" /></property><property name="sex" type="java.lang.Short"><column name="SEX" /></property><property name="email" type="java.lang.String"><column name="EMAIL" /></property><property name="address" type="java.lang.String"><column name="ADDRESS" /></property><property name="grade" type="java.lang.String"><column name="GRADE" /></property></class> </hibernate-mapping>?
Hibernate:
配置hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration><session-factory><!--連接數(shù)據(jù)庫的配置--><property name="connection.username">root</property><property name="connection.password">root</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql:///hibernate</property><property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property><property name="show_sql">true</property><property name="hibernate.format_sql">true</property><property name="hibernate.hbm2ddl.auto">update</property><!--數(shù)據(jù)庫映射Java用戶--><mapping resource="com/zs/model/User.hbm.xml" /></session-factory> </hibernate-configuration>?
Struts:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="default" extends="struts-default"><!--登陸主頁面時(shí)候的Action--><action name="index"><result>/index.jsp</result></action><!--在index.jsp提交submit后若登陸成功則轉(zhuǎn)到adminlogin,否則轉(zhuǎn)到index--><action name="userlogin" class="com.zs.web.admin.AdminLoginAction"><result name="success">/admin/adminlogin.jsp</result><result name="input">/index.jsp</result></action></package></struts>?
Action:
package com.zs.web.admin;import java.util.Map;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionSupport; import com.zs.dao.UserDao; import com.zs.dao.impl.UserDaoImpl; import com.zs.model.User;public class AdminLoginAction extends ActionSupport implements SessionAware {/*** */private static final long serialVersionUID = 1L;UserDao dao = new UserDaoImpl();private String username;private String password;private Map<String,Object> session;public String execute(){User user = dao.isValidAdmin(username, password);//將username和password傳遞到dao層交個(gè)hibernate判斷if(user!=null){session.put("user", user);//若登陸成功則將該user記錄在session中return SUCCESS;}else{addActionError("你沒有管理權(quán)限");return INPUT;}}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 Map getSession() {return session;}public void setSession(Map session) {this.session = session;}}?
判斷用戶和密碼是否存在于數(shù)據(jù)庫中
package com.zs.dao.impl;import java.util.List;import com.zs.dao.BaseDaoImpl; import com.zs.dao.UserDao; import com.zs.model.User;public class UserDaoImpl extends BaseDaoImpl implements UserDao {@Overridepublic void saveUser(User user) {// TODO Auto-generated method stub }@Overridepublic List<User> getAll(Class clazz) {// TODO Auto-generated method stubreturn null;}@Overridepublic User isValidUser(String username, String password) {// TODO Auto-generated method stubreturn null;}//判斷數(shù)據(jù)庫中時(shí)候含有該用戶 @Overridepublic User isValidAdmin(String username, String password) {User user = null;//調(diào)用hibernateList<User> list =super.search("FROM User WHERE grade='admin' AND username ='"+username+"' AND password = '"+password+"'");if(list!=null && list.size()>0){//若找到的list不為空那么則說明數(shù)據(jù)庫中包含這個(gè)人user = list.get(0);}return user;}}?
Hibernate初始化借口并且從數(shù)據(jù)庫中取數(shù)據(jù)
package com.zs.dao;import java.util.List;import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder;public class BaseDaoImpl implements IBaseDao {private SessionFactory sessionFactory;private Session session;private Transaction transaction;//初始session接口public void init(){Configuration configuration = new Configuration().configure();ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();sessionFactory = configuration.buildSessionFactory(serviceRegistry);session = sessionFactory.openSession();transaction = session.beginTransaction();}@Overridepublic Session getSession() {init();return session;}@Overridepublic void closeSession() {session.close();}@Overridepublic List search(String hql) {//調(diào)用session接口Session session = null;session = getSession();List alist = null;alist = session.createQuery(hql).list();//從數(shù)據(jù)庫中查詢 session.close();return alist;}}?
?
可以先建好一個(gè)名為User的數(shù)據(jù)庫,設(shè)置一個(gè)用戶,然后便可以測(cè)試了
完整代碼可以在我github下載:https://github.com/calmound/web/tree/master/web
總結(jié)
以上是生活随笔為你收集整理的struts2+Hibernate实现用户登陆功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Hibernate系列—] 2. 创建
- 下一篇: Struts2 Hibernate Sp