Spring_1.2.7 与 webwork_2.2.2集成

来源:互联网 发布:光纤网络交换机 编辑:程序博客网 时间:2024/05/02 00:00

Spring_1.2.7 webwork_2.2.2集成

1.  webwork官网下载webwork-2.2.2.zipspring_1.2.7.zip,获取webwork-2.2.2.jar以及lib/default 目录下的核心必须类包,同时获得spring1.2.7.jar,这些包在构建web工程时需要放到工程类库目录中;

2.  编辑webwork_2.2.7web工程中的配置文件,包括xwork.xmlwebwork-default.xmlwebwork.tldwebwork.propertiesweb.xml以及专门为登陆事务编写的action配置文件login.xml,另外还要编辑spring的相关配置文件applicationContext.xml,其目录结构如下图:

          1 目录结构 

 

3. web.xml配置文件说明与举例,web.xml配置文件在WEB-INF目录下,是所有web工程都必须的配置文件,使用webwork框架,需要在改配置文件里面注册webwork框架插件来处理web请求,举例如下:

<?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>com.jetsum.cantus.core.servlet.SetCharacterEncodingFilter</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>index.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配置说明与举例,该文件在类的根目录下,web工程中应放在src目录下,工程编译后就会导入class目录下,即类根目录.其作用:webwork插件,在此也可以称做web请求处理分派器,分派器会根据该配置文件将web请求交给相应的Action处理,举例如下:

<!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. webwork.properties配置说明与举例 ,此配置文件主要向webwork框架提供一些参数,如编码等,更多信息要查找相关文档,举例如下:

webwork.locale=zh_CN

webwork.i18n.encoding=GBK

 

6. 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">

           <result name="error" type="dispatcher">

              <param name="location">index.jsp</param>

           </result>

           <result name="login" type="dispatcher">

              <param name="location">index.jsp</param>

           </result>

           <result name="waibu" type="dispatcher">

              <param name="location">index.jsp</param>

           </result>

       </action>

    </package>

</xwork> 

 

注意:externalReferenceResolver="com.opensymphony.xwork.spring.SpringExternalReferenceResolver" 告知spring框架在需要时配置action内实体之间的映射关系,但是到目前为止还没有利用这种依赖,所以applicationContent.xml中也没有相应的依赖配置

 

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></beans>

 8.Action类举例

RegisterAction类 源码如下:

package com.jetsum.test.action;

 

import com.jetsum.test.entity.User;

import com.opensymphony.xwork.ActionSupport;

 

public class LoginAction extends ActionSupport {

  

 

   private User user = new User();

  

   private String name;

 

   private String password;

 

   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 " + name);

       System.out.println("my password is " + password);

       user.setName(name);

       user.setPassword(password);

       this.statu = "y";

       return "error";

   }

 

   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;

   }

 

 

 

 

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;

   }

  

}

9. index.jsp举例

 

<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gb2312"%>

<%@taglib prefix="ww" uri="webwork"%>

<!DOCTYPE HTML PUBLIC "-//W3C//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="name" id="name"  size="19"/><ww:if test='"n".equals(statu)'>&nbsp;<font color="red" size="1">登录名或密码错误</font></ww:if><br><br>

          <input name="password" id="password" type="password" /><br><br>

       <input type="submit" class="btn" value="登录"/>

    </form>

</body>

</html> 

注意:action="login!login.action"属性,!前面的login表示action名,后面的login表示action需要执行的方法,默认方法为execute方法,在这里没有用到webwork的验证框架,但是用到了webwork的标签来实现验证

 

 

原创粉丝点击