您的位置:首页 > 编程语言 > Java开发

基于Struts+Spring+Hibernate的Web应用框架的搭建(一)

2007-03-12 08:44 447 查看
这个Web应用很简单,就是实现一个用户注册页面,当用户在register.jsp页面输入注册信息,点保存,如果成功,进入registerSuccess.jsp页面。这个应用虽然很小,但它也有三层组成,表示层由Struts框架负责,业务层由Spring框架负责,持久层由Hibernate框架负责。
开发环境:MyEclipse 5+ MySQL4 + Struts1.3.5 + Spring2.0.1 + Hibernate3.2.1 + Tomcat5.0.19 + jdk1.4.2_06.
1. 首先,我们在MyEclipse中新建一个Web Project ,login;
2.然后把Struts,Spring,Hibernate框架所需要的jar包以及MySQL的驱动拷贝到WEB-INF/lib下;
3.创建用户注册页面register.jsp

[align=left]<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>[/align]
[align=left]<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>[/align]
[align=left]<html>[/align]
[align=left] [/align]
[align=left]<head>[/align]
[align=left] <title><bean:message key="register.title"/></title>[/align]
[align=left]</head>[/align]
[align=left] [/align]
[align=left]<body>[/align]
[align=left]<html:errors />[/align]
[align=left] <html:form action="register.do">[/align]
[align=left] <table >[/align]
[align=left] <tr>[/align]
[align=left] <td><bean:message key="register.username"/>:</td>[/align]
[align=left] <td><html:text property="register.username" /></td>[/align]
[align=left] </tr>[/align]
[align=left] <tr>[/align]
[align=left] <td><bean:message key="register.password"/>:</td>[/align]
[align=left] <td><html:password property="register.password" /></td>[/align]
[align=left] </tr>[/align]
[align=left] <tr>[/align]
[align=left] <td><bean:message key="register.email"/>:</td>[/align]
[align=left] <td><html:text property="register.email" /></td>[/align]
[align=left] </tr>[/align]
[align=left] <tr>[/align]
[align=left] <td colspan="2" align="center">[/align]
[align=left] <html:submit><bean:message key="register.submit"/></html:submit>[/align]
[align=left] </td>[/align]
[align=left] </tr>[/align]
[align=left] </table>[/align]
[align=left] </html:form>[/align]
[align=left]</body>[/align]
[align=left] [/align]
[align=left]</html>[/align]
4.创建注册成功后显示的页面registerSuccess.jsp
[align=left]<%@ taglib uri=" http://struts.apache.org/tags-bean " prefix="bean" %>[/align]
[align=left]<html>[/align]
[align=left] [/align]
[align=left]<head>[/align]
[align=left] <title><bean:message key="register.title"/></title>[/align]
[align=left]</head>[/align]
[align=left] [/align]
[align=left]<body>[/align]
[align=left] <bean:message key="register.success"/>[/align]
[align=left]</body>[/align]
[align=left] [/align]
</html>

5. 创建消息资源文件registermessages.properties

[align=left]register.title = Register[/align]
[align=left]register.username = UserName[/align]
[align=left]register.password = Password[/align]
[align=left]register.email = Email[/align]
[align=left]register.submit = Submit[/align]
register.success = RegisterSuccess!

