1.聽 鍒皐ebwork瀹樼綉涓嬭澆webwork- 2.2.2 .zip銆乻pring_1.2.7.zip鍙奾ibernate3鐩稿叧绫誨寘,鑾峰彇webwork-2.2.2.jar浠ュ強lib/default 鐩綍涓嬬殑鏍稿績蹇呴』绫誨寘,鍚屾椂鑾峰緱spring1.2.7.jar浠ュ強hibernate3鐨刪ibernate3.jar锛宩ta.jar锛宔hcache-1.1.jar绛夊寘锛屽湪鏋勫緩web宸ョ▼鏃堕渶瑕佹斁鍒闆伐绋嬬被搴撶洰褰曚腑;
2.聽 缂栬緫webwork_ 2.2.7 鍦╳eb宸ョ▼涓殑閰嶇疆鏂囦歡,鍖呮嫭xwork.xml銆亀ebwork-default.xml銆亀ebwork.tld銆亀ebwork.properties銆亀eb.xml浠ュ強涓撻棬涓烘敞鍐屼簨鍔$紪鍐欑殑action閰嶇疆鏂囦歡login.xml锛屽彟澶栬繕瑕佺紪杈憇pring鐨勭浉鍏抽厤缃枃浠禷pplicationContext.xml浠ュ強hibernate鐨勯厤缃紝璇ラ厤缃病鏈夊崟鐙綔涓洪厤缃枃浠訛紝鑰屾槸鍦╝pplicationContext.xml鏂囦歡涓厤缃畇essionFactory鐨勬椂鍊欏湪鍏?lt;property name="hibernateProperties">灞炴€ч厤缃紝鍏蜂綋鍐呭璇瘋閰嶇疆鏂囦歡, User瀹炰綋bean鐨勫璞″叧绯繪槧灏勬枃浠禪ser.hbm.xml,鍏剁洰褰曠粨鏋勫涓嬪浘:
https://p-blog.csdn.net/images/p_blog_csdn_net/xzjguest/EntryImages/20080718/clip_image002.jpg
鍥? 鐩綍缁撴瀯
聽
3. web.xml 閰嶇疆鏂囦歡璇存槑涓庝婦渚?web.xml閰嶇疆鏂囦歡鍦╓EB-INF鐩綍涓?鏄墍鏈墂eb宸ョ▼閮藉繀椤葷殑閰嶇疆鏂囦歡,浣跨敤webwork妗嗘灦,闇€瑕佸湪鏀歸厤缃枃浠堕噷闈㈡敞鍐寃ebwork妗嗘灦鎻掍歡鏉ュ鐞唚eb璇鋒眰,涓句緥濡備笅:<?xml version="1.0" encoding="ISO-8859-1"?>
<!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>
聽聽聽 <display-name>Test v2.0</display-name>
聽聽聽 <context-param>
聽聽聽聽聽聽 <param-name>contextConfigLocation</param-name>
聽聽聽聽聽聽 <param-value>
聽聽聽聽聽聽 聽聽聽 /WEB-INF/classes/spring/applicationContext.xml
聽聽聽聽聽聽 </param-value>
聽聽聽 </context-param>
聽聽聽 <filter>
聽聽聽聽聽聽 <filter-name>Encoding</filter-name>
聽聽聽聽聽聽 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
聽聽聽聽聽聽 <init-param>
聽聽聽聽聽聽聽聽聽聽 <param-name>encoding</param-name>
聽聽聽聽聽聽聽聽聽聽 <param-value>GBK</param-value>
聽聽聽聽聽聽 </init-param>
聽聽聽 </filter>
聽
聽聽聽 <!-- spring -->
聽聽聽 <listener>
聽聽聽聽聽聽 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
聽聽聽 </listener>
聽聽聽 <!-- This needs to be after Spring ContextLoaderListener -->
聽聽聽 <listener>
聽聽聽 聽聽聽 <listener-class>com.opensymphony.webwork.spring.lifecycle.SpringExternalReferenceResolverSetupListener</listener-class>
聽聽聽 </listener>
聽聽聽 <!-- spring -->
聽聽聽 <listener>
聽聽聽 聽聽聽 <listener-class>com.opensymphony.webwork.spring.WebWorkSpringObjectFactory</listener-class>
聽聽聽 </listener>
聽聽聽
聽聽聽 <!-- WebWork -->
聽聽聽 <servlet>
聽聽聽聽聽聽 <servlet-name>webwork</servlet-name>
聽聽聽聽聽聽 <servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
聽聽聽 </servlet>
聽
聽聽聽 <!-- WebWork -->
聽聽聽 <servlet-mapping>
聽聽聽聽聽聽 <servlet-name>webwork</servlet-name>
聽聽聽聽聽聽 <url-pattern>*.action</url-pattern>
聽聽聽 </servlet-mapping>
聽
聽聽聽 <welcome-file-list>
聽聽聽聽聽聽 <welcome-file>register.jsp</welcome-file>
聽聽聽 </welcome-file-list>
聽
聽聽聽 <taglib>
聽聽聽聽聽聽 <taglib-uri>webwork</taglib-uri>
聽聽聽聽聽聽 <taglib-location>/WEB-INF/webwork.tld</taglib-location>
聽聽聽 </taglib>
</web-app>聽
4. xwrok.xml 閰嶇疆璇存槑涓庝婦渚?璇ユ枃浠跺湪绫葷殑鏍圭洰褰曚笅,鍦╳eb宸ョ▼涓簲鏀懼湪src鐩綍涓?宸ョ▼缂栬瘧鍚庡氨浼氬鍏lass鐩綍涓?鍗崇被鏍圭洰褰?鍏朵綔鐢?webwork鎻掍歡,鍦ㄦ涔熷彲浠ョО鍋歸eb璇鋒眰澶勭悊鍒嗘淳鍣?鍒嗘淳鍣ㄤ細鏍規嵁璇ラ厤缃枃浠跺皢web璇鋒眰浜ょ粰鐩稿簲鐨凙ction澶勭悊,涓句緥濡備笅:<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
<include file="webwork-default.xml" />
<package name="default" extends="webwork-default">
<interceptors>
<interceptor name="externalReferences" class="com.opensymphony.xwork.interceptor.ExternalReferencesInterceptor" />
<interceptor name="catchException" class="com.jetsum.cantus.core.exception.CatchExceptionInterceptor" />
聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="standard-interceptors">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="externalReferences" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="prepare" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="static-params" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="params" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="conversionError" />
聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="stand-upload-interceptors">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="externalReferences" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="prepare" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="fileUpload" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="static-params" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="params" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="conversionError" />
聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽 </interceptors>
聽聽聽聽聽聽 <default-interceptor-ref name="standard-interceptors" />
聽聽聽 </package>
聽聽聽 <include file="login.xml" />
</xwork>聽
聽
5. login.xml 閰嶇疆鏂囦歡璇存槑涓庝婦渚?涓撻棬鐢ㄦ潵閰嶇疆LoginAction,璇ラ厤缃枃浠朵細琚寘鍚叆xwork.xml閰嶇疆鏂囦歡锛岃繖鏍鋒墠鑳界敓鏁?涓句緥濡備笅:<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
聽聽聽 <package name="logins" extends="default" externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver">
聽
聽聽聽聽聽聽 <!-- 闂ㄨ瘖鎸傚彿聽 -->
聽聽聽聽聽聽 <action name="login" class="com.jetsum.test.action.LoginAction">
聽聽聽聽聽聽 <external-ref name="userService" required="true">UserService</external-ref>
聽聽聽聽聽聽聽聽聽聽 <result name="error" type="dispatcher">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="location">register.jsp</param>
聽聽聽聽聽聽聽聽聽聽 </result>
聽聽聽聽聽聽聽聽聽聽 <result name="login" type="dispatcher">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="location">register.jsp</param>
聽聽聽聽聽聽聽聽聽聽 </result>
聽聽聽聽聽聽聽聽聽聽 <result name="waibu" type="dispatcher">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <param name="location">register.jsp</param>
聽聽聽聽聽聽聽聽聽聽 </result>
聽聽聽聽聽聽 </action>
聽聽聽 </package>
</xwork>
娉ㄦ剰锛歟xternalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver" 鍛婄煡spring妗嗘灦鍦ㄩ渶瑕佹椂閰嶇疆action鍐呭疄浣撲箣闂寸殑鏄犲皠鍏崇郴锛屼緥濡傦細<external-ref name="userService" required="true">UserService</external-ref>灏變細寮曠敤spring閰嶇疆鐨剈serService瀵矽薄
聽
聽
6. webwork.properties 閰嶇疆璇存槑涓庝婦渚?,姝ら厤缃枃浠朵富瑕佸悜webwork妗嗘灦鎻愪緵涓€浜涘弬鏁?濡傜紪鐮佺瓑,鏇村淇℃伅瑕佹煡鎵劇浉鍏蟲枃妗?涓句緥濡備笅:webwork.locale=zh_CN
webwork.i18n.encoding=GBK
聽
7. applicationContext.xml 閰嶇疆鏂囦歡璇存槑涓庝婦渚?涓撻棬鐢ㄦ潵閰嶇疆bean涔嬮棿鐨勪緷璧栧叧绯夥紝鍦ㄩ渶瑕佺殑鏃跺€欒繘琛屽姩鎬佺殑渚濊禆娉ㄥ皠,涓句緥濡備笅:<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
聽聽聽 <!-- Hibernate SessionFactory -->
聽聽聽 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
聽聽聽聽聽聽 <property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>
聽聽聽聽聽聽 <property name="url" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xzj"></property>
聽聽聽聽聽聽 <property name="username" value="sa"></property>
聽聽聽聽聽聽 <property name="password" value="sa"></property>
聽聽聽聽聽聽 <property name="maxActive" value="200"></property>
聽聽聽聽聽聽 <property name="maxIdle" value="50"></property>
聽聽聽聽聽聽 <property name="maxWait" value="60000"></property>
聽聽聽聽聽聽 <property name="removeAbandoned" value="true"></property>
聽聽聽聽聽聽 <property name="removeAbandonedTimeout" value="30"></property>
聽聽聽 </bean>
聽聽聽 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
聽聽聽聽聽聽 <property name="dataSource">
聽聽聽聽聽聽聽聽聽聽 <ref bean="dataSource" />
聽聽聽聽聽聽 </property>
聽聽聽聽聽聽 <property name="mappingResources">
聽聽聽聽聽聽聽聽聽聽 <list>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <value>com/jetsum/test/entity/User.hbm.xml</value>
聽聽聽聽聽聽聽聽聽聽 </list>
聽聽聽聽聽聽 </property>
聽聽聽聽聽聽 <property name="hibernateProperties">
聽聽聽聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="hibernate.show_sql">true</prop>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
聽聽聽聽聽聽聽聽聽聽 </props>
聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
聽聽聽 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
聽聽聽聽聽聽 <property name="sessionFactory">
聽聽聽聽聽聽聽聽聽聽 <ref local="sessionFactory" />
聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
聽聽聽聽聽聽 <property name="transactionManager">
聽聽聽聽聽聽聽聽聽聽 <ref bean="transactionManager" />
聽聽聽聽聽聽 </property>
聽聽聽聽聽聽 <property name="transactionAttributes">
聽聽聽聽聽聽聽聽聽聽 <props>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
聽聽聽聽聽聽聽聽聽聽聽聽聽 <prop key="*">PROPAGATION_REQUIRED</prop>
聽聽聽聽聽聽聽聽聽聽 </props>
聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <!-- 聽 鐢ㄦ埛DAO閰嶇疆聽聽聽聽 -->
聽聽聽 <bean id="UserDao" class="com.jetsum.test.dao.impl.UserDao">
聽聽聽聽聽聽 <property name="sessionFactory">
聽聽聽聽聽聽聽聽聽聽 <ref local="sessionFactory" />
聽聽聽聽聽聽 </property>
聽聽聽 </bean>
聽聽聽 <!-- 鐢ㄦ埛娉ㄥ唽閫昏緫 -->
聽聽聽 <bean id="UserService" parent="txProxyTemplate">
聽聽聽聽聽聽 <property name="target">
聽聽聽聽聽聽聽聽聽聽 <bean class="com.jetsum.test.service.impl.UserService">
聽聽聽聽聽聽聽聽聽聽聽聽聽 <property name="dao">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <ref bean="UserDao" />
聽聽聽聽聽聽聽聽聽聽聽聽聽 </property>
聽聽聽聽聽聽聽聽聽聽 </bean>
聽聽聽聽聽聽 </property>
聽聽聽 </bean>
</beans>
聽
聽
8. User.hbm.xml 閰嶇疆鏂囦歡璇存槑瀹炰綋bean User.java涓庢暟鎹簱涓〃user鐨勫璞″叧绯繪槧灏?涓句緥濡備笅:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
聽聽聽 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
聽聽聽 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
聽 <class聽聽聽 name="com.jetsum.test.entity.User"聽聽聽 聽table="users">
聽聽 <id聽聽 name="id" type="java.lang.Integer"聽聽 unsaved-value="null">
聽 聽<column name="id"聽 sql-type="int"/>
聽聽聽聽聽聽聽聽聽聽聽 <generator class="native">
聽聽聽聽聽聽聽聽聽聽聽 </generator>
聽聽聽聽聽聽聽 </id>
聽聽聽聽聽聽聽 <property
聽聽聽聽聽聽聽聽聽聽聽 name="name"
聽聽聽聽聽聽聽聽聽聽聽 type="java.lang.String"
聽聽聽聽聽聽聽聽聽聽聽 update="true"
聽聽聽聽聽聽聽聽聽聽聽 insert="true"
聽聽聽聽聽聽聽聽聽聽聽 column="name"
聽聽聽聽聽聽聽聽聽聽聽 length="100"
聽聽聽聽聽聽聽 />
聽聽聽聽聽聽聽 <property
聽聽聽聽聽聽聽聽聽聽聽 name="password"
聽聽聽聽聽聽聽聽聽聽聽 type="java.lang.String"
聽聽聽聽聽聽聽聽聽聽聽 update="true"
聽聽聽聽聽聽聽聽聽聽聽 insert="true"
聽聽聽聽聽聽聽聽聽聽聽 column="password"
聽聽聽聽聽聽聽 />
聽聽聽 </class>
</hibernate-mapping>
聽
9. webwork-default.xml 閰嶇疆鏂囦歡璇存槑涓句緥濡備笅:<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
聽聽聽 <package name="webwork-default">
聽聽聽聽聽聽聽 <result-types>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="jasper" class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="httpheader" class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/>
聽聽聽聽聽聽聽聽聽聽聽 <result-type name="stream" class="com.opensymphony.webwork.dispatcher.StreamResult"/>
聽聽聽聽聽聽聽 </result-types>
聽聽聽聽聽聽聽 <interceptors>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="logger" class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="chain" class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="static-params" class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="model-driven" class="com.opensymphony.xwork.interceptor.ModelDrivenInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="component" class="com.opensymphony.xwork.interceptor.component.ComponentInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="token" class="com.opensymphony.webwork.interceptor.TokenInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="token-session" class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="workflow" class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="servlet-config" class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="prepare" class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="conversionError" class="com.opensymphony.webwork.interceptor.WebWorkConversionErrorInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="fileUpload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor name="execAndWait" class="com.opensymphony.webwork.interceptor.ExecuteAndWaitInterceptor"/>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Basic stack -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="defaultStack">
聽 聽聽聽聽聽聽聽聽聽聽聽聽聽聽<interceptor-ref name="servlet-config"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="prepare"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="static-params"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="params"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="conversionError"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample validation and workflow stack -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="validationWorkflowStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="validation"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="workflow"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample file upload stack -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="fileUploadStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="fileUpload"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample Inversion of Control stack -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="componentStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="component"/>
聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽<interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample model-driven stack聽 -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="modelDrivenStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="model-driven"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽<interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample action chaining stack -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="chainStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="chain"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <!-- Sample execute and wait stack.
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 Note: execAndWait should always be the *last* interceptor. -->
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="executeAndWaitStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="defaultStack"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="execAndWait"/>
聽聽聽聽聽聽聽聽聽聽聽 </interceptor-stack>
聽聽聽聽聽聽聽聽聽聽聽 <interceptor-stack name="completeStack">
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="prepare"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="servlet-config"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="chain"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="model-driven"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="component"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="fileUpload"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="static-params"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="params"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="conversionError"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="validation"/>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <interceptor-ref name="workflow"/>
聽聽聽聽聽聽 聽聽聽聽聽</interceptor-stack>
聽聽聽聽聽聽聽 </interceptors>
聽聽聽 </package>
</xwork>
聽
10. log4j.properties 閰嶇疆鏂囦歡璇存槑涓句緥濡備笅:聽
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c
{1}:%L - %m%n
log4j.rootLogger=warn, stdout
log4j.logger.org.hibernate=info
log4j.logger.org.hibernate.type=info
log4j.logger.org.hibernate.tool.hbm2ddl=debug
聽
聽
11.Action绫諱婦渚?/b>
RegisterAction绫?婧愮爜濡備笅:
package com.jetsum.test.action;
聽
import com.jetsum.test.entity.User;
import com.jetsum.test.service.IUserService;
import com.opensymphony.xwork.ActionSupport;
聽
public class RegisterAction extends ActionSupport {
聽聽聽
聽聽聽 private IUserService userService;
聽
聽聽聽 private User user = new User();
聽聽聽
聽
聽聽聽 private String statu;
聽
聽聽聽 public String getStatu() {
聽聽聽聽聽聽聽 return statu;
聽聽聽 }
聽
聽聽聽 public void setStatu(String statu) {
聽聽聽聽聽聽聽 this.statu = statu;
聽聽聽 }
聽
聽聽聽 public String login() {
聽聽聽聽聽聽聽 System.out.println("my name is " + user.getName());
聽聽聽聽聽聽聽 System.out.println("my password is " + user.getPassword());
聽聽聽聽聽聽聽 userService.saveUser(user);
聽聽聽聽聽聽聽 this.statu = "y";
聽聽聽聽聽聽聽 return "error";
聽聽聽 }
聽
聽聽聽 public IUserService getUserService() {
聽聽聽聽聽聽聽 return userService;
聽聽聽 }
聽
聽聽聽 public void setUserService(IUserService userService) {
聽聽聽聽聽聽聽 this.userService = userService;
聽聽聽 }
聽
聽聽聽 public User getUser() {
聽聽聽聽聽聽聽 return user;
聽聽聽 }
聽
聽聽聽 public void setUser(User user) {
聽聽聽聽聽聽聽 this.user = user;
聽聽聽 }
}
聽
User 绫繪簮鐮佸涓?
package com.jetsum.test.entity; 聽 public class User { 聽聽聽 private int id; 聽 聽聽聽 private String name; 聽 聽聽聽 private String password; 聽 聽聽聽 public int getId() { 聽聽聽聽聽聽 return id; 聽聽聽 } 聽 聽聽聽 public void setId(int id) { 聽聽聽聽聽聽 this.id = id; 聽聽聽 } 聽 聽聽聽 public String getName() { 聽聽聽聽聽聽 return name; 聽聽聽 } 聽 聽聽聽 public void setName(String name) { 聽聽聽聽聽聽 this.name = name; 聽聽聽 } 聽 聽聽聽 public String getPassword() { 聽聽聽聽聽聽 return password; 聽聽聽 } 聽 聽聽聽 public void setPassword(String password) { 聽聽聽聽聽聽 this.password = password; 聽聽聽 } 聽聽聽 } 聽 12.UserService.java 涓句緥package com.jetsum.test.service.impl;
聽
import java.util.List;
聽
import com.jetsum.test.dao.IUserDao;
import com.jetsum.test.entity.User;
import com.jetsum.test.service.IUserService;
聽
public class UserService implements IUserService{
聽聽聽
聽聽聽 private IUserDao dao;
聽聽聽
聽聽聽 public Object saveUser(Object User) {
聽聽聽聽聽聽 return dao.saveUser(User);
聽聽聽 }
聽
聽聽聽 public void delUser(Object User) {
聽聽聽 }
聽
聽聽聽 public User findById(Integer id) {
聽聽聽聽聽聽 return null;
聽聽聽 }
聽
聽聽聽 public List getYuYue() {
聽聽聽聽聽聽 return null;
聽聽聽 }
聽
聽聽聽 public Object saveList(List list) {
聽聽聽聽聽聽 return null;
聽聽聽 }
聽
聽聽聽 public List getAll() {
聽聽聽聽聽聽 return null;
聽聽聽 }
聽
聽聽聽 public IUserDao getDao() {
聽聽聽聽聽聽 return dao;
聽聽聽 }
聽
聽聽聽 public void setDao(IUserDao dao) {
聽聽聽聽聽聽 this.dao = dao;
聽聽聽 }
聽
}
聽
聽
聽
13.AbstractDao.java 涓句緥package com.jetsum.test.dao.impl;
聽
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
聽
public abstract class AbstractDao extends HibernateDaoSupport {
聽
聽聽聽 public AbstractDao() {
聽聽聽聽聽聽聽 super();
聽聽聽 }
聽
聽聽聽 public Object save(Object type) {
聽聽聽聽聽聽聽 getHibernateTemplate().save(type);
聽聽聽聽聽聽聽 return type;
聽聽聽 }
聽
聽聽聽
聽聽聽 public void delete(Object type) {
聽聽聽 聽聽 if(type!=null)
聽聽聽 聽聽聽聽聽聽 getHibernateTemplate().delete(type);
聽聽聽 }
聽
}
聽
14.UserDao.java 涓句緥package com.jetsum.test.dao.impl;
聽
import java.util.List;
聽
import com.jetsum.test.dao.IUserDao;
import com.jetsum.test.entity.User;
聽
public class UserDao extends AbstractDao implements IUserDao {
聽
聽聽聽 public Object saveUser(Object user) {
聽聽聽聽聽聽 return this.save(user);
聽聽聽 }
聽
聽聽聽 public void delBook(Object Book) {
聽聽聽聽聽聽
聽聽聽 }
聽
聽聽聽 public User findById(Integer id) {
聽聽聽聽聽聽 return null;
聽聽聽 }
聽
聽聽聽 public List getAll() {
聽聽聽聽聽聽 return null;
聽聽聽 }
}
聽
15. register.jsp 涓句緥<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gb2312"%>
<%@taglib prefix="ww" uri="webwork"%>
<!DOCTYPE HTML PUBLIC "-//W 3C //DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
聽
<body>
聽聽聽 <form name="form1" method="post" action="login!login.action">
聽聽聽聽聽聽 <input type="text" name="user.name" id="name"聽 size="19"/><br><br>
聽聽聽 聽聽聽聽聽 <input name="user.password" id="password" type="password" /><br><br>
聽聽聽聽聽聽 <input type="submit" class="btn" value="娉ㄥ唽"/>
聽聽聽 </form>
</body>
</html>
娉ㄦ剰锛歛ction="login!login.action"灞炴€э紝锛佸墠闈㈢殑login琛ㄧずaction鍚嶏紝鍚庨潰鐨刲ogin琛ㄧずaction闇€瑕佹墽琛岀殑鏂規硶锛岄粯璁ゆ柟娉曚負execute鏂規硶
聽
聽
聽