基于Struts+Spring+Hibernate的Web应用框架的搭建(一)
来源:互联网 发布:c语言中return是返回哪 编辑:程序博客网 时间:2024/05/16 12:02
这个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
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html>
<head>
<title><bean:message key="register.title"/></title>
</head>
<body>
<html:errors />
<html:form action="register.do">
<table >
<tr>
<td><bean:message key="register.username"/>:</td>
<td><html:text property="register.username" /></td>
</tr>
<tr>
<td><bean:message key="register.password"/>:</td>
<td><html:password property="register.password" /></td>
</tr>
<tr>
<td><bean:message key="register.email"/>:</td>
<td><html:text property="register.email" /></td>
</tr>
<tr>
<td colspan="2" align="center">
<html:submit><bean:message key="register.submit"/></html:submit>
</td>
</tr>
</table>
</html:form>
</body>
</html>
4.创建注册成功后显示的页面registerSuccess.jsp
<%@ taglib uri=" http://struts.apache.org/tags-bean " prefix="bean" %>
<html>
<head>
<title><bean:message key="register.title"/></title>
</head>
<body>
<bean:message key="register.success"/>
</body>
</html>
5. 创建消息资源文件registermessages.properties
register.title = Register
register.username = UserName
register.password = Password
register.email = Email
register.submit = Submit
register.success = RegisterSuccess!
6. 由于我们使用动态ActionForm,只需在Struts-config.xml中配置与register.jsp页面中form对应的ActionForm。
7. 创建配置文件Struts-config.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<!--
Default configuration file for examples application.
Each module also has its own struts-config under: /WEB-INF/$MODULE/
@version $Revision: 1.9 $ $Date: 2006-02-13 18:39:49 -0700 (Mon, 13 Feb 2006) $
-->
<struts-config>
<form-beans >
<!—配置register.jsp中form对应的ActionFrom-->
<form-bean name="registerForm" type="org.apache.struts.action.DynaActionForm" >
<form-property name="register" type="test.register.entity.Register"/>
</form-bean>
</form-beans>
<!—配置对Struts Action请求的代理-->
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
<!—配置register.jsp中form对应的Action-->
<action-mappings >
<action
name="registerForm"
path="/register"
scope="request"
type="test.register.action.RegisterAction"
validate="false"
input="register.jsp">
<forward name="success" path="/registerSuccess.jsp" />
</action>
</action-mappings>
<message-resources parameter="test.register.registermessages" />
<!—配置插件,让action能访问sping容器-->
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/action-servlets.xml" />
</plug-in>
</struts-config>
8. 创建实体类Register.java
package test.register.entity;
import java.io.Serializable;
publicclass Register implements Serializable{
privatestaticfinallongserialVersionUID = 1521645755684977819L;
private Long id;
private String username;
private String password;
private String email;
public Register(){
}
public String getEmail() {
returnemail;
}
publicvoid setEmail(String email) {
this.email = email;
}
public Long getId() {
returnid;
}
publicvoid setId(Long id) {
this.id = id;
}
public String getPassword() {
returnpassword;
}
publicvoid setPassword(String password) {
this.password = password;
}
public String getUsername() {
returnusername;
}
publicvoid setUsername(String username) {
this.username = username;
}
}
9.创建Hibernate映射文件,Register.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">
<hibernate-mapping
package="test.register.entity">
<class name="Register" table="REGISTER">
<id name="id">
<generator class="native"/>
</id>
<property name="username"
not-null="true"
length="15"
column="USERNAME"/>
<property name="password"
not-null="true"
length="15"
column="PASSWORD"/>
<property name="email"
not-null="true"
length="15"
column="EMAIL"/>
</class>
</hibernate-mapping>
9. 创建Spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/register"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<value>classpath:test/register/entity/</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
<bean id="registerDAO" class="test.register.dao.RegisterDAO">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="registerService" class="test.register.service.RegisterService">
<property name="registerDAO">
<ref local="registerDAO"/>
</property>
</bean>
</beans>
10. 创建数据访问对象RegisterDAO.java
package test.register.dao;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import test.register.entity.Register;
publicclass RegisterDAO extends HibernateDaoSupport{
public Register saveRegister(Register r){
try{
this.getHibernateTemplate().saveOrUpdate(r);
return r;
}catch (Exception e) {
e.printStackTrace();
returnnull;
}
}
}
12.创建服务对象RegisterService.java
package test.register.service;
import test.register.dao.RegisterDAO;
import test.register.entity.Register;
publicclass RegisterService {
private RegisterDAO registerDAO;
publicRegisterDAO getRegisterDAO() {
returnregisterDAO;
}
publicvoid setRegisterDAO(RegisterDAO registerDAO) {
this.registerDAO = registerDAO;
}
public Register saveRegister(Register r){
this.getRegisterDAO().saveRegister(r);
return r;
}
}
11. 创建web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>register.jsp</welcome-file>
</welcome-file-list>
</web-app>
14.创建RegisterAction.java
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.action.DynaActionForm;
import test.register.entity.Register;
import test.register.service.RegisterService;
publicclass RegisterAction extends Action{
private RegisterService registerService;
public RegisterService getRegisterService() {
returnregisterService;
}
publicvoid setRegisterService(RegisterService registerService) {
this.registerService = registerService;
}
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
Register r = (Register)((DynaActionForm)form).get("register");
getRegisterService().saveRegister(r);
return mapping.findForward("success");
}
}
在RegisterAction.java中,为了获取spring容器中的RegisterService对象,我们要对struts-config.xml作下修改,具体修改如下:
在struts-config.xml增加controller元素
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
目的告诉Struts自动将对Action的请求委托给Spring上下文中的Struts Action来处理。
并且为了让Struts能访问Spring容器,还必须在struts-config.xml注册一个能访问Spring上下文的插件:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/action-servlets.xml" />
</plug-in>
action-servlets.xml文件的具体内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name="/register" class="test.register.action.RegisterAction">
<property name="registerService" ref="registerService"/>
</bean>
</beans>
注意:这里bean是name属性,而不是id。
至此,一个完整的SSH(Struts,Spring,Hibernate)框架搭建好了。
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(一)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(二)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(三)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(四)
- (转)struts+spring+hibernate的web应用(一)架构搭建
- struts+spring+hibernate的web应用<一> 架构搭建
- JAVA-WEB的SSH(Spring Hibernate Struts)环境搭建一(Spring+Hibernate)
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- JAVA-WEB的SSH(Spring Hibernate Struts)环境搭建一(Spring)
- 使用struts + spring + hibernate组装你的web应用框架(转载)
- java传统框架ssh---struts、spring、hibernate框架的搭建
- 基于Spring+Hibernate+Struts框架分页的一种实现
- 基于Struts、Spring、Hibernate的JavaWeb开发SSH框架配置
- struts+spring+hibernate基本项目框架的搭建(1)
- struts+spring+hibernate基本项目框架的搭建(2)
- 滑落--想不到更好的词了
- BLESS自己能通过2面
- google影像命名与经伟度的转换
- 为什么你的软件需要IDE特征?
- Inside Object: 面向对象的发展
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(一)
- 反对十博士反对于丹
- yum研究笔记
- 从现在开始专著OpenGIS的研究
- 用户认证管理设计方案
- Web开发技术资源收藏
- MFC中对话框的数据交换(DDX)和数据校验(DDV)
- 昨日沿东西冲走海岸线归来
- 接口多继承