在做本例前,需要熟悉对
Struts,
Hibernate的反向工程等的基本操作。
开发工具:MyEclipse+MySQL+Tomcat
说明:本实例是简单注册程序(只有两个属性)
数据库脚本:user.sql
| DROP TABLE IF EXISTS
`user`; CREATE TABLE `user` ( `Id` int(11) NOT NULL
AUTO_INCREMENT, `username` varchar(255) DEFAULT
NULL, `password` varchar(255) DEFAULT
NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=3
DEFAULT CHARSET=utf8; | 
 
开发步骤:
一
1建立Web项目
   选择:
Java EE 5.5
2添加Struts支持(项目右键àMyEclipse Struts Capabilities …)
      
选择:
1)Struts specification: Struts 1.3
2)Base package for 那位classes:edu.syict.struts
3添加Spring支持(项目右键àMyEclipse Spring Capabilities …)
      
选择:
1) Spring
version:Spring 2.0
2) Select the libraries to add the
buildpath:
Spring 2.0 AOP Libraries
Spring 2.0 Core
Libraries
Spring 2.0 Persistence Core
Libraries
Spring 2.0 Persistence JDBC
Libraries
Spring 2.0 Web Libraries
      
3) JAR Library Installation:
Copy checked Library contents to
project folder (TLDs always
copied)
      
Next
4) Spring配置文件选择目录Folder:WebRoot/WEB-INF
Finish
4 添加Hibernate支持(项目右键àMyEclipse Hibernate Capabilities …)
      
选择:
      
1)Hibernate
Specification:Hibernate3.1
      
2)Select the libraries to ad to
the buildpath:Hibernate 3.1
Core Libraries
3)JAR Library Installation:Copy checked Library Jars to project folder and
add to build-path
Next
4)选择:Spring configuration file(applicationContext.xml)
Next
      
5)选择:Existing Spring
configuration file
SessionFactory Id:
sessionFactory àNext
      
6)Bean Id:dataSource
DB Driver:选择配置好的Hibernate。àNext
      
7)不建立SessionFactory(不选择Create SessionFactory class?)
      
8)Finish。
二 数据库方面
      
1)建立包edu.syict.pojo
Hibernate反向工程:
      
   选择下列内容:
Create
POJO<>DB Table mapping
information复选框
             
      
Create a Hibernate mapping file单选框
                    
Update Hibernate configuration with mapping resource
location复选框
           
Java Data Object(POJO<>DB
Table)复选框  
           
其余的都不选择。àNext   
      
Id Generator:native àFinish
 
      
2)新建接口:edu.syict.dao.UserDao.java
(所在包:edu.syict.dao )
 
| package edu.syict.dao; import edu.syict.pojo.User; public interface
UserDao { 
   
public void save(User user); } | 
 
      
3)建立UserDao接口实现类edu.syict.dao.impl.UserDaoImpl
      
类继承HibernateDaoSupport,接口继承UserDao
 
| package edu.syict.dao; import
org.springframework.orm.hibernate3.support.HibernateDaoSupport; import edu.syict.pojo.User; public class
UserDaoImpl extends HibernateDaoSupport
implements UserDao { 
   
public void save(User user) { 
      
try{ 
          
this.getHibernateTemplate().saveOrUpdate(user); 
      
}catch(RuntimeException re){ 
          
throw re; 
      
} 
    } } | 
 
三 建立JSP 页面,Action类
      
1) 打开struts-config.xml配置文件:右键new àForm,Action and JSP
      
2) User case:register
      
Form Impl:Dynamic
FormBean
      
Properties:username
password
      
JSP:选择Create JSP form
àNext
3) Action 默认就可以了
àFinish
      
4) 配置struts-config.xml文件,将Struts交给Spring管理
             
a) 加入插件 (message-resources标记下)
 
| <plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn"> 
   
<set-property property="contextConfigLocation" 
   
       
  value="/WEB-INF/applicationContext.xml"
/> </plug-in> | 
 
b) 将Action类移交(message-resources标记上)
 
| <controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> | 
 
      
struts-config.xml文件(全部)
      
struts-config.xml文件(全部)
 
| <?xml version="1.0"
encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">   <struts-config> <form-beans > 
   
<form-bean name="registerForm"
type="org.apache.struts.action.DynaActionForm"> 
     
<form-property name="password"
type="java.lang.String" /> 
     
<form-property name="username"
type="java.lang.String" /> 
   
</form-bean> </form-beans>   <global-exceptions
/> <global-forwards
/> <action-mappings
> 
   
<action 
     
attribute="registerForm" 
     
input="/form/register.jsp" 
     
name="registerForm" 
     
path="/register" 
     
scope="request" 
     
type="edu.syict.struts.action.RegisterAction" /> 
</action-mappings> <controller
processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/> <message-resources
parameter="edu.syict.struts.ApplicationResources"
/> <plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn"> 
   