6. 由于我们使用动态ActionForm,只需在Struts-config.xml中配置与register.jsp页面中form对应的ActionForm。
7. 创建配置文件Struts-config.xml
[align=left]<?xml version="1.0" encoding="iso-8859-1"?>[/align]
[align=left]<!DOCTYPE struts-config PUBLIC[/align]
[align=left] "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"[/align]
[align=left] "http://struts.apache.org/dtds/struts-config_1_3.dtd">[/align]
[align=left]<!--[/align]
[align=left] Default configuration file for examples application.[/align]
[align=left] Each module also has its own struts-config under: /WEB-INF/$MODULE/[/align]
[align=left] @version $Revision: 1.9 $ $Date: 2006-02-13 18:39:49 -0700 (Mon, 13 Feb 2006) $[/align]
[align=left]-->[/align]
[align=left]<struts-config>[/align]
[align=left] <form-beans >[/align]
[align=left] <!—配置register.jsp中form对应的ActionFrom-->[/align]
[align=left] <form-bean name="registerForm" type="org.apache.struts.action.DynaActionForm" >[/align]
[align=left] <form-property name="register" type="test.register.entity.Register"/> [/align]
[align=left] </form-bean>[/align]
[align=left] </form-beans>[/align]
[align=left] <!—配置对Struts Action请求的代理-->[/align]
[align=left] <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>[/align]
[align=left] <!—配置register.jsp中form对应的Action-->[/align]
[align=left] <action-mappings >[/align]
[align=left] <action [/align]
[align=left] name="registerForm"[/align]
[align=left] path="/register"[/align]
[align=left] scope="request"[/align]
[align=left] type="test.register.action.RegisterAction"[/align]
[align=left] validate="false"[/align]
[align=left] input="register.jsp">[/align]
[align=left] <forward name="success" path="/registerSuccess.jsp" />[/align]
[align=left] </action>[/align]
[align=left] </action-mappings>[/align]
[align=left] [/align]
[align=left] <message-resources parameter="test.register.registermessages" />[/align]
[align=left] <!—配置插件,让action能访问sping容器-->[/align]
[align=left] <plug-in[/align]
[align=left] className="org.springframework.web.struts.ContextLoaderPlugIn">[/align]
[align=left] <set-property property="contextConfigLocation"[/align]
[align=left] value="/WEB-INF/action-servlets.xml" />[/align]
[align=left]</plug-in>[/align]
[align=left] [/align]
</struts-config>
8. 创建实体类Register.java
[align=left]package test.register.entity;[/align]
[align=left] [/align]
[align=left]import java.io.Serializable;[/align]
[align=left] [/align]
[align=left]publicclass Register implements Serializable{ [/align]
[align=left] privatestaticfinallongserialVersionUID = 1521645755684977819L;[/align]
[align=left] private Long id;[/align]
[align=left] private String username;[/align]
[align=left] private String password;[/align]
[align=left] private String email;[/align]
[align=left] [/align]
[align=left] public Register(){[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String getEmail() {[/align]
[align=left] returnemail;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setEmail(String email) {[/align]
[align=left] this.email = email;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public Long getId() {[/align]
[align=left] returnid;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setId(Long id) {[/align]
[align=left] this.id = id;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String getPassword() {[/align]
[align=left] returnpassword;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setPassword(String password) {[/align]
[align=left] this.password = password;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String getUsername() {[/align]
[align=left] returnusername;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setUsername(String username) {[/align]
[align=left] this.username = username;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left]}[/align]
9.创建Hibernate映射文件,Register.hbm.xml
[align=left]<?xml version="1.0"?>[/align]
[align=left]<!DOCTYPE hibernate-mapping PUBLIC [/align]
[align=left] "-//Hibernate/Hibernate Mapping DTD 3.0//EN"[/align]
[align=left] "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">[/align]
[align=left]<hibernate-mapping [/align]
[align=left] package="test.register.entity">[/align]
[align=left] [/align]
[align=left] <class name="Register" table="REGISTER">[/align]
[align=left] [/align]
[align=left] <id name="id">[/align]
[align=left] <generator class="native"/>[/align]
[align=left] </id>[/align]
[align=left] [/align]
[align=left] <property name="username" [/align]
[align=left] not-null="true"[/align]
[align=left] length="15"[/align]
[align=left] column="USERNAME"/>[/align]
[align=left] [/align]
[align=left] <property name="password" [/align]
[align=left] not-null="true"[/align]
[align=left] length="15"[/align]
[align=left] column="PASSWORD"/>[/align]
[align=left] [/align]
[align=left] <property name="email"[/align]
[align=left] not-null="true"[/align]
[align=left] length="15"[/align]
[align=left] column="EMAIL"/> [/align]
[align=left] [/align]
[align=left] </class>[/align]
[align=left] [/align]
</hibernate-mapping>

9. 创建Spring配置文件applicationContext.xml
[align=left]<?xml version="1.0" encoding="UTF-8"?>[/align]
[align=left]<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">[/align]
[align=left] [/align]
[align=left]<beans> [/align]
[align=left] [/align]
[align=left] <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">[/align]
[align=left]<property name="driverClassName" value="com.mysql.jdbc.Driver"/>[/align]
[align=left] <property name="url" value="jdbc:mysql://localhost/register"/>[/align]
[align=left] <property name="username" value="root"/>[/align]
[align=left] <property name="password" value="root"/>[/align]
[align=left] </bean> [/align]
[align=left] [/align]
[align=left] <!-- Hibernate SessionFactory -->[/align]
[align=left] <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">[/align]
[align=left] <property name="dataSource" ref="dataSource"/>[/align]
[align=left] <property name="mappingDirectoryLocations">[/align]
[align=left] <value>classpath:test/register/entity/</value>[/align]
[align=left] </property>[/align]
[align=left] <property name="hibernateProperties">[/align]
[align=left] <props>[/align]
[align=left] <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>[/align]
[align=left] <prop key="hibernate.show_sql">true</prop>[/align]
[align=left] <prop key="hibernate.generate_statistics">true</prop>[/align]
[align=left] </props>[/align]
[align=left] </property> [/align]
[align=left] </bean> [/align]
[align=left] [/align]
[align=left] <bean id="registerDAO" class="test.register.dao.RegisterDAO">[/align]
[align=left] <property name="sessionFactory">[/align]
[align=left] <ref local="sessionFactory"/>[/align]
[align=left] </property>[/align]
[align=left] </bean>[/align]
[align=left] [/align]
[align=left] <bean id="registerService" class="test.register.service.RegisterService">[/align]
[align=left] <property name="registerDAO">[/align]
[align=left] <ref local="registerDAO"/>[/align]
[align=left] </property>[/align]
[align=left] </bean>[/align]
[align=left] [/align]
[align=left]</beans>[/align]
10. 创建数据访问对象RegisterDAO.java
[align=left]package test.register.dao;[/align]
[align=left] [/align]
[align=left]import org.springframework.orm.hibernate3.support.HibernateDaoSupport;[/align]
[align=left] [/align]
[align=left]import test.register.entity.Register;[/align]
[align=left] [/align]
[align=left]publicclass RegisterDAO extends HibernateDaoSupport{[/align]
[align=left] [/align]
[align=left] public Register saveRegister(Register r){[/align]
[align=left] try{[/align]
[align=left] this.getHibernateTemplate().saveOrUpdate(r);[/align]
[align=left] return r;[/align]
[align=left] }catch (Exception e) {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] returnnull;[/align]
[align=left] } [/align]
[align=left] }[/align]
}
12.创建服务对象RegisterService.java
[align=left]package test.register.service;[/align]
[align=left] [/align]
[align=left]import test.register.dao.RegisterDAO;[/align]
[align=left]import test.register.entity.Register;[/align]
[align=left] [/align]
[align=left]publicclass RegisterService {[/align]
[align=left] private RegisterDAO registerDAO; [/align]
[align=left] [/align]
[align=left] publicRegisterDAO getRegisterDAO() {[/align]
[align=left] returnregisterDAO;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setRegisterDAO(RegisterDAO registerDAO) {[/align]
[align=left] this.registerDAO = registerDAO;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public Register saveRegister(Register r){[/align]
[align=left] this.getRegisterDAO().saveRegister(r);[/align]
[align=left] return r;[/align]
[align=left] }[/align]
}

11. 创建web.xml
[align=left]<?xml version="1.0" encoding="UTF-8"?>[/align]
[align=left]<!DOCTYPE web-app PUBLIC[/align]
[align=left] "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"[/align]
[align=left] "http://java.sun.com/dtd/web-app_2_3.dtd">[/align]
[align=left]<web-app>[/align]
[align=left]<context-param>[/align]
[align=left] <param-name>contextConfigLocation</param-name>[/align]
[align=left] <param-value>/WEB-INF/applicationContext.xml</param-value>[/align]
[align=left]</context-param>[/align]
[align=left]<listener>[/align]
[align=left] <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>[/align]
[align=left]</listener>[/align]
[align=left]<servlet>[/align]
[align=left] <servlet-name>action</servlet-name>[/align]
[align=left] <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>[/align]
[align=left] <init-param>[/align]
[align=left] <param-name>config</param-name>[/align]
[align=left] <param-value>/WEB-INF/struts-config.xml</param-value>[/align]
[align=left] </init-param>[/align]
[align=left] <init-param>[/align]
[align=left] <param-name>debug</param-name>[/align]
[align=left] <param-value>3</param-value>[/align]
[align=left] </init-param>[/align]
[align=left] <init-param>[/align]
[align=left] <param-name>detail</param-name>[/align]
[align=left] <param-value>3</param-value>[/align]
[align=left] </init-param>[/align]
[align=left] <load-on-startup>0</load-on-startup>[/align]
[align=left] </servlet>[/align]
[align=left] [/align]
[align=left] <servlet-mapping>[/align]
[align=left] <servlet-name>action</servlet-name>[/align]
[align=left] <url-pattern>*.do</url-pattern>[/align]
[align=left] </servlet-mapping>[/align]
[align=left] [/align]
[align=left] <welcome-file-list>[/align]
[align=left] <welcome-file>register.jsp</welcome-file>[/align]
[align=left] </welcome-file-list>[/align]
[align=left] [/align]
[align=left]</web-app>[/align]
14.创建RegisterAction.java
[align=left]import javax.servlet.http.HttpServletRequest;[/align]
[align=left]import javax.servlet.http.HttpServletResponse;[/align]
[align=left] [/align]
[align=left]import org.apache.struts.action.Action;[/align]
[align=left]import org.apache.struts.action.ActionForm;[/align]
[align=left]import org.apache.struts.action.ActionForward;[/align]
[align=left]import org.apache.struts.action.ActionMapping;[/align]
[align=left]import org.apache.struts.action.DynaActionForm;[/align]
[align=left] [/align]
[align=left]import test.register.entity.Register;[/align]
[align=left]import test.register.service.RegisterService;[/align]
[align=left] [/align]
[align=left]publicclass RegisterAction extends Action{[/align]
[align=left] [/align]
[align=left] private RegisterService registerService;[/align]
[align=left] [/align]
[align=left] public RegisterService getRegisterService() {[/align]
[align=left] returnregisterService;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setRegisterService(RegisterService registerService) {[/align]
[align=left] this.registerService = registerService;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public ActionForward execute(ActionMapping mapping,[/align]
[align=left] ActionForm form, [/align]
[align=left] HttpServletRequest request, [/align]
[align=left] HttpServletResponse response) [/align]
[align=left] throws Exception {[/align]
[align=left] [/align]
[align=left] Register r = (Register)((DynaActionForm)form).get("register"); [/align]
[align=left] getRegisterService().saveRegister(r); [/align]
[align=left] return mapping.findForward("success");[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]在RegisterAction.java中,为了获取spring容器中的RegisterService对象,我们要对struts-config.xml作下修改,具体修改如下:[/align]
[align=left]在struts-config.xml增加controller元素[/align]
[align=left]<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>[/align]
[align=left]目的告诉Struts自动将对Action的请求委托给Spring上下文中的Struts Action来处理。[/align]
[align=left]并且为了让Struts能访问Spring容器,还必须在struts-config.xml注册一个能访问Spring上下文的插件:[/align]
[align=left]<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">[/align]
[align=left] <set-property property="contextConfigLocation"[/align]
[align=left] value="/WEB-INF/action-servlets.xml" />[/align]
[align=left]</plug-in>[/align]
[align=left] [/align]
[align=left]action-servlets.xml文件的具体内容如下:[/align]
[align=left]<?xml version="1.0" encoding="UTF-8"?>[/align]
[align=left]<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">[/align]
[align=left] [/align]
[align=left]<beans> [/align]
[align=left] <bean name="/register" class="test.register.action.RegisterAction">[/align]
[align=left] <property name="registerService" ref="registerService"/> [/align]
[align=left] </bean> [/align]
[align=left]</beans>[/align]
注意:这里bean是name属性,而不是id。
至此,一个完整的SSH(Struts,Spring,Hibernate)框架搭建好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: