struts2+Hibernate实现用户登陆功能
实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若没有则返回到登陆页面
显示层
<%@ 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.hbm.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>
<!--连接数据库的配置-->
<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>
<!--数据库映射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">
<!--登陆主页面时候的Action-->
<action name="index">
<result>/index.jsp</result>
</action>
<!--在index.jsp提交submit后若登陆成功则转到adminlogin,否则转到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层交个hibernate判断
if(user!=null){
session.put("user", user);//若登陆成功则将该user记录在session中
return SUCCESS;
}else{
addActionError("你没有管理权限");
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;
} }
判断用户和密码是否存在于数据库中
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 { @Override
public void saveUser(User user) {
// TODO Auto-generated method stub } @Override
public List<User> getAll(Class clazz) {
// TODO Auto-generated method stub
return null;
} @Override
public User isValidUser(String username, String password) {
// TODO Auto-generated method stub
return null;
} //判断数据库中时候含有该用户
@Override
public User isValidAdmin(String username, String password) {
User user = null;
//调用hibernate
List<User> list =super.search("FROM User WHERE grade='admin' AND username ='"+username+"' AND password = '"+password+"'");
if(list!=null && list.size()>0){//若找到的list不为空那么则说明数据库中包含这个人
user = list.get(0);
}
return user;
} }
Hibernate初始化借口并且从数据库中取数据
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();
}
@Override
public Session getSession() {
init();
return session;
} @Override
public void closeSession() {
session.close(); } @Override
public List search(String hql) {
//调用session接口
Session session = null;
session = getSession();
List alist = null;
alist = session.createQuery(hql).list();//从数据库中查询
session.close();
return alist;
} }
可以先建好一个名为User的数据库,设置一个用户,然后便可以测试了
完整代码可以在我github下载:https://github.com/calmound/web/tree/master/web
struts2+Hibernate实现用户登陆功能的更多相关文章
- 使用Struts框架,实现用户登陆功能
前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...
- struts2+hibernate整合-实现登录功能
最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目.其他不多说,直接看例子. 1).Struts2 和hibernate的环境配置 包括jar包.web ...
- 用java实现一个简单的单用户登陆功能的思路
引用 所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A ...
- 使用Struts2+Hibernate开发学生信息管理功能1
第一章:Struts2与Hibernate整合 1.课程简介 2.界面原型演示 3.Struts2与Hibernate整合 4.创建实体类 5.生成实体映射文件 6.生成表结构 1.课程简介 Stru ...
- PHP会话(Session)实现用户登陆功能 转自#落人间#
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- 使用jsp+javabean完成用户登陆功能
User.java package com.po; public class User implements java.io.Serializable { private String usernam ...
- PHP会话(Session)实现用户登陆功能
对比起 Cookie,Session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制,本文简单介绍 Session 的使用. 由于 Session 是以文本文件形式存储在 ...
- 自动化测试(二)如何用python写一个用户登陆功能
需求信息: 写一个判断登录的程序: 输入: username password 最大错误次数是3次,输入3次都没有登录成功,提示错误次数达到上限 需要判断输入是否为空,什么也不输入,输入一个空格.n个 ...
- jsp应用-实现用户登陆功能
项目结构 1.login.jsp 这个没什么好说的,把表单提交到校验页面进行校验 2.首先获取request域中user,password,然后进行校验,校验成功把信息存入session域,然后转发到 ...
随机推荐
- 基于注解配置的Spring MVC 简单的HelloWorld实例应用
2.1 问题 使用注解的方式重构helloworld应用案例. 2.2 方案 1. @RequestMapping注解应用 @RequestMapping可以用在类定义和方法定义上,它标明这个类或方法 ...
- 编译流程,C开发常见文件类型名
编译流程 我们常说的编译是一个整体的概念,是指从源程序到可执行程序的整个过程,实际上,C语言编译的过程可以进一步细分为预编译->编译->汇编->链接 预编译是把include关键字所 ...
- Aptana studio 3前端开发编辑器推荐
直接进入主题,先上图 这就是我Apatana studio 3的默认界面,推荐此工具的原因主要有以下几点: 1.可以集成Emmet,快速编写HTML+CSS,做到效率倍增. 2.Jquery 自动完成 ...
- GUID分区与MBR分区
1.MBR分区表类型的磁盘主引导记录(Master Boot Record,缩写:MBR),又叫做主引导扇区,它仅仅包含一个64个字节的硬盘分区表.由于每个分区信息需要16个字节,所以对于采用MBR型 ...
- PHP通过串口发短信
随技术进步,短信收发领域按时间先后产生了三种模式:BLOCK MODE,基于AT指令的TEXT MODE,基于AT指令的PDU MODE.其中,TEXT MODE比较简单,多款诺基亚手机均支持此款模式 ...
- Excel scientific notation issue
This is a known issue, you can find more in internet. Excel will treat text(can display with num ...
- (转)u3d设计模式
Unity3d中UI开发的MVC模式 ,和游戏开发的其他模块类似,UI一般需要通过多次迭代开发,直到用户体验近似OK.另外至关重要的是, 我们想尽快加速迭代的过程.使用MVC模式来进行设计,已经被业界 ...
- js制作倒计时效果
该程序可以计算任意指定的两个日期中间的差值. 本例子的指定日期是2017年1月1日,当前时间是2016年10月21日:计算它们之间的差值,在网页上显示如图所示: 关键部分代码: var nowtime ...
- windows下如何安装jira
---恢复内容开始--- 准备工作: 1.安装jdk,详细不在介绍 2.建立jira帐号:https://id.atlassian.com/login?application=mac&cont ...
- selenium操作滚动条的几种方式
1.操作滚动条到当前可见视图的元素位置 WebElement element = dr.findElement(By.id("4")); ((JavascriptExecutor) ...