- 浏览: 200332 次
- 性别:
- 来自: 包头
最新评论
-
chengeng:
图片没有显示。
登录系统-基于struts2+spring+hibernate分层架构 -
chengeng:
不知为什么,图片没有显示出来。
登录系统-基于struts2+spring+hibernateJPA分层架构 -
rdz09:
解析得很详细,不错
从头学起:struts2(1) -
zxd543:
图怎么都看不见呢?
登录系统-基于struts2+spring+hibernate分层架构 -
huweijie:
...
JAVA语言程序设计-第九章 异常处理
1、创建mysql数据库,结构如下图所示:
2、新建数据连接:
3、新建NetBeans项目,在第四步“框架”中选择“Spring Web MVC”、“Struts2”和“Hibernate”选项,如果IDE不包含“Struts2”选项,则需要下载插件安装:
系统自动生成如下配置文件:web.xml、applicationContext.xml、hibernate.cfg.xml、struts.xml和dispatcher-servlet.xml。
web.xml中的重要内容:
<context-param>配置,引入spring配置文件applicationContext.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
Struts2过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
将<filter-mapping>修改为:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
删除web.xml中的dispatcher<servlet>配置:
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
删除dispatcher-servlet.xml文件及JSP文件夹。
hibernate.cfg.xml:配置了数据源
<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>
4、创建如下的包结构:
5、新建hibernate逆向工程:注意在hibernate.cfg.xml文件中连接数据库的语句一定要正确,如果在hibernate.cfg.xml文件中没有下面的语句,则一定要加入,否则无法找到可用表。
<property name="hibernate.connection.password">********</property>
6、通过“”新建“Hibernate映射文件”和POJO
完成后新增了Admin类:
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;
}
}
新增了Admin.hbm.xml映射文件,给出数据库book中的数据表admin和类Admin之间的映射关系:
<hibernate-mapping>
<class name="book.model.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.cfg.xml文件中增加了映射语句:
<mapping resource="book/model/Admin.hbm.xml"/>
7、在applicationContext.xml文件中添加如下语句,创建“sessionFactory”工厂,整合Hibernate和Spring:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--确定配置文件hibernate.cfg.xml的位置-->
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
8、在idao包中新建IUserDao接口,完成系统的DAO规范(面向数据):
package book.idao;
import book.model.Admin;
import java.util.List;
public interface IUserDao {
Admin getAdmin(Integer id);
Admin getAdmin(String usernaem);
Admin getAdmin(String username,String password);
List getAdmins(String username);
List getAll();
void saveAdmin(Admin admin);
void removeAdmin(String username);
void removeAdmin(Integer id);
}
在iservice包中新建IUserService接口,完成系统的业务逻辑规范(面向应用):
package book.iservice;
import book.model.Admin;
import java.util.List;
public interface IUserService {
Admin findAdmin(String username);
List findAdmins(String username);
void addAdmin(Admin admin);
void deleteAdmin(Integer id);
Admin findByUsernameAndPassword(String username,String password);
}
9、实现IUserDao接口:需要继承HibernateDaoSupport,使用HibernateTemplate模板实现DAO接口,需要注意的是queryString查询语句类似SQL查询语句,但queryString查询语句针对的是类和它的属性,这里是Admin和UName、UPass、UId,而SQL查询语句针对的是数据表和它的字段。
package book.dao;
import book.idao.IUserDao;
import book.model.Admin;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDao extends HibernateDaoSupport implements IUserDao{
@Override
public Admin getAdmin(String username) {
String queryString="select o from Admin o where o.UName=?";
Admin admin=null;
List list=getHibernateTemplate().find(queryString,username);
if(!list.isEmpty()){
admin=(Admin) list.get(0);
}
return admin;
}
@Override
public Admin getAdmin(String username, String password) {
String queryString="select o from Admin o where o.UName=? and o.UPass=?";
Admin admin=null;
List list=getHibernateTemplate().find(queryString,username,password);
if(!list.isEmpty()){
admin=(Admin) list.get(0);
}
return admin;
}
@Override
public void saveAdmin(Admin admin) {
getHibernateTemplate().saveOrUpdate(admin);
getHibernateTemplate().flush();
}
@Override
public void removeAdmin(String username) {
getHibernateTemplate().delete(getAdmin(username));
}
@Override
public Admin getAdmin(Integer id) {
Admin admin=null;
admin=(Admin)getHibernateTemplate().get(Admin.class, id);
return admin;
}
@Override
public void removeAdmin(Integer id) {
getHibernateTemplate().delete(getAdmin(id));
}
@Override
public List getAdmins(String username) {
String queryString="select o from Admin o where o.UName=?";
List list=getHibernateTemplate().find(queryString,username);
return list;
}
@Override
public List getAll() {
String queryString="select o from Admin o";
List list=getHibernateTemplate().find(queryString);
return list;
}
}
10、在applicationContext.xml文件中添加如下语句,配置接口注入,实现面向接口IUserDao的编程:
<!--配置DAO组件-->
<bean id="IUserDao" class="book.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
11、实现IUserService接口:
package book.service;
import book.idao.IUserDao;
import book.iservice.IUserService;
import book.model.Admin;
import java.util.List;
public class UserService implements IUserService{
private IUserDao idao;
public void setIUserDao(IUserDao idao){
this.idao=idao;
}
@Override
public Admin findAdmin(String username) {
return idao.getAdmin(username);
}
@Override
public List findAdmins(String username) {
return idao.getAdmins(username);
}
@Override
public void addAdmin(Admin admin) {
idao.saveAdmin(admin);
}
@Override
public void deleteAdmin(Integer id) {
idao.removeAdmin(id);
}
@Override
public Admin findByUsernameAndPassword(String username, String password) {
return idao.getAdmin(username, password);
}
}
接口实现类UserService中的setIUserDao方法实现了set注入,实现了使用接口IUserDao的编程。
12、在applicationContext.xml文件中添加如下语句,配置业务逻辑组件:
<!--配置业务逻辑组件的事务代理,使用了bean的继承-->
<bean id="IUserService" parent="txProxyTemplate">
<!--配置事务代理时,指定代理的目标,此处的目标是嵌套bean-->
<property name="target">
<!--嵌套bean无需使用id属性-->
<bean class="book.service.UserService">
<!--为业务逻辑组件注入DAO组件-->
<property name="IUserDao" ref="IUserDao"/>
</bean>
</property>
</bean>
13、在applicationContext.xml文件中添加如下语句,配置Hibernate事务管理器:
<!--配置Hibernate对应的事务管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!--为事务管理器注入sessionFactory引用-->
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!--定义事务模板类,模板类增加abstract="true"属性-->
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<!--注入事务管理器-->
<property name="transactionManager" ref="transactionManager"/>
<!--配置事务属性-->
<property name="transactionAttributes">
<props>
<!--所有以add开头的方法的事务属性-->
<prop key="add*">PROPAGATION_REQUIRED</prop>
<!--所有以delete开头的方法的事务属性-->
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<!--其他方法的事务属性-->
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
14、创建UserAction.java,实现struts2架构的MVC:
package book.action;
import com.opensymphony.xwork2.ActionContext;
import book.iservice.IUserService;
import book.model.Admin;
public class UserAction {
private String userName;
private String userPassword;
private String msg;
private IUserService iuserService;
public void setIUserService(IUserService iuserService){
this.iuserService=iuserService;
}
public String execute()throws Exception{
Admin user=iuserService.findByUsernameAndPassword(userName, userPassword);
if(user!=null){
msg="登录成功!"+user.getUName();
ActionContext.getContext().getSession().put("user",user);
}else{
msg="登录失败!<a href=\"JavaScript:window.history.back()\">返回</a>";
}
return "msg";
}
public void setUserName(String userName){
this.userName=userName;
}
public void setUserPassword(String userPassword){
this.userPassword=userPassword;
}
public String getMsg(){
return msg;
}
}
15、在文件中在applicationContext.xml文件中添加如下语句,配置action注入:
<!--配置Struts2的Action组件-->
<bean name="UserAction" class="book.action.UserAction">
<!--注入IUserService-->
<property name="IUserService">
<ref bean="IUserService"/>
</property>
</bean>
16、配置struts.xml文件:
<struts>
<package name="book" extends="struts-default">
<action name="UserAction" class="book.action.UserAction">
<result name="msg">/index.jsp</result>
</action>
</package>
</struts>
17、创建如下两个页面:
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字符串。
18. 生成项目,并运行http://localhost:8080/login/login.jsp
发表评论
-
确认对话框ConfirmDialog和选择对话框OptionDialog:猜数游戏
2012-04-07 18:22 30926确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7238Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22589java信息对话框:MessageDialog是一个非常 ... -
从头学起:struts2(1)
2011-12-15 23:10 1407从头学起:struts2(1)从页面跳转说起:先看一个例子,使 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 18871、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8181在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于servlet+hibernate分层架构
2011-11-21 12:13 3204本实验使用servlet+hibernate分层结构,目的是 ... -
登录系统-基于struts2的分层架构
2011-11-19 21:48 27471.下载支持Netbeans7.0的Struts2插件,在工具 ... -
登录系统-基于servlet
2011-11-19 19:48 31661. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 41971.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1528基于NetBeans7.0的 Hebernate入门 ... -
实验13 数据库的连接:JDBC*
2011-03-28 22:02 1266一、实验目的 了解JDBC核心API,利用JDBC核心API ... -
实验14 JSP与Servlet技术*
2011-03-28 22:01 1291一、实验目的 1. 理解JSP元素的概念 2. 理解JSP ... -
实验12 网络编程
2011-03-28 21:59 1239一、实验目的 1. 掌握InetAddress类的使用。 2 ... -
实验11 线程
2011-03-28 21:59 893一、实验目的 1. 线程 ... -
实验10 流与文件
2011-03-28 21:58 981一、实验目的 1. 理解数据流的概念 2. 理解Java流的 ... -
实验 9 综合练习
2011-03-28 21:57 802一、实验目的 将所学知识进行综合运用,模仿设计具有实 ... -
实验 8 图形与多媒体处理
2011-03-28 21:56 922一、实验目的 熟悉图形、图像的使用方法,理解计算机动画 ... -
实验 7 建立图形用户界面
2011-03-28 21:54 1398一、实验目的 了解图形用户界面基本组件窗口、按钮、文本 ...
相关推荐
该图片分享网基于三大框架实现的,使用的是MyEclipse2016,deng.登录角色分为用户与管理员,用户功能:1、注册、登录、修改个人信息 2、上传、下载、搜索、查看图文,管理员功能:1、注册、登录、修改个人信息 2、...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...
Struts1.2、Spring1.2和Hibernate2.0是经典的Java企业级开发框架组合,它们分别负责不同的职责,共同构建了一个强大的后端架构。Struts1.2作为MVC(模型-视图-控制器)框架,主要处理前端请求并控制页面展示;Spring...
Struts2、Spring、Hibernate和MySQL是Java Web开发中常用的技术栈,它们组合起来可以构建一个功能完善的权限管理系统。下面将分别介绍这四个组件及其在权限管理中的应用。 1. **Struts2**:Struts2是一个基于MVC...
通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...
Dwr2、Struts2、Spring2.5和Hibernate3各自扮演着关键的角色,共同实现了分层架构,确保各组件专注于自身的核心功能。 Dwr2,即Direct Web Remoting 2,是一个JavaScript到服务器端Java的远程调用框架,主要用于...
SSH是Java开发中的一种经典架构组合,代表Spring、Struts和Hibernate这三个开源框架的结合。在本项目"SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip"中,开发者使用了SpringMVC4作为表现层,Spring4...
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用在企业级Web应用开发中极为常见。这个管理系统就是基于这三个框架的集成,提供了高效、灵活且可维护的解决方案。 Struts2作为MVC(Model-View-...
《基于Struts、Spring和Hibernate的网上订餐系统详解》 网上订餐系统是一种便捷的在线服务,它结合了互联网技术与餐饮业,为用户提供方便快捷的订餐体验。本系统采用主流的Java企业级开发框架——Struts、Spring和...
Struts2、Spring2.5和Hibernate3.3是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个例子展示了如何将这三个框架整合在一起,实现一个简单的图书管理系统的增删改操作。 **Struts...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面:Struts2处理表现层逻辑,Spring提供业务层管理和依赖注入,而Hibernate则专注于持久化层,管理数据库交互。将这三者...
本系统采用的是经典的“Struts+Spring+Hibernate+Mysql”架构,也被称为SSH框架,这是一套广泛应用于Java Web开发的技术栈,具有良好的分层设计和组件化特性。 **Struts** 是一个基于MVC(Model-View-Controller)...
**Struts2** 是一个基于MVC设计模式的开源框架,它提供了一种分层架构来组织应用,包括Action、Result和Interceptor等组件。Struts2通过拦截器实现了请求的处理,允许开发者定义自定义拦截器来实现特定功能,如日志...
Struts 2.3.24.1、Spring 4.2.1 和 Hibernate 5.0 是三个在 Java 开发领域中广泛使用的开源框架,它们分别负责 Web 应用的 MVC(Model-View-Controller)架构、依赖注入与服务管理以及对象关系映射(ORM)。...
Struts2、Spring4和Hibernate4是Java Web开发中经典的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个整合项目提供了SSH框架的基础应用实例,适合初学者学习和理解这三大框架如何协同...