<set-property property="contextConfigLocation" 
   
       
  value="/WEB-INF/applicationContext.xml"
/> 
</plug-in>   </struts-config> | 
 
5) register.jsp页面(WebRoot/form/register.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"%>   <html> 
   
<head> 
      
<title>用户注册</title> 
   
</head> 
   
<body> 
   
SSH整合<br><hr> 
   
<h3>用户注册</h3> 
      
<html:form action="/register"> 
          
用户名:<html:text
property="username"/><html:errors
property="username"/><br/> 
          
密    码:<html:text
property="password"/><html:errors
property="password"/><br/>      
    
          
<html:submit
value="注册"/>    <html:reset
value="重置"/> 
      
</html:form> 
   
</body> </html> | 
 
  
6)修改RegisterAction.java
 
| package
edu.syict.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.action.DynaActionForm;   import edu.syict.dao.UserDao; import edu.syict.pojo.User;   public class
RegisterAction extends Action { 
   
//数据库Dao接口,并添加get方法, 
   
private UserDao dao; 
   
public void setDao(UserDao dao)
{ 
      
this.dao = dao; 
   
}   
   
public ActionForward execute(ActionMapping
mapping, ActionForm form, 
          
HttpServletRequest request, HttpServletResponse response) { 
      
DynaActionForm registerForm = (DynaActionForm) form; 
       
      
//在控制台输出 
      
System.out.println(registerForm.get("username")); 
      
System.out.println(registerForm.get("password")); 
       
      
User user=new User(); 
      
user.setUsername((String) registerForm.get("username")); 
      
user.setPassword((String) registerForm.get("password")); 
      
dao.save(user);//向数据库中保存信息 
              
      
return new
ActionForward("/form/register.jsp"); 
    } } | 
   
 
四 修改Spring配置文件applicationContext.xml      
      
1)配置数据库UserDao
右键àSpringàNew Bean:
      
      
Bean Id:dao
             
Bean class:edu.syict.dao.UserDaoImpl
             
PropertiesàAdd:Name:sessionFactory
                                  
Reference:sessionFactory
      
   Finish
      
2)配置Action(RegisterAction)
右键àSpringàNew Bean:
             
Name(与上不同,上位Id):/register
             
Bean class:edu.syict.struts.action.RegisterAction
             
PropertiesàAdd:Name:userDao
                           
Reference:dao
applicationContext.xml全部
 
| <?xml version="1.0"
encoding="UTF-8"?> <beans 
   
xmlns="http://www.springframework.org/schema/beans" 
   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">     
      | 
 
 
| 
       
<bean id="sessionFactory" 
      
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
      
<property name="dataSource"> 
          
<ref bean="dataSource" /> 
      
</property> 
      
<property
name="hibernateProperties"> 
          
<props> 
             
<prop key="hibernate.dialect"> 
                 
org.hibernate.dialect.MySQLDialect 
             
</prop> 
          
</props> 
      
</property> 
      
<property
name="mappingResources"> 
          
<list> 
             
<value>edu/syict/pojo/User.hbm.xml</value></list> 
      
</property> 
   
</bean> 
   
<bean id="dao"
class="edu.syict.dao.UserDaoImpl"> 
      
<property name="sessionFactory"> 
          
<ref bean="sessionFactory" /> 
      
</property> 
   
</bean> 
   
<!-- /register 与Action中的path相同
--> 
   
<bean name="/register" 
      
class="edu.syict.struts.action.RegisterAction"> 
      
<!-- RegisterAction中住的DAO的名称 --> 
      
<property name="userDao"> 
          
<!-- 上面数据库Bean的id --> 
          
<ref bean="dao" /> 
      
</property> 
   
</bean> </beans> | 
 
五 修改web .xml文件
      
添加Spring提供的过滤器,并修改欢迎页面(form/register.jsp)
web.xml
 
|      <!-- Spring提供的过滤器_Start -->   <filter> 
   
<filter-name>encodingFilter</filter-name> 
   
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
   
<init-param> 
      
<param-name>encoding</param-name> 
      
<param-value>UTF-8</param-value> 
   
</init-param> 
   
<init-param> 
      
<param-name>forceEncoding</param-name> 
      
<param-value>true</param-value> 
   
</init-param> </filter>     <context-param> 
   
<param-name>contextConfigLocation</param-name> 
   
<param-value>/WEB-INF/applicationContext.xml</param-value> </context-param>   <filter-mapping> 
   
<filter-name>encodingFilter</filter-name> 
   
<url-pattern>/*</url-pattern> </filter-mapping>   <listener> 
   
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring提供的过滤器_End
--> <!-- 欢迎页面 -->   
<welcome-file-list> 
   
<welcome-file>form/register.jsp</welcome-file> 
</welcome-file-list> </web-app> |