- 浏览: 195160 次
- 性别:
- 来自: 包头
最新评论
-
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 30855确认对话框ConfirmDialog给出提示信息和若干 ... -
输入对话框showInputDialog综合应用:猜数游戏
2012-04-06 17:13 7182Java输入对话框共有6个重载方法showInputDi ... -
消息对话框MessageDialog综合应用:九九表
2012-04-01 23:39 22514java信息对话框:MessageDialog是一个非常 ... -
从头学起:struts2(1)
2011-12-15 23:10 1304从头学起:struts2(1)从页面跳转说起:先看一个例子,使 ... -
登录系统-基于struts2+spring+hibernateJPA分层架构
2011-12-08 21:27 17991、新建一个mysql数据库,并新建连接,数据库结构如下图所示 ... -
依赖注入入门-从dao到service
2011-11-23 18:30 8121在分层的web应用系统中,通常将数据操作分为dao数据层和se ... -
登录系统-基于struts2+hibernate分层架构
2011-11-21 23:07 296本实验使用struts+hibernate分层结构,目的是可以 ... -
登录系统-基于servlet+hibernate分层架构
2011-11-21 12:13 3112本实验使用servlet+hibernate分层结构,目的是 ... -
登录系统-基于struts2的分层架构
2011-11-19 21:48 26301.下载支持Netbeans7.0的Struts2插件,在工具 ... -
登录系统-基于servlet
2011-11-19 19:48 30971. 新建一个web项目,在项目中添加两个包:Ja ... -
登录系统-基于servlet+hibernate
2011-11-19 19:01 41371.新建一个java web项目,在步骤4中选择Hiber ... -
基于NetBeans7.0的Hibernate编程入门
2011-11-19 11:47 1445基于NetBeans7.0的 Hebernate入门 ... -
实验13 数据库的连接:JDBC*
2011-03-28 22:02 1221一、实验目的 了解JDBC核心API,利用JDBC核心API ... -
实验14 JSP与Servlet技术*
2011-03-28 22:01 1207一、实验目的 1. 理解JSP元素的概念 2. 理解JSP ... -
实验12 网络编程
2011-03-28 21:59 1196一、实验目的 1. 掌握InetAddress类的使用。 2 ... -
实验11 线程
2011-03-28 21:59 850一、实验目的 1. 线程 ... -
实验10 流与文件
2011-03-28 21:58 924一、实验目的 1. 理解数据流的概念 2. 理解Java流的 ... -
实验 9 综合练习
2011-03-28 21:57 728一、实验目的 将所学知识进行综合运用,模仿设计具有实 ... -
实验 8 图形与多媒体处理
2011-03-28 21:56 860一、实验目的 熟悉图形、图像的使用方法,理解计算机动画 ... -
实验 7 建立图形用户界面
2011-03-28 21:54 1354一、实验目的 了解图形用户界面基本组件窗口、按钮、文本 ...
相关推荐
该图片分享网基于三大框架实现的,使用的是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企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
网上找了很多的Struts2+spring4+hibernate4+myql5.1的代码,但是总是找不到,为了更好地理解和学习,手动搞一个,同时上传出来发给大家下载!绝对亲测! 该部分的代码示例,简单的描述了一个基本的框架搭建过程,...
《轻量级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领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...
本书是《轻量级J2EE企业应用实战》的第二版,同时还融合了《整合Struts+Hibernate+Spring...尤其适合于对Struts 2、Spring、Hibernate了解不够深入,或对Struts 2+ Spring+Hibernate整合开发不太熟悉的开发人员阅读。
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。 《轻量级Java EE企业...
介绍Struts,Hibernate和Spring三个开源框架及它们对MVC设计模式的实现,阐述如何更好地将三者结合起来构建一个健壮、高效、易于扩展的J2EE分层架构,并给出该架构的结构图,分析它的优缺点,并且通过网上购物系统给出了...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及 Struts 、 Hibernate 和 Spring 三个 开源框架,还介绍了 Tomcat 和 Jetty 两个开源 Web 服务器的详细用法,以及 J2EE 应用的几种常用 架构。 详尽而...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及 Struts 、 Hibernate 和 Spring 三个开源框架,还介绍了 Tomcat 和 Jetty 两个开源 Web 服务器的详细用法,以及 J2EE 应用的几种常用架构。 详尽而细致地...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅是一本J2EE ...
本书所介绍的内容是作者多年J2EE 开发经验的总结,内容涉及Struts 、Hibernate 和Spring 三个开源 框架,还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。 本书不仅...