使用Hibernate开发用户注册功能:

  用户在register.jsp表单成功后,页面跳转到login.html,数据库中会存放用户注册的信息

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/login.css" />
<link rel="stylesheet" href="css/head.css" />
<link rel="stylesheet" type="text/css" href="css/login.css" />
</head> <body>
<div class="dvhead">
<div class="dvlogo"><a href="index.html">你问我答</a></div>
<div class="dvsearch">10秒钟注册账号,找到你的同学</div>
<div class="dvreg">
已有账号,立即&nbsp;<a href="login.html">登录</a>
</div>
</div>
<section class="sec">
<form action="${pageContext.request.contextPath }/UserAction_register" method="post">
<div class="register-box">
<label for="username" class="username_label">
用 户 名
<input maxlength="20" name="username" type="text"
placeholder="您的用户名和登录名" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="other_label">
设 置 密 码
<input maxlength="20" type="password" name="password"
placeholder="建议至少使用两种字符组合" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="other_label">
确 认 密 码
<input maxlength="20" type="password" placeholder="请再次输入密码" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="username_label">
真实姓名
<input maxlength="20" name="name" type="text"
placeholder="您的真实姓名" />
</label>
<div class="tips">
</div>
</div> <div class="register-box">
<label for="username" class="username_label">
邮箱
<input maxlength="20" name="email" type="text"
placeholder="您的邮箱" />
</label>
<div class="tips">
</div>
</div>
<div class="register-box">
<label for="username" class="username_label">
手机号
<input maxlength="20" name="telephone" type="text"
placeholder="您的手机号" />
</label>
<div class="tips">
</div>
</div> <div class="arguement">
<input type="checkbox" id="xieyi" />
阅读并同意
<a href="javascript:void(0)">《错题用户注册协议》</a>
<a href="login.html">已有账号,立即登录</a>
<div class="tips">
</div>
</div>
<div class="submit_btn">
<button type="submit" id="submit_btn">
立 即 注 册
</button>
</div>
</form>
</section>
<script src="js/index.js" type="text/javascript" charset="utf-8"></script>
</body>
</html>

register.jsp

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>HibernateForum</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </web-app>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration>
<!-- 负责初始化hibernate -->
<session-factory> <!-- 连接数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库地址 -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernatest</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">123456</property> <!-- 配置数据库的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource= "com/Gary/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>

hibernate.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>
<constant name="struts.devMode" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="hibernate" namespace="/" extends="struts-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="UserAction_*" class="com.Gary.web.UserAction" method="{1}">
<result name="toLogin" type="redirect">/login.html</result>
</action> </package> </struts>

struts.xml

package com.Gary.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.Gary.domain.User; public class UserDao { public void addUser(User user) { //使用Hibernate
//得到配置信息
Configuration config = new Configuration().configure();
//创建sessionFactiory对象
SessionFactory sessionFactory = config.buildSessionFactory();
//获取session
Session session = sessionFactory.openSession(); //打开事务
Transaction transaction = session.beginTransaction(); //存储User对象
session.save(user); //提交事务
transaction.commit(); //关闭资源
session.close(); } }

UserDao.java

package com.Gary.domain;

public class User {

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone; public String getId() {
return id;
}
public void setId(String 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 String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
} }

User.java

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.Gary.domain.User" table="user">
<!-- id元素
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
-->
<id name="id" column="id">
<!-- 主键生成策略(手动生成) (最后讲) 5种
identity:主键自增
sequence:oracle中主键生成的策略
native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
uuid:产生随机字符串作为主键,主键必须为String assigned:我们要手动去指定
-->
<generator class="assigned"></generator>
</id> <!--
property:除了id之外的普通属性
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
--> <property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="name" column="name"></property>
<property name="email" column="email"></property>
<property name="telephone" column="telephone"></property>
</class> </hibernate-mapping>

User.hbm.xml

package com.Gary.service;

import com.Gary.dao.UserDao;
import com.Gary.domain.User; public class UserService { public void addUser(User user) { UserDao userDao = new UserDao();
userDao.addUser(user); } }

UserService.java

package com.Gary.web;

import java.util.UUID;

import com.Gary.domain.User;
import com.Gary.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven; public class UserAction extends ActionSupport implements ModelDriven<User>{ public User user = new User(); public String register() throws Exception { user.setId(UUID.randomUUID().toString()); UserService userService = new UserService();
System.out.println(user);
userService.addUser(user); return "toLogin";
} @Override
public User getModel() {
// TODO Auto-generated method stub
return user;
} }

UserAction.java

  数据库表hibernatest.user

  

  【项目结构】

注册表单页面register.jsp

<form action="${pageContext.request.contextPath }/UserAction_register" method="post">
<div class="register-box">
<label for="username" class="username_label">
用 户 名
<input maxlength="20" name="username" type="text"
placeholder="您的用户名和登录名" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="other_label">
设 置 密 码
<input maxlength="20" type="password" name="password"
placeholder="建议至少使用两种字符组合" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="other_label">
确 认 密 码
<input maxlength="20" type="password" placeholder="请再次输入密码" />
</label>
<div class="tips"> </div>
</div>
<div class="register-box">
<label for="username" class="username_label">
真实姓名
<input maxlength="20" name="name" type="text"
placeholder="您的真实姓名" />
</label>
<div class="tips">
</div>
</div> <div class="register-box">
<label for="username" class="username_label">
邮箱
<input maxlength="20" name="email" type="text"
placeholder="您的邮箱" />
</label>
<div class="tips">
</div>
</div>
<div class="register-box">
<label for="username" class="username_label">
手机号
<input maxlength="20" name="telephone" type="text"
placeholder="您的手机号" />
</label>
<div class="tips">
</div>
</div> <div class="arguement">
<input type="checkbox" id="xieyi" />
阅读并同意
<a href="javascript:void(0)">《错题用户注册协议》</a>
<a href="login.html">已有账号,立即登录</a>
<div class="tips">
</div>
</div>
<div class="submit_btn">
<button type="submit" id="submit_btn">
立 即 注 册
</button>
</div>
</form>

  

  用户实体层

    private String id;
private String username;
private String password;
private String name;
private String email;
private String telephone;

  用户提交表单,发送请求UserAction_register到Web层userService.java

public String register() throws Exception {

        user.setId(UUID.randomUUID().toString());

        UserService userService = new UserService();
System.out.println(user);
userService.addUser(user); return "toLogin";
}

  在domain层中的User.hbm.xml配置传传入数据库Hibernate的事务

<hibernate-mapping>

   <class name="com.Gary.domain.User" table="user">
<!-- id元素
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
-->
<id name="id" column="id">
<!-- 主键生成策略(手动生成) (最后讲) 5种
identity:主键自增
sequence:oracle中主键生成的策略
native:identity+sequence (hibernate会根据连接的数据库自动选择(identity,sequence))
uuid:产生随机字符串作为主键,主键必须为String assigned:我们要手动去指定
-->
<generator class="assigned"></generator>
</id> <!--
property:除了id之外的普通属性
name:实体中的属性
colum(可选):数据库的列名
type(可选): 填写列(属性)的类型.hibernate会自动检测实体的属性类型.
每个类型有三种填法: java类型|hibernate类型|数据库类型
length(可选):配置数据库中列的长度.
默认值:使用数据库类型的最大长度
not-null(可选):配置该属性(列)是否不能为空. 默认值:false
--> <property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="name" column="name"></property>
<property name="email" column="email"></property>
<property name="telephone" column="telephone"></property>
</class> </hibernate-mapping>

  Dao层UserDao.java向数据库传入用户信息

public void addUser(User user) {

        //使用Hibernate
//得到配置信息
Configuration config = new Configuration().configure();
//创建sessionFactiory对象
SessionFactory sessionFactory = config.buildSessionFactory();
//获取session
Session session = sessionFactory.openSession(); //打开事务
Transaction transaction = session.beginTransaction(); //存储User对象
session.save(user); //提交事务
transaction.commit(); //关闭资源
session.close(); }

  

JavaWeb_(Hibernate框架)使用Hibernate开发用户注册功能的更多相关文章

  1. JavaWeb_(Hibernate框架)使用c3p0与Dbutils开发用户注册功能

    使用c3p0与Dbutils开发用户注册功能: 用户在register.jsp表单成功后,页面跳转到login.html,数据库中会存放用户注册的信息 <%@ page language=&qu ...

  2. ORM进阶:Hibernate框架搭建及开发

    本节将開始.使用hibernate搭建持久层.当然在决定用不用之前,还请斟酌一下是否使用.了解一下Hibernate的优缺点. Hibernate优劣对照 Hibernate是一个持久的ORM框架.首 ...

  3. hibernate框架(1)---Hibernate增删改查

    Hibernate增删改查 1.首先我们要知道什么是Hibernate Hibernate是一个轻量级的ORMapping对象.主要用来实现Java和数据库表之间的映射,除此之外还提供数据查询和数据获 ...

  4. hibernate框架(2)---Hibernate的核心API

    Hibernate的核心API 一般我们通过hibernate进行操作的时候,都会遵循下面的流程,那么接下来我对每一个步骤进行讲解: 1 public void testInsert() { 2 // ...

  5. JavaWeb_(Hibernate框架)Hibernate与c3p0与Dbutils的区别

    JavaWeb_(Hibernate框架)使用Hibernate开发用户注册功能 传送门 JavaWeb_(Hibernate框架)使用c3p0与Dbutils开发用户注册功能 传送门 Hiberna ...

  6. Annotation(二)——Hibernate中注解的开发

    在利用注解开发数据库持久层以前,需要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范.就类似于JDBC,Servlet,JSP等规范一样.而Hi ...

  7. Struts2+Hibernate框架探险

    写这篇文章的目的 了解 JavaWeb 开发的人都知道SSH和SSM框架,前段时间开始接触 JavaWeb 开发,看了几个教学视频后就想上手构建一个小型 Web项目,可在跟着视频敲代码当中,使用 St ...

  8. Hibernate框架笔记01_环境搭建_API_CRUD

    目录 1. Hibernate框架的概述 1.1 什么是框架 1.2 经典三层架构 1.3 Hibernate框架 2 Hibernate入门 2.1 下载Hibernate的开发包 2.2 创建项目 ...

  9. Hibernate中注解的开发

    转自:https://blog.csdn.net/liujiahan629629/article/details/22335563 在利用注解开发数据库持久层以前,需要学习一个规范JPA(JavaPe ...

随机推荐

  1. Winform自定义键盘控件开发及使用

    最近有学员提出项目中要使用键盘控件,系统自带的osk.exe不好用,于是就有了下面的内容: 首先是进行自定义键盘控件的开发,其实核心大家都知道,就是利用SendKeys.Send发送相应 的字符,但是 ...

  2. Advanced Installer 不弹出预安装的软件的窗口

    需求:当他电脑上没有sql server client 的时候,或没有localdb的时候,那么安装包会弹出窗口,让他选择 一个组件 一个组件的安装 太麻烦. 有没有办法,打开安装包就安装 安装的过程 ...

  3. git clone ssh 时出现 fatal: Could not read from remote repository

    一.问题及解决办法参考: 在 ubuntu 中,要把 GitHub 上的储存库克隆到计算机上时,执行如下命令: git clone git@github.com:USER-NAME/REPOSITOR ...

  4. clientHeight和offsetHeight

    clientHeight:包括padding但不包括border.水平滚动条.margin的元素的高度.对于inline的元素这个属性一直是0,单位px,只读元素. offsetHeight:包括pa ...

  5. netty的断线重连问题

    手里的这个项目需要作为客户端,不断的接收服务端发来的数据,用的netty框架,但是一直存在一个问题,就是断线重连问题. 什么是断线重连呢? 就是我们这个客户端要保证一直与服务端保持连接,这样客户端才能 ...

  6. js div模拟水平滚动条

    这个也是我百度到的,但是忘记保存连接了,现在把代码贴上来,有需要的可以参考一下: <!DOCTYPE html> <html> <head> <meta ch ...

  7. Nginx访问限制配置

    Nginx访问限制配置 nginx访问限制可以基于两个方面,一个是基于ip的访问控制,另一个是基于用户的信任登陆控制 下面我们将对这两种方法逐个介绍 基于IP的访问控制 介绍: 可以通过配置基于ip的 ...

  8. c3p0似有属性配置

    c3p0私有属性配置: 始化时创建的连接数,应在minPoolSize与maxPoolSize之间取值.默认为3 initialPoolSize=20 接池中保留的最大连接数.默认为15 maxPoo ...

  9. 第十一章、super()详解

    目录 第十一章.super()详解 一.引出super()来由 第十一章.super()详解 一.引出super()来由 原始用法: 在python类的方法中,要调用父类的某个方法,通常是类.方法() ...

  10. 1.Bacula各组件说明

    1.  Bacula各组件说明 Baula有三个服务,分别是bacula-sd用于管理storage.bacula-fd为bacula客户端.bacula-dir为bacula的核心组件机direct ...