- 浏览: 201510 次
- 性别:
- 来自: 包头
最新评论
-
chengeng:
图片没有显示。
登录系统-基于struts2+spring+hibernate分层架构 -
chengeng:
不知为什么,图片没有显示出来。
登录系统-基于struts2+spring+hibernateJPA分层架构 -
rdz09:
解析得很详细,不错
从头学起:struts2(1) -
zxd543:
图怎么都看不见呢?
登录系统-基于struts2+spring+hibernate分层架构 -
huweijie:
...
JAVA语言程序设计-第九章 异常处理
本实验使用servlet+hibernate分层结构,目的是可以更好地进行ssh整合的准备,可以参考《登录系统-基于servlet+hibernate》和《登录系统-基于struts2的分层架构》两篇文章。
1.新建一个java web项目,在步骤4中选择Hibernate3.2.5选项(如果没有建好数据库连接,可以在此建立连接):
这时netbeans自动生成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>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/book</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
</session-factory>
</hibernate-configuration>
这个文件在系统中添加了连接数据库的驱动程序以及所连接的数据库、用户名和密码。
2.创建如图所示的包结构:
3.使用Hibernate逆向工程向导生成hibernate.reveng.xml文件,如图所示添加选中的数据表。
自动生成的文件:hibernate.reveng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd " >
<hibernate-reverse-engineering>
<schema-selection match-catalog="book"/>
<table-filter match-name="admin"/>
</hibernate-reverse-engineering>
这个文件在系统中注册了数据库“book”和数据表“admin”。
4. 使用Hibernate向导生成Hibernate映射文件和POJO(Plain Ordinary Java Object)文件:
生成的POJO文件是:
Admin.java
package javahibernate;
// Generated 2011-11-19 10:57:36 by Hibernate Tools 3.2.1.GA
/**
* Admin generated by hbm2java
*/
public class Admin implements java.io.Serializable {
private int UId;
private String UName;
private String UPass;
public Admin() {
}
public Admin(int UId) {
this.UId = UId;
}
public Admin(int UId, String UName, String UPass) {
this.UId = UId;
this.UName = UName;
this.UPass = UPass;
}
public int getUId() {
return this.UId;
}
public void setUId(int UId) {
this.UId = UId;
}
public String getUName() {
return this.UName;
}
public void setUName(String UName) {
this.UName = UName;
}
public String getUPass() {
return this.UPass;
}
public void setUPass(String UPass) {
this.UPass = UPass;
}
}
生成的Hibernate映射文件是:
Admin.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 2011-11-19 10:57:36 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="javahibernate.Admin" table="admin" catalog="book">
<id name="UId" type="int">
<column name="u_id" />
<generator class="assigned" />
</id>
<property name="UName" type="string">
<column name="u_Name" length="20" />
</property>
<property name="UPass" type="string">
<column name="u_Pass" length="20" />
</property>
</class>
</hibernate-mapping>
此时Hibernate配置文件hibernate.cfg.xml中,在<session-factory>标记内增加了映射信息:
<mapping resource="javahibernate/Admin.hbm.xml"/>
这两个文件构成了hibernate框架的核心基础:关系数据库到对象的映射,通过映射我们可以在项目中使用面向对象的编程技术。
到此为止,基于Hibernate的持久化工作已准备就绪。所有的工作基本上是自动完成的。
5.在“book.common”包放置工具类用于建立获取SessionFactory和管理Session,在此添加HibernateUtil.java文件:
package book.common;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static Configuration configuration = new Configuration();
private static SessionFactory sessionFactory = null;
static{
try{
configuration.configure();
sessionFactory = configuration.buildSessionFactory();
}catch(Exception e){
}
}
public Session getSession(){
Session session = null;
try{
session = sessionFactory.openSession();
}catch(Exception e){
}
return session;
}
public void closeSession(Session session){
try{
if(null != session)
session.close();
}catch(Exception e){
}
}
}
6.包“book.idao”放置数据访问接口,添加IUserDao接口文件:
package book.idao;
import book.model.User;
public interface IUserDao {
User fineOne(String userName,String userPassword);
}
7. 包“book.dao”放置数据访问类,添加UserDao.java文件,实现IUserDao接口,完成数据访问:
package book.dao;
import book.common.DB_Conn;
import book.model.User;
import book.idao.IUserDao;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao implements IUserDao{
//创建公用数据库连接类对象
DB_Conn db_conn=new DB_Conn();
//通过用户名称获取用户信息
@Override
public User fineOne(String username, String password) {
db_conn.ConnectDB();
ResultSet rs = null;
try {
String sql = "select * from admin where u_Name ='"
+ username + "' and u_Pass='" + password + "'";
rs = db_conn.sm.executeQuery(sql); // 执行sql语句
User user = null;
if (rs.next()) {
user = new User();
user.setUsername(username);
user.setPassword(rs.getString("u_Pass"));
return user;
}
return user;
}catch (SQLException SqlE) {
return null;
}catch (Exception E) {
return null;
}finally {
// 关闭连接,释放数据库资源:
db_conn.CloseDB();
}
}
}
8.在包“book.iservice”中放置数据的逻辑访问接口,在此添加IUserService.java接口文件:
package book.iservice;
import book.model.User;
public interface IUserService {
User findUserByNameAndPassword(String userName,String userPassword);
}
9. 包“book.service”放置数据逻辑访问类,添加UserService.java文件,实现IUserService,调用UserDao类的功能,完成对数据逻辑访问:
package book.service;
import book.iservice.IUserService;
import book.model.User;
import book.idao.IUserDao;
import book.dao.UserDao;
public class UserService implements IUserService{
private IUserDao userDao=new UserDao();
@Override
public User findUserByNameAndPassword(String userName,String userPassword){
return userDao.fineOne(userName, userPassword);
}
}
10.添加一个servlet类:LoginServlet,在步骤3中选中“将信息添加到部署描述符”选项。如图:
在LoginServlet.java文件加入如下代码:
package book.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import book.iservice.IUserService;
import book.service.UserService;
import book.model.Admin;
public class LoginServlet extends HttpServlet {
private IUserService userService=new UserService();
Admin user=null;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String UserName = request.getParameter("logname");
String Password = request.getParameter("logpwd");
user=userService.findUserByNameAndPassword(UserName, Password);
if (user.getUName() != null) {
request.setAttribute("username", user.getUName());
try {
request.getRequestDispatcher("index.jsp").forward(request,response);
}catch (Throwable t) {
getServletContext().log(t.getMessage());
}
} else {
request.setAttribute("error", "用户名与密码不匹配,登录失败,请重试!");
try {
request.getRequestDispatcher("Login.jsp").forward(request, response);
}catch (Throwable t) {
getServletContext().log(t.getMessage());
}
}
}
11. 创建如下两个页面:
Login.jsp:
<%@ page pageEncoding="gb2312" %>
<%@ page contentType="text/html; charset=gb2312" %>
<% request.setCharacterEncoding("gb2312"); %>
<%@ page language="java" %>
<html>
<head><title>登录网页</title></head>
<body>
<form method="POST" action="UserAction.action">
<table >
<tr>
<td width="890" align="left" colspan="2">
<b><font size="5">系统登录</font></b>
<hr>
</td>
</tr>
<% if (request.getAttribute("error") != null){ %>
<tr>
<td width=100% align=center colspan=4 height=36>
<font color=red><b><%=request.getAttribute("error")%></b></font>
</td>
</tr>
<%
}
%>
<tr>
<td width="75" align="center">
<p align="right">账号:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="text" name="userName" size="20"></td>
</tr>
<tr>
<td width="75" align="center">
<p align="right">密码:</p>
</td>
<td width="809" align="center">
<p align="left">
<input type="password" name="userPassword" size="20">
<input type="submit" value="登录" name="loginButton"></td>
</tr>
</table>
</form>
</body>
</html>
在这个页面中,下面的form标记语句:
<form method="POST" action="UserAction.action">
表示该页面提交一个名为:"UserAction"的action,注意和struts.xml文件中的action的name相对应。
index.jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示信息</title>
</head>
<body>
<h1>Hello World!</h1>
<div id="content">
<center>
<br/><%=request.getAttribute("msg")%>
</center>
</div>
</body>
</html>
该页面的标记语句:
<%=request.getAttribute("msg")%>
表示接收来自action的msg字符串。
12. 生成项目,并运行http://localhost:8080/login/login.jsp
发表评论
-
确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
2012-04-07 18:22 30935确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7246Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22600java信息对话框:MessageDialog是一个非常 ... -
从头学起:struts2(1)
2011-12-15 23:10 1421从头学起:struts2(1)从页面跳转说起:先看一个例子,使 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 19171、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
登录系统-基于struts2+spring+hibernate分层架构
2011-11-29 21:43 34541、创建mysql数据库,结构如下图所示: 2、 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8194在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于struts2的分层架构
2011-11-19 21:48 28101.下载支持Netbeans7.0的Struts2插件,在工具 ... -
登录系统-基于servlet
2011-11-19 19:48 31751. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 42111.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1541基于NetBeans7.0的 Hebernate入门 ... -
实验13 数据库的连接:JDBC*
2011-03-28 22:02 1277一、实验目的 了解JDBC核心API,利用JDBC核心API ... -
实验14 JSP与Servlet技术*
2011-03-28 22:01 1304一、实验目的 1. 理解JSP元素的概念 2. 理解JSP ... -
实验12 网络编程
2011-03-28 21:59 1247一、实验目的 1. 掌握InetAddress类的使用。 2 ... -
实验11 线程
2011-03-28 21:59 903一、实验目的 1. 线程 ... -
实验10 流与文件
2011-03-28 21:58 1022一、实验目的 1. 理解数据流的概念 2. 理解Java流的 ... -
实验 9 综合练习
2011-03-28 21:57 818一、实验目的 将所学知识进行综合运用,模仿设计具有实 ... -
实验 8 图形与多媒体处理
2011-03-28 21:56 936一、实验目的 熟悉图形、图像的使用方法,理解计算机动画 ... -
实验 7 建立图形用户界面
2011-03-28 21:54 1409一、实验目的 了解图形用户界面基本组件窗口、按钮、文本 ...
相关推荐
综上所述,"基于Servlet+JSP+Struts2+Hibernate4开发的房屋租赁系统"是一个综合运用多种Java Web技术的实践项目,它体现了Java EE开发中的分层架构思想,对于学习和理解Web应用开发具有很高的参考价值。通过这个项目...
本系统采用的是经典的“Struts+Spring+Hibernate+Mysql”架构,也被称为SSH框架,这是一套广泛应用于Java Web开发的技术栈,具有良好的分层设计和组件化特性。 **Struts** 是一个基于MVC(Model-View-Controller)...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
总的来说,这个在线拍卖系统利用Hibernate简化了数据库操作,Servlet实现了业务逻辑,三层架构保证了系统的可扩展性和可维护性。对于学习和理解Java Web开发或者想要了解在线拍卖系统运作原理的开发者来说,这是一个...
综上所述,Struts+Spring+Hibernate+WebService集成架构通过合理的分层设计,充分利用了各框架的优势,构建出了一个既高效又灵活的企业级应用开发框架。这种架构模式不仅提高了开发效率,降低了维护成本,还提升了...
这表明系统设计遵循了分层架构,包括表现层(Struts)、业务逻辑层(Spring)和数据访问层(Hibernate)。 【标签】进一步细化了技术点,包含“毕业设计”,意味着这套代码可能是学生在完成学业时的项目,用于展示...
#### 第五章 员工登录系统 **5.1 系统分析和设计** - **5.1.1 需求分析** - 需求分析阶段需要明确系统的目标用户、功能需求、非功能性需求等。 - **5.1.2 登录页面** - 设计简洁易用的登录页面,确保用户体验...
Struts2是基于MVC(Model-View-Controller)设计模式的Web应用框架,它强化了Java Servlet API的功能,提供了一种更加结构化和可维护的开发方式。Struts2.3.37是该框架的一个稳定版本,包含了一些重要的安全修复和...
在Web开发领域,Java技术栈中的JSP(JavaServer Pages)、Servlet和Javabean是构建动态网站的常用工具,尤其适合创建数据驱动的博客系统。这个“jsp+servlet+Javabean实现的博客网”项目,是通过这三者结合来实现一...
### 基于Spring+Struts+Hibernate的报备系统的设计与实现 #### 一、项目背景及功能概述 在当前全球经济一体化与信息技术快速发展的背景下,推进政府信息化建设已成为提升管理水平的重要途径。针对注册会计师协会而...
因为这本电子书太大了,只能分开上传,需要下载完 Struts_2+Spring_3+Hibernate整合开发.part1....该案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,最大限度地满足读者的需求。
【标题】:基于JSP、Servlet和JavaBean的MVC架构在员工管理系统中的应用 【描述】:在软件开发中,MVC(Model-View-Controller)架构模式被广泛应用于构建Web应用程序,尤其是员工管理系统这样的业务系统。在这个...
系统的设计应遵循分层架构,通常分为表现层、业务逻辑层和数据访问层,保证各层职责清晰,便于维护和升级。 在实际部署时,还需要考虑安全性问题,如防止SQL注入、XSS攻击等,可以利用Struts2的安全插件或者Spring ...
### 基于Struts、Hibernate和Spring的J2EE架构研究 #### 一、引言 随着互联网技术的发展和企业需求的日益多样化,软件开发领域面临着越来越多的挑战。为了解决这些问题,J2EE(Java 2 Platform, Enterprise ...
通过上述步骤,可以在 Eclipse 中成功地整合 Struts2 和 Hibernate,实现基于 MVC 架构的 Web 应用程序开发。这种整合方式不仅提高了开发效率,还使得代码更加模块化和易于维护。此外,通过合理的分层设计,可以更好...
Spring MVC、Hibernate 和 Maven 是Java开发中常用的三大框架,它们分别负责不同的职责,共同构建了一个高效、模块化的Web应用程序。让我们深入探讨这三个框架以及如何将它们整合在一起。 **Spring MVC** Spring ...
因为这本电子书太大了,只能分开上传,需要下载完 Struts_2+Spring_3+Hibernate整合开发.part1....该案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,最大限度地满足读者的需求。
因为这本电子书太大了,只能分开上传,需要下载完 Struts_2+Spring_3+Hibernate整合开发.part1....该案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,最大限度地满足读者的需求。
Struts2是ActionServlet的升级版,是一个强大的MVC框架,它提供了一种分层架构,使得开发者可以更专注于业务逻辑的实现。Struts2通过拦截器机制处理HTTP请求,提供了丰富的结果类型和插件支持,简化了页面跳转与数据...