最近一直学习struts2+hibernate框架,于是想把两个框架整合到一起,做一个小的登录项目。其他不多说,直接看例子。

1)、Struts2 和hibernate的环境配置

  包括jar包、web.xml以及hibernate.cfg.xml的配置,前面的文章有详细的讲述,这里就不在一一叙述。

2)、登录界面实现(使用了bootstrap自适应框架,详细内容见官网http://www.bootcss.com/)

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
<link rel="stylesheet" href="styles/bootstrap.min.css">
<link rel="stylesheet" href="styles/MyOwn.css">
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="navbar-header"></div>
</nav>
<div class="login-page center-block">
<div class="center-container">
<h2 class="color text-center">登录系统</h2>
<form class="form-horizontal center-block" role="form"
action="login.action">
<div class="form-group ">
<label class="col-sm-2 control-label">用户名</label>
<div class="col-sm-8">
<input type="text" class="form-control col-lg-sm" id="name"
name="username" placeholder="用户名">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">密码</label>
<div class="col-sm-8">
<input type="password" class="form-control" id="inputPassword3"
name="pwd" placeholder="密码">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox col-sm-5">
<label> <input type="checkbox"> 记住密码
</label>
</div>
<a class=" col-sm-4 control-label" href="register.html">新用户注册</a>
</div>
</div>
<div class="form-group ">
<div class="col-sm-8 col-sm-offset-2">
<button type="submit" class="btn btn-primary btn-block" id="btn">登录</button>
</div>
</div>
</form>
</div>
</div>
</body>

3)、生成实体类的对象关系映射文件,用户( User.java)以及对应的User.hbm.xml

package com.entity;

public class User {
private Integer id;
private String username;
private String pwd; 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 getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
}
public User(String username,String pwd) {
this.username = username;
this.pwd = pwd;
}
public User() {
// TODO Auto-generated constructor stub
}
}
<?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 2016-11-26 16:32:02 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.entity.User" table="USER">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="USERNAME" />
</property>
<property name="pwd" type="java.lang.String">
<column name="PWD" />
</property>
</class>
</hibernate-mapping>

4)、创建用户自定义SessionFactory工厂(Hibernateutil.java)

package com.util;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration; public class Hibernateutil {
private static SessionFactory sessionFactory = null; // 采用单例模式
private Hibernateutil() {
} public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
// 创建Configuration对象:对应hibernate的基本配置信息和对象关系映射信息
Configuration config = new Configuration().configure();
// 创建一个对象StandardServiceRegistry,configure("你的***.cfg.xml"),默认为hibernate.cfg.xml
StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
.configure().build();
// 创建会话工厂对象
sessionFactory = config.buildSessionFactory(registry);
return sessionFactory;
} else
return sessionFactory;
} }

5)、创建用户业务逻辑接口和类(UserImpl.java和UserDao.java)

UserImpl.java

package com.service.impl;

import com.entity.User;

//用户业务逻辑接口
public interface UserImpl {
// login登录
public boolean Login(User user);
  //注册
public boolean Register(User user);
}

UserDao.java

package com.service.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query; import com.entity.User;
import com.service.impl.UserImpl;
import com.util.Hibernateutil; public class UserDao implements UserImpl {
private Transaction ts = null;
private String sql = "";
private Session session = null; @Override
public boolean Login(User user) {
try {
getSession();
sql = "select username,pwd from User where username=?and pwd=?";
Query query = session.createQuery(sql);
query.setParameter(0, user.getUsername());
query.setParameter(1, user.getPwd());
List list = query.list();
ts.commit();
if (!list.isEmpty())
return true;
else
return false;
} catch (Exception ex) {
ex.printStackTrace();
return false;
} finally {
session.close();
}
} @Override
public boolean Register(User user) {
// TODO Auto-generated method stub
try {
getSession();
session.save(user);
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
} finally {
session.close();
}
} public void getSession() {
session = Hibernateutil.getSessionFactory().openSession();
ts = session.beginTransaction();
}
}

6)、设计用户Action类

UserAction.java

package com.action.userAction;

import java.util.Map;

import javax.enterprise.event.Observes;

import org.apache.struts2.interceptor.RequestAware;

import com.entity.User;
import com.service.dao.UserDao; public class UserAction implements RequestAware {
private String username;
private String pwd;
private Map<String, Object> request;
public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} public String Login() {
UserDao userDao = new UserDao();
User user = new User();
user.setUsername(username);
user.setPwd(pwd);
if (userDao.Login(user)) {
request.put("username", username);
return "success";
} else
return "error";
}
public String Register() {
UserDao userDao = new UserDao();
User user = new User();
user.setUsername(username);
user.setPwd(pwd);
if(userDao.Register(user)){
return "success";
}else
return "failure";
} @Override
public void setRequest(Map<String, Object> request) {
// TODO Auto-generated method stub
this.request = request;
}
}

7)、注册struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd"> <struts>
<!-- 配置扩展名 -->
<package name="struts" extends="struts-default" namespace="/">
<action name="login" class="com.action.userAction.UserAction" method="Login">
<result name="success">/index.html</result>
<result name="error">/register.jsp</result>
</action>
<action name="register" class="com.action.userAction.UserAction" method="Register">
<result name="success">/index.html</result>
<result name="failure">/login.html</result>
</action>
</package>
</struts>

