posts - 36, comments - 30, trackbacks - 0, articles - 3
          這個(gè)Web應(yīng)用很簡(jiǎn)單,就是實(shí)現(xiàn)一個(gè)用戶注冊(cè)頁(yè)面,當(dāng)用戶在register.jsp頁(yè)面輸入注冊(cè)信息,點(diǎn)保存,如果成功,進(jìn)入registerSuccess.jsp頁(yè)面。這個(gè)應(yīng)用雖然很小,但它也有三層組成,表示層由Struts框架負(fù)責(zé),業(yè)務(wù)層由Spring框架負(fù)責(zé),持久層由Hibernate框架負(fù)責(zé)。
          開發(fā)環(huán)境:MyEclipse 5+ MySQL4 + Struts1.3.5 + Spring2.0.1 + Hibernate3.2.1 + Tomcat5.0.19 + jdk1.4.2_06.
          1.    首先,我們?cè)贛yEclipse中新建一個(gè)Web Project ,login;
          2.然后把Struts,Spring,Hibernate框架所需要的jar包以及MySQL的驅(qū)動(dòng)拷貝到WEB-INF\lib下;
          3.創(chuàng)建用戶注冊(cè)頁(yè)面register.jsp
           
           1<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
           2<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
           3<html>
           4 
           5<head>
           6 <title><bean:message key="register.title"/></title>
           7</head>
           8 
           9<body>
          10<html:errors />
          11 <html:form action="register.do">
          12    <table >
          13      <tr>
          14        <td><bean:message key="register.username"/>:</td>
          15        <td><html:text property="register.username" /></td>
          16      </tr>
          17      <tr>
          18        <td><bean:message key="register.password"/>:</td>
          19        <td><html:password property="register.password" /></td>
          20      </tr>
          21       <tr>
          22        <td><bean:message key="register.email"/>:</td>
          23        <td><html:text property="register.email" /></td>
          24      </tr>
          25      <tr>
          26        <td colspan="2" align="center">
          27        <html:submit><bean:message key="register.submit"/></html:submit>
          28        </td>
          29      </tr>
          30    </table>
          31 </html:form>
          32</body>
          33 
          34</html>

          4.創(chuàng)建注冊(cè)成功后顯示的頁(yè)面registerSuccess.jsp
           1<%@ taglib uri=" http://struts.apache.org/tags-bean " prefix="bean" %>
           2<html>
           3 
           4<head>
           5 <title><bean:message key="register.title"/></title>
           6</head>
           7 
           8<body>
           9 <bean:message key="register.success"/>
          10</body>
          11 
          12</html>
          13
           
          5.         創(chuàng)建消息資源文件registermessages.properties
           
          1register.title = Register
          2register.username = UserName
          3register.password = Password
          4register.email = Email
          5register.submit = Submit
          6register.success = RegisterSuccess!
          7
           
          6.      由于我們使用動(dòng)態(tài)ActionForm,只需在Struts-config.xml中配置與register.jsp頁(yè)面中form對(duì)應(yīng)的ActionForm。
          7.         創(chuàng)建配置文件Struts-config.xml
           1<?xml version="1.0" encoding="iso-8859-1"?>
           2<!DOCTYPE struts-config PUBLIC
           3        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
           4        "http://struts.apache.org/dtds/struts-config_1_3.dtd">
           5<!--
           6 Default configuration file for examples application.
           7 Each module also has its own struts-config under: /WEB-INF/$MODULE/
           8 @version $Revision: 1.9 $ $Date: 2006-02-13 18:39:49 -0700 (Mon, 13 Feb 2006) $
           9-->
          10<struts-config>
          11 <form-beans >
          12   <!—配置register.jsp中form對(duì)應(yīng)的ActionFrom-->
          13    <form-bean name="registerForm" type="org.apache.struts.action.DynaActionForm" >
          14        <form-property name="register" type="test.register.entity.Register"/>                     
          15    </form-bean>
          16 </form-beans>
          17 <!—配置對(duì)Struts Action請(qǐng)求的代理-->
          18 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
          19 <!—配置register.jsp中form對(duì)應(yīng)的Action-->
          20 <action-mappings >
          21    <action      
          22      name="registerForm"
          23      path="/register"
          24      scope="request"
          25      type="test.register.action.RegisterAction"
          26      validate="false"
          27      input="register.jsp">
          28      <forward name="success" path="/registerSuccess.jsp" />
          29    </action>
          30   </action-mappings>
          31 
          32 <message-resources parameter="test.register.registermessages" />
          33 <!—配置插件,讓action能訪問sping容器-->
          34 <plug-in
          35       className="org.springframework.web.struts.ContextLoaderPlugIn">
          36       <set-property property="contextConfigLocation"
          37           value="/WEB-INF/action-servlets.xml" />
          38</plug-in>
          39 
          40</struts-config>
          41

          8.      創(chuàng)建實(shí)體類Register.java
           1package test.register.entity;
           2 
           3import java.io.Serializable;
           4 
           5publicclass Register implements Serializable{   
           6    privatestaticfinallongserialVersionUID = 1521645755684977819L;
           7    private Long id;
           8    private String username;
           9    private String password;
          10    private String email;
          11    
          12    public Register(){
          13       
          14    }

          15 
          16    public String getEmail() {
          17       returnemail;
          18    }

          19 
          20    publicvoid setEmail(String email) {
          21       this.email = email;
          22    }

          23 
          24    public Long getId() {
          25       returnid;
          26    }

          27 
          28    publicvoid setId(Long id) {
          29       this.id = id;
          30    }

          31 
          32    public String getPassword() {
          33       returnpassword;
          34    }

          35 
          36    publicvoid setPassword(String password) {
          37       this.password = password;
          38    }

          39 
          40    public String getUsername() {
          41       returnusername;
          42    }

          43 
          44    publicvoid setUsername(String username) {
          45       this.username = username;
          46    }

          47    
          48    
          49 
          50}

          51

          9.創(chuàng)建Hibernate映射文件,Register.hbm.xml
           1<?xml version="1.0"?>
           2<!DOCTYPE hibernate-mapping PUBLIC 
           3    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
           4    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
           5<hibernate-mapping 
           6    package="test.register.entity">
           7 
           8    <class name="Register" table="REGISTER">
           9       
          10       <id name="id">
          11           <generator class="native"/>
          12       </id>
          13              
          14    <property name="username" 
          15            not-null="true"
          16            length="15"
          17            column="USERNAME"/>
          18       
          19    <property name="password" 
          20            not-null="true"
          21            length="15"
          22            column="PASSWORD"/>
          23       
          24    <property name="email"
          25            not-null="true"
          26            length="15"
          27            column="EMAIL"/>       
          28       
          29    </class>
          30    
          31</hibernate-mapping>
          32
           
          9.         創(chuàng)建Spring配置文件applicationContext.xml
           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
           3 
           4<beans>    
           5 
           6    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           7<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           8       <property name="url" value="jdbc:mysql://localhost/register"/>
           9       <property name="username" value="root"/>
          10       <property name="password" value="root"/>
          11    </bean>    
          12 
          13    <!-- Hibernate SessionFactory -->
          14    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
          15       <property name="dataSource" ref="dataSource"/>
          16       <property name="mappingDirectoryLocations">
          17           <value>classpath:test\register\entity\</value>
          18       </property>
          19       <property name="hibernateProperties">
          20           <props>
          21              <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
          22              <prop key="hibernate.show_sql">true</prop>
          23              <prop key="hibernate.generate_statistics">true</prop>
          24           </props>
          25       </property>       
          26    </bean>    
          27    
          28   <bean id="registerDAO" class="test.register.dao.RegisterDAO">
          29        <property name="sessionFactory">
          30             <ref local="sessionFactory"/>
          31        </property>
          32 </bean>
          33 
          34   <bean id="registerService" class="test.register.service.RegisterService">
          35        <property name="registerDAO">
          36             <ref local="registerDAO"/>
          37        </property>
          38 </bean>
          39 
          40</beans>
          41

          10. 創(chuàng)建數(shù)據(jù)訪問對(duì)象RegisterDAO.java
           1package test.register.dao;
           2 
           3import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
           4 
           5import test.register.entity.Register;
           6 
           7publicclass RegisterDAO extends HibernateDaoSupport{
           8    
           9    public Register saveRegister(Register r){
          10       try{
          11           this.getHibernateTemplate().saveOrUpdate(r);
          12           return r;
          13       }
          catch (Exception e) {
          14           e.printStackTrace();
          15           returnnull;
          16       }
                
          17    }

          18}

          19

          12.創(chuàng)建服務(wù)對(duì)象RegisterService.java
           1package test.register.service;
           2 
           3import test.register.dao.RegisterDAO;
           4import test.register.entity.Register;
           5 
           6publicclass RegisterService {
           7    private RegisterDAO registerDAO;   
           8    
           9    publicRegisterDAO getRegisterDAO() {
          10       returnregisterDAO;
          11    }

          12 
          13    publicvoid setRegisterDAO(RegisterDAO registerDAO) {
          14       this.registerDAO = registerDAO;
          15    }

          16 
          17    public Register saveRegister(Register r){
          18       this.getRegisterDAO().saveRegister(r);
          19       return r;
          20    }

          21}

          22
           
          11. 創(chuàng)建web.xml
           1<?xml version="1.0" encoding="UTF-8"?>
           2<!DOCTYPE web-app PUBLIC
           3        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
           4        "http://java.sun.com/dtd/web-app_2_3.dtd">
           5<web-app>
           6<context-param>
           7    <param-name>contextConfigLocation</param-name>
           8    <param-value>/WEB-INF/applicationContext.xml</param-value>
           9</context-param>
          10<listener>
          11    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
          12</listener>
          13<servlet>
          14    <servlet-name>action</servlet-name>
          15    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
          16    <init-param>
          17      <param-name>config</param-name>
          18      <param-value>/WEB-INF/struts-config.xml</param-value>
          19    </init-param>
          20    <init-param>
          21      <param-name>debug</param-name>
          22      <param-value>3</param-value>
          23    </init-param>
          24    <init-param>
          25      <param-name>detail</param-name>
          26      <param-value>3</param-value>
          27    </init-param>
          28    <load-on-startup>0</load-on-startup>
          29 </servlet>
          30 
          31 <servlet-mapping>
          32    <servlet-name>action</servlet-name>
          33    <url-pattern>*.do</url-pattern>
          34 </servlet-mapping>
          35 
          36 <welcome-file-list>
          37  <welcome-file>register.jsp</welcome-file>
          38 </welcome-file-list>
          39 
          40</web-app>
          41

          14.創(chuàng)建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對(duì)象,我們要對(duì)struts-config.xml作下修改,具體修改如下:
          在struts-config.xml增加controller元素
          <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>

          目的告訴Struts自動(dòng)將對(duì)Action的請(qǐng)求委托給Spring上下文中的Struts Action來處理。
          并且為了讓Struts能訪問Spring容器,還必須在struts-config.xml注冊(cè)一個(gè)能訪問Spring上下文的插件:
          <plug-in      className="org.springframework.web.struts.ContextLoaderPlugIn">
                 
          <set-property property="contextConfigLocation"
                     value
          ="/WEB-INF/action-servlets.xml" />
          </plug-in>
           
          action-servlets.xml文件的具體內(nèi)容如下:
          1<?xml version="1.0" encoding="UTF-8"?>
          2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
          3 
          4<beans>    
          5    <bean name="/register" class="test.register.action.RegisterAction">
          6       <property name="registerService" ref="registerService"/>       
          7    </bean>     
          8</beans>
          9

          注意:這里bean是name屬性,而不是id。
          至此,一個(gè)完整的SSH(Struts,Spring,Hibernate)框架搭建好了。
           
          主站蜘蛛池模板: 兴业县| 彰武县| 武川县| 南漳县| 台东县| 焉耆| 双江| 彭水| 凉城县| 保德县| 连山| 潮安县| 龙州县| 五莲县| 乡宁县| 绥阳县| 德化县| 葫芦岛市| 若羌县| 乐业县| 桃园县| 奉化市| 和政县| 平阳县| 中山市| 永寿县| 河北省| 徐州市| 祁阳县| 丘北县| 涿鹿县| 安国市| 凉城县| 卓资县| 松江区| 葫芦岛市| 根河市| 融水| 伊宁市| 福贡县| 舞钢市|