posts - 36, comments - 30, trackbacks - 0, articles - 3

          Struts,Spring,Hibernate Web應用開發1

          Posted on 2008-01-02 09:43 笑看人生 閱讀(1940) 評論(0)  編輯  收藏 所屬分類: Web開發技術
          這個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
           
           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.創建注冊成功后顯示的頁面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.         創建消息資源文件registermessages.properties
           
          1register.title = Register
          2register.username = UserName
          3register.password = Password
          4register.email = Email
          5register.submit = Submit
          6register.success = RegisterSuccess!
          7
           
          6.      由于我們使用動態ActionForm,只需在Struts-config.xml中配置與register.jsp頁面中form對應的ActionForm。
          7.         創建配置文件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對應的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 <!—配置對Struts Action請求的代理-->
          18 <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
          19 <!—配置register.jsp中form對應的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.      創建實體類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.創建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.         創建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. 創建數據訪問對象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.創建服務對象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. 創建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.創建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文件的具體內容如下:
          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。
          至此,一個完整的SSH(Struts,Spring,Hibernate)框架搭建好了。
           
          主站蜘蛛池模板: 皮山县| 江阴市| 鄯善县| 鲜城| 信阳市| 长宁区| 古田县| 永城市| 浦城县| 壤塘县| 孟津县| 监利县| 庆云县| 正镶白旗| 元朗区| 孝昌县| 吴江市| 西昌市| 达拉特旗| 盐池县| 黄冈市| 甘泉县| 吴江市| 海口市| 磴口县| 闽清县| 固阳县| 石狮市| 新田县| 资中县| 浮山县| 通河县| 资溪县| 咸宁市| 原阳县| 桦川县| 太和县| 乐平市| 新乐市| 青河县| 神农架林区|