7)、效果预览

8)、具体代码:https://github.com/starryfei/Login_ssh

struts2+hibernate整合-实现登录功能的更多相关文章

  1. 使用Struts2+Hibernate开发学生信息管理功能1

    第一章:Struts2与Hibernate整合 1.课程简介 2.界面原型演示 3.Struts2与Hibernate整合 4.创建实体类 5.生成实体映射文件 6.生成表结构 1.课程简介 Stru ...

  2. [Java web]Spring+Struts2+Hibernate整合过程

    摘要 最近一直在折腾java web相关内容,这里就把最近学习的spring+struts2+hibernate进行一个整合,也就是大家经常说的ssh. 环境 工具IDE :Idea 2018 数据库 ...

  3. Spring(五):Spring&Struts2&Hibernate整合后,实现查询Employee信息

    背景: 基于之前两篇文章<Spring(三):Spring整合Hibernate>.<Spring(四):Spring整合Hibernate,之后整合Struts2>,了解了如 ...

  4. struts2+Hibernate实现用户登陆功能

    实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若 ...

  5. struts2+hibernate整合开发步骤

    百度的各种代码,步骤,自己整合了一下 1,创建数据库 常用mysql   creat table..... 2,在WebContent下的bin中添加相应的包 http://pan.baidu.com ...

  6. smm框架学习------smm框架整合实现登录功能(一)

    一.准备所需的jar包 1.1所需jar包 1.Spring框架jar包 2.Mybatis框架jar包 3.Spring的AOP事务jar包 4.Mybatis整合Spring中间件jar包 5.a ...

  7. smm框架整合实现登录功能

    一.准备所需的jar包 1.1所需jar包 1.Spring框架jar包 2.Mybatis框架jar包 3.Spring的AOP事务jar包 4.Mybatis整合Spring中间件jar包 5.a ...

  8. SSH框架之Spring+Struts2+Hibernate整合篇

    回顾 -Hibernate框架 ORM: 对象关系映射.把数据库表和JavaBean通过映射的配置文件映射起来, 操作JavaBean对象,通过映射的配置文件生成SQL语句,自动执行.操作数据库. 1 ...

  9. SpringMVC详解(四)------SSM三大框架整合之登录功能实现

    为了后面讲解的需要,我们取数据都会从数据库中获取,所以这里先讲讲三大框架(Spring.SpringMVC.MyBatis)的整合.前面讲解 MyBatis 时,写了一篇 MyBatis 和 Spri ...

随机推荐

  1. ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API

    在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端通过CNBlogsAuthorizationServerProvider(Authorization ...

  2. 【原】objc_setAssociatedObject和objc_getAssociatedObject

    本文转载请注明出处--polobymulberry-博客园 两个函数名称中都有associate,意思是关联,这里的关联表示的是一种 从属关系,即有一个关联者和被关联者,我们说NSArray的对象ar ...

  3. SQL Tuning 基础概述07 - SQL Joins

    N多年之前,刚刚接触SQL的时候,就被多表查询中的各种内连接,外连接,左外连接,右外连接等各式各样的连接弄的晕头转向. 更坑的是书上看到的各种表连接还有两种不同的写法, 比如对于表A,表B的查询 1, ...

  4. u-boot源码分析之C语言段

    题外话: 最近一直在学习u-boot的源代码,从代码量到代码风格,都让我认识到什么才是真正的程序.以往我所学到的C语言知识和u-boot的源代码相比,实在不值一提.说到底,机器都是0和1控制的.感觉这 ...

  5. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  6. Razor语法中绑定一个值给checkbox

    在ASP.NET MVC开发中,需要绑定一个值给checkbox标签,如下面写法,它们运行时是没有问题,照样能跑. 看看上面的语法,在绑定时,它却出现绿浪线.提不绑定的值is not a valid ...

  7. Github Pages和Hexo创建静态博客网站

    Github Pages和Hexo创建静态博客网站 安装Node.js 本人是window环境,所以下载window版. 下载地址:https://nodejs.org/en/download/ 下载 ...

  8. [C1] C1FlexGrid 行列增删&单元格合并拆分

    上一篇中实现了 C1FlexGrid的撤销还原功能,这篇是要仿 Excel 做一个行列删除以及单元格的自由合并拆分,楼主怕在原工程里复杂的说不清道不明,所以干脆提取出来做了一个 Demo 来说明实现过 ...

  9. C#开发微信门户及应用(13)-使用地理位置扩展相关应用

    本文继续上一篇<C#开发微信门户及应用(12)-使用语音处理>,继续介绍微信的相关应用.我们知道,地理位置信息可以用来做很多相关的应用,除了我们可以知道用户所在的位置,还可以关联出一些地理 ...

  10. spring笔记5 spring IOC的基础知识1

    1,ioc的概念 Inverse of control ,控制反转,实际的意义是调用类对接口实现类的依赖,反转给第三方的容器管理,从而实现松散耦合: ioc的实现方式有三种,属性注入,构造函数注入,接 ...