struts+hibernate+spring入门例子
来源:互联网 发布:微信淘宝头像图片大全 编辑:程序博客网 时间:2024/04/30 21:06
环境:eclipse3.2+myeclipse5.0m2,在tomcat上顺利运行,为了简便开发,这一个例子我没有写业务逻辑层,而且包名的设置也不太合理,各位可以自行修改.构造好开发环境,把需要的jar导入web project中.
1、创建一个名叫demo数据库,这里用mysql
再创建一个表:
create table user (
id int(15) not null auto_increment,
username varchar(50) not null,
password varchar(50) not null,
primary key(id)
)type=INNODB;
记得type要设为innodb或bdb类型的,不然的话不支持数据库事务.
// Fields
// Constructors
/** full constructor */
public AbstractUser(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
// Property accessors
User.java文件
package com.test;
// Generated by MyEclipse - Hibernate Tools
/** full constructor */
public User(Integer id, String username, String password) {
super(id, username, password);
}
}
User.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
3、创建strutsMVC的框架的一些具体实现内容,把struts中的action控制放在spring中去配置,因为可以利用spring中DI或IoC的功能.
struts的配置文件struts-config.xml配置如下,<action>里面type元素的设置,还有设置两个<plug-in/>,第一个用来验证的,第二个是spring和struts结合的一个配置,可以用spring来控制struts的action:
1、创建一个名叫demo数据库,这里用mysql
再创建一个表:
create table user (
id int(15) not null auto_increment,
username varchar(50) not null,
password varchar(50) not null,
primary key(id)
)type=INNODB;
记得type要设为innodb或bdb类型的,不然的话不支持数据库事务.
自行插入几条数据;
2、domain层和DAO层.
使用MyEclipse的数据Database Explorer工具创建User.hmb.xml、AbstractUser.java、User.java映射文件。具体文件如下:
AbstractUser.java文件:
package com.test;
使用MyEclipse的数据Database Explorer工具创建User.hmb.xml、AbstractUser.java、User.java映射文件。具体文件如下:
AbstractUser.java文件:
package com.test;
public abstract class AbstractUser implements java.io.Serializable {
// Fields
private Integer id;
private String username;
private String password;
private String username;
private String password;
// Constructors
/** default constructor */
public AbstractUser() {
}
public AbstractUser() {
}
/** full constructor */
public AbstractUser(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
User.java文件
package com.test;
// Generated by MyEclipse - Hibernate Tools
/**
* User generated by MyEclipse - Hibernate Tools
*/
public class User extends AbstractUser implements java.io.Serializable {
* User generated by MyEclipse - Hibernate Tools
*/
public class User extends AbstractUser implements java.io.Serializable {
// Constructors
/** default constructor */
public User() {
}
public User() {
}
/** full constructor */
public User(Integer id, String username, String password) {
super(id, username, password);
}
}
User.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
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.test.User" table="user">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
</class>
</hibernate-mapping>
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
<class name="com.test.User" table="user">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
</class>
</hibernate-mapping>
提示:User.java,和User.hbm.xm两个文件放在同一个包文件夹里面。
接下来是创建UserDAO接口,和UserDAO接口的实现UserDAOImp.
UserDAO文件:
package com.test;">
接下来是创建UserDAO接口,和UserDAO接口的实现UserDAOImp.
UserDAO文件:
package com.test;">
publicinterface UserDAO {
publicabstractboolean isValidUser(String username,String password);
}
UserDAOImp文件,主要是用来验证用户名和密码正确不:
package com.test;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDAOImp extends HibernateDaoSupport implements UserDAO{
private static String hql = "from User as u where u.username=:userName"+" and u.password=:passWord";
public boolean isValidUser(String username, String password) {
Query query= this.getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);
query.setString("userName", username);
query.setString("passWord", password);
return (query.list().size()>0);
}
}
我把配置文件放在最后才说,即是spring的的配置文件,这里利用spring来管理hibernate的dataSource和事务管理.
3、创建strutsMVC的框架的一些具体实现内容,把struts中的action控制放在spring中去配置,因为可以利用spring中DI或IoC的功能.
新建一个index.jsp文件,如下所示:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<a href="login.jsp">进入登录系统</a>
</body>
</html>
再创建一个login.jsp文件
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>login.jsp</title>
</head>
<body>
<html:form action="/login">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html:html>
登录成功后的success.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>success.jsp</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
Welcome!<br/>
<logic:present name="loginForm">
欢迎你,<bean:write name="loginForm" property="username"/>
</logic:present>
</body>
</html:html>
创建struts框架的action文件,LoginAction.java文件,这里没有创建form文件,在struts-config.xml中配置.
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.test.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.DynaValidatorForm;
import com.test.UserDAO;
/**
* MyEclipse Struts
* Creation date: 08-08-2006
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends Action {
private UserDAO userDAO;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaValidatorForm loginForm = (DynaValidatorForm) form;// TODO Auto-generated method stub
String username = (String)loginForm.get("username");
String password = (String)loginForm.get("password");
if (userDAO.isValidUser(username,password)) {
return mapping.findForward("success");
} else {
return mapping.getInputForward();
}
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
struts的配置文件struts-config.xml配置如下,<action>里面type元素的设置,还有设置两个<plug-in/>,第一个用来验证的,第二个是spring和struts结合的一个配置,可以用spring来控制struts的action:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="password" type="java.lang.String"></form-property>
<form-property name="username" type="java.lang.String"></form-property>
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards >
<forward name="success" path="/success.jsp"/>
</global-forwards>
<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
validate="true"
type="org.springframework.web.struts.DelegatingActionProxy" />
</action-mappings>
<message-resources parameter="com.test.struts.ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
</struts-config>
在WEB-INF/创建validation.xml文件,用来验证密码和用户名的
文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<form-validation>
<formset>
<form name="loginForm">
<field property="username" depends="required">
<arg0 key="prompt.username" />
</field>
<field property="password" depends="required">
<arg0 key="prompt.password" />
</field>
</form>
</formset>
</form-validation>
同时在ApplicationResources.properties文件里添加如下内容:
prompt.username=用户名称
prompt.password=登录密码
errors.required={0} 是必须的.
4、最关键的一步,也是最后一步,酷暑spring的配置文件applicationContext.xml
具体文件,根据具体的情况把用户名和密码修改即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/demo</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>12345</value>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/test/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="userDAO" class="com.test.UserDAOImp">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="userDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="userDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="is*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">
<property name="userDAO">
<ref local="userDAOProxy"/>
</property>
</bean>
</beans>
注意: <bean name="/login" class="com.test.struts.action.LoginAction" singleton="false">中name的值要和struts配置文件的<action>里面的path子元素一样,还有建议把singleton设置为false,解决了Struts中有时会发生错误的线程安全问题.
5、在tomcat发布运行, 体验一下动手带来的乐趣
转载请标明出处,谢谢你的合作.http://blog.csdn.net/lightersky/archive/2006/08/11/1050374.aspx
上面这个例子是我转的,我前几天也配置成功了,不过是struts+hibernate和这个基本上一样,签于本人的语文水平有限,所以就直接转过来了,不过我用的是eclipse3.1.1+myeclipse4.1+tomcat5.0.28不过这个都没什么关系,只要基本思路清晰就成了。。呵呵。。。。。。
- struts+hibernate+spring入门例子
- hibernate+spring+struts例子
- struts&hibernate&spring例子
- struts+hibernate+spring一个入门的实用例子
- struts+hibernate+spring一个入门的实用例子(上)
- struts+hibernate+spring一个入门的实用例子(下)
- struts+hibernate+spring一个入门的实用例子
- struts+hibernate+spring一个入门的实用例子(转)
- 【原创】Struts+Hibernate+Spring例子..
- struts+spring+hibernate快速入门
- struts+spring+hibernate快速入门
- Struts+Spring+Hibernate快速入门
- Struts+Spring+Hibernate快速入门
- Struts+Spring+Hibernate快速入门
- Struts+Spring+Hibernate快速入门
- Struts+Spring+Hibernate快速入门
- struts+spring+hibernate快速入门
- Struts+Spring+Hibernate快速入门
- 用JDBC操纵BLOB和CLOB数据
- PetShop之业务逻辑层设计
- 2006年,北京的最后一场雪
- 改善脑力的70条方法[翻译]
- 对移动用户的提示
- struts+hibernate+spring入门例子
- PetShop之表示层设计
- 程序员修身养性的十大原则
- 设计一个自动编码解码库
- 开设技术blog
- 初用apache.commons.beanutils.BeanUtils
- 1、最简单的AVR程序
- 推荐的一些IT网站论坛
- 活动桌面处理和一个例子