【用MyEclipse2017创建一个Hibernate Web登录项目】

用MyEclipse2017创建一个Hibernate Web登录项目

靠手工实现JavaBean/JDBC的系统
在这里插入图片描述
Hibernate自动生成了所需的JavaBean,也取代了原JDBC的功能!可简单形象地理解为:Hibernate=JavaBean+JDBC

在这里插入图片描述

1、创建一个Java EE Web项目,项目命名HibernateDemo。在项目src下创建两个包:org.easybooks.test.factory和org.easybooks.test.model.vo(包名随意,只要后面的时候记清楚每个包下面的内容就行)

在这里插入图片描述
配置好环境后点击next
在这里插入图片描述

勾选web.xml后点击完成。
在这里插入图片描述

2、添加Hibernate框架

在项目中添加Hibernate框架的步骤如下。
① 右击项目,选择菜单【Configure Facets…】→【Install Hibernate Facet】,启动【Install Hibernate Facet】向导对话框,在“Project Configuration”页的“Hibernate specification version”栏右侧的下拉列表中选择要添加到项目中的Hibernate版本。为了最大限度地使用MyEclipse 2017集成的Hibernate工具,这里选择版本号为最新的Hibernate 5.1,单击【Next】按钮。
在这里插入图片描述
② 在第一个“Hibernate Support for MyEclipse”页,创建Hibernate配置文件和SessionFactory类。
在这里插入图片描述
③ 单击【Next】按钮,进入第二个“Hibernate Support for MyEclipse”页。在该页上配置Hibernate所用数据库连接的细节。因为我前面已经创建了一个名为sqlsrv的连接,所以这里只需要选择“DB Driver”栏为“sqlsrv”即可,系统会自动载入其他各栏的内容。不会用myeclipse连接远程数据库的话,可以看数据库远程连接这篇文章,也可以随意换想要使用的数据库,本文用的是SQL server数据库。

在这里插入图片描述
④ 单击【Next】按钮,在“Configure Project Libraries”页选择要添加到项目中的Hibernate框架类库,对于一般的应用来说,并不需要使用Hibernate的全部类库,故只需选择必要的库添加即可,这里仅勾选最基本的核心库“Hibernate 5.1 Libraries”→“Core”,如图所示。
在这里插入图片描述
单击【Finish】按钮打开透视图,在开发环境主界面的中央出现Hibernate配置文件“hibernate.cfg.xml”的编辑器,在其“Configuration”选项标签页可看到本例Hibernate的各项配置信息,如图所示。
在这里插入图片描述

完成以上步骤后,项目中增加了一个Hibernate包目录、一个hibernate.cfg.xml配置文件以及一个HibernateSessionFactory.java类。另外,数据库的驱动包也被自动载入进来,此时项目的目录树呈现如图所示的状态,表明该项目已成功添加了Hibernate框架。

在这里插入图片描述

3、为userTable表生成持久化对象

为数据库中的表(在本例中也就是userTable表)生成持久化的Java对象的操作又被称作“反向工程”,它是使用Hibernate框架功能的必要前提。之前在项目src下创建的org.easybooks.test.model.vo包就是用来存放与数据库userTable表对应的POJO类和映射文件的。
反向工程的操作步骤如下。
① 选择主菜单【Window】→【Perspective】→【Open Perspective】→【Database Explorer】,进入MyEclipse的DB Browser模式。打开sqlsrv连接,选中数据库表userTable右击,选择菜单【Hibernate Reverse Engineering…】,将启动【Hibernate Reverse Engineering】向导对话框,用于完成从已有的数据库表生成对应的POJO类和相关映射文件的配置工作。
在这里插入图片描述
② 在向导的第一个“Hibernate Mapping and Application Generation”页中,选择生成的类及映射文件所在的位置,如图所示。
在这里插入图片描述
③ 单击【Next】按钮,进入第二个“Hibernate Mapping and Application Generation”页,配置映射文件的细节,如图所示。
在这里插入图片描述
④ 单击【Next】按钮,进入第三个“Hibernate Mapping and Application Generation”页,该页主要用于配置反向工程的细节,这里保持默认配置即可,如图所示。
在这里插入图片描述

4、创建JSP文件

本例有4个JSP文件,login.jsp(登录页)、main.jsp(欢迎主页),error.jsp(错误页),validate.jsp(验证页),与之前的举例model2模式的Web登录程序相比,改为使用Hibernate框架以面向对象的方式访问数据库。
login.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head><title>简易留言板</title>
</head>
<body bgcolor="#E3E3E3">
<form action="validate.jsp" method="post">
<table><caption>用户登录</caption><tr><td>用户名:</td><td><input type="text" name="username" size="20"/></td></tr><tr><td>密码:</td><td><input type="password" name="password" size="21"/></td></tr>
</table>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
如果没注册单击<a href="">这里</a>注册!
</body>
</html>

main.jsp:

<%@ page language="java" pageEncoding="gb2312" import="org.easybooks.test.model.vo.UserTable"%>
<html>
<head><title>留言板信息</title>
</head>
<body><%UserTable user=(UserTable)session.getAttribute("user");String usr=user.getUsername();%><%=usr%>,您好!欢迎登录留言板。
</body>
</html>

validate.jsp:

<%@ page language="java" pageEncoding="gb2312" import="org.easybooks.test.factory.*,org.hibernate.*,java.util.*,org.easybooks.test.model.vo.UserTable"%>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=gb2312"></head><body><%request.setCharacterEncoding("gb2312");				//设置请求编码String usr=request.getParameter("username");		//获取提交的用户名String pwd=request.getParameter("password");		//获取提交的密码boolean validated=false;							//验证成功标识UserTable user=null;//先获得UserTable对象,如果是第一次访问该页,用户对象肯定为空,但如果是第二次甚至是第三次,就直接登录主页而无须再次重复验证该用户的信息user=(UserTable)session.getAttribute("user");//如果用户是第一次进入,会话中尚未存储 user 持久化对象,故为 nullif(user==null){//查询userTable表中的记录String hql="from UserTable u where u.username=? and u.password=?";Query query=HibernateSessionFactory.getSession().createQuery(hql);query.setParameter(0, usr);query.setParameter(1, pwd);List users=query.list();Iterator it=users.iterator();while(it.hasNext()){if(users.size()!=0){user=(UserTable)it.next();				//创建持久化的 JavaBean 对象 usersession.setAttribute("user", user);		//把 user 对象存储在会话中validated=true;							//标识为 true 表示验证成功通过}}}else{validated=true;									//该用户在之前已登录过并成功验证,故标识为 true 表示无须再验了}if(validated){//验证成功跳转到main.jsp%><jsp:forward page="main.jsp"/><%}else{//验证失败跳转到error.jsp%><jsp:forward page="error.jsp"/><%}%></body>
</html>

error.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head><title>出错</title>
</head>
<body>登录失败!单击<a href="login.jsp">这里</a>返回
</body>
</html>

配置完Tomcat服务器后就可以进行项目的运行了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/141448.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开机自启动Linux and windows

1、背景 服务器由于更新等原因重启&#xff0c;部署到该服务上的响应的应用需要自启动 2、Linux 2.1 方式一 编写启动应用的sh脚本授权该脚本权限 chmod 777 xxx.sh 修改rc.loacl 位置&#xff1a;/etc/rc.local 脚本&#xff1a;sh /home/xxxx.sh & 授权rc.local …

【周赛364-单调栈】美丽塔 II-力扣 2866

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

短视频无人直播双端开播源码部署

设置语音 商家可以通过语音库&#xff0c;完成直播间语音设置&#xff0c;支持人声录制和智能配音直播间语音 语音库 语音库列表 语音库名称 语音库 录音 合成配音 进入“语音库” 可编辑、删除语音库 列表右下角-添加语音库-输入语音库名称 针对每个语音库&#…

FairMOT 论文学习

1. 解决了什么问题&#xff1f; 现有的多目标跟踪方案将目标检测和 reID 任务放在一个网络里面优化学习&#xff0c;计算效率高。目标检测首先在每一帧中检测出兴趣目标&#xff0c;要么将其与现有的轨迹关联起来&#xff0c;要么创建一个新的轨迹。这两个任务会相互竞争&…

图像练习-计算平行线距离opencv(03)

原图 //对输入图像进行细化 cv::Mat ThinLine(const cv::Mat& matsrc, const int& iterations) {//CvSize size cvGetSize(src);cv::Mat dst matsrc.clone();//拷贝一个数组给另一个数组int _iwidth dst.cols;int _iheight dst.rows;int n 0, i 0, j 0;for (n …

【二分图染色】ARC 165 C

C - Social Distance on Graph 题意&#xff1a; 思路&#xff1a; 首先考虑一条链的情况&#xff0c;注意到如果两条相邻的边加起来 < x&#xff0c;一定不行 这个结论推广到图也是一样的 同时注意到 x 具有单调性&#xff0c;考虑对 x 二分 在check时进行二分图染色 …

三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析

三维模型3DTile格式轻量化压缩在移动智能终端应用方面的重要性分析 随着移动智能终端设备的不断发展和普及&#xff0c;如智能手机、平板电脑等&#xff0c;以及5G网络技术的推广应用&#xff0c;使得在这些设备上频繁使用三维地理空间数据成为可能。然而&#xff0c;由于这类数…

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

当前&#xff0c;在政府、军事、城市规划、自然资源管理等领域&#xff0c;企业对地理信息的需求迅速增加&#xff0c;人们需要更有效地管理和分析地理数据&#xff0c;以进行决策和规划。在此背景下&#xff0c;“GIS 基础平台”应运而生&#xff0c;它通常指的是一个地理信息…

MySQL-树型结构数据查询

表结构 进行树形结构查询&#xff0c;利用特殊语法进行操作 with recursive t as(select parent_id , business_namefrom business_line where id 21union allselect a.parent_id, a.business_namefrom business_line a join t on a.id t.parent_id) select business_name f…

20-SpringCloudAlibaba-1

一 Spring Cloud Alibaba简介 什么是Spring Cloud Alibaba Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。 此项目包含开发分布式应用微服务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 为什么要推出Sp…

广东MES系统实现设备管理的方法与功能

在生产车间中&#xff0c;可以借助MES系统来完成设备管理。下面来看看借助MES系统实现设备管理比较常见的具体方法与功能&#xff1a; 1.在线监控和数据采集&#xff1a;MES系统能够与车间设备相连接&#xff0c;在线实时监控设备的运行状态和运行指标。凭借传感器、物联网产品…

腾讯云cvm云硬盘扩容

过去一直记得腾讯云的系统盘扩容,关于系统盘的扩容直接点资源调整-云硬盘扩容 系统盘扩容后就可以直接使用的&#xff1f; 但是现在操作了发现vda 200G 但是现在vda1不能自动扩容了&#xff1f; 腾讯云cvm云硬盘扩容 先看一眼官方文档吧&#xff1a;在线扩展系统盘分区及文…

php实现分页功能跳转和ajax方式实现

实现效果 准备工作 创建数据表和导入测试数据 CREATE TABLE users ( id int(10) unsigned NOT NULL AUTO_INCREMENT, username varchar(30) DEFAULT NULL COMMENT 账号, email varchar(30) DEFAULT NULL COMMENT 密码, PRIMARY KEY (id) ) ENGINEMyISAM AUTO_INCREM…

GiliSoft USB Lock v10.5.0 电脑USB设备管控软件

网盘下载 软件功能特性 禁止USB / SD驱动器 禁用从USB / SD磁盘读取&#xff0c;禁用写入USB / SD磁盘&#xff0c;阻止非系统分区。它不允许任何类型的USB / SD驱动器访问您的计算机&#xff0c;除非您授权它或它已在可信设备白名单。 CD锁&#xff0c;块媒体和蓝光光盘 禁用…

LeetCode每日一题:1993. 树上的操作(2023.9.23 C++)

目录 1993. 树上的操作 题目描述&#xff1a; 实现代码与解析&#xff1a; 模拟 dfs 原理思路&#xff1a; 1993. 树上的操作 题目描述&#xff1a; 给你一棵 n 个节点的树&#xff0c;编号从 0 到 n - 1 &#xff0c;以父节点数组 parent 的形式给出&#xff0c;其中 p…

2023-油猴(Tampermonkey)脚本推荐

2023-油猴&#xff08;Tampermonkey&#xff09;脚本推荐 知乎增强 链接 https://github.com/XIU2/UserScript https://greasyfork.org/zh-CN/scripts/419081 介绍 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起回答/评论&#xff08;左键两侧&#xff09;、快捷回…

CeresPCL ICP精配准(点到面)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 ICP算法总共分为6个阶段,如下图所示: (1)挑选发生重叠的点云子集,这一步如果原始点云数据量比较巨大,一般会对原始点云进行下采样操作。 (2)匹配特征点。通常是距离最近的两个点,当然这需要视评判的准则而…

基于微信小程序的医院门诊体检预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

uni-app:实现页面效果1

效果 代码 <template><view><view class"add"><image :src"add_icon" mode""></image></view><view class"container_position"><view class"container_info"><view c…

使用datax将数据从InfluxDB抽取到TDengine过程记录

1. 编写InfluxDB数据查询语句 select time as ts,device as tbname, ip,device as district_code from "L2_CS" limit 1000 2. 创建TDengine表 create database if not exists sensor; create stable if not exists sensor.water(ts timestamp, ip varchar(50), …