lookupdispatchAction和validation框架

来源:互联网 发布:地震讯息 软件 编辑:程序博客网 时间:2024/05/22 06:13

LookUpDispatchAction的使用:

1.       创建 JSP 代码如下:

<%@ page language="java" pageEncoding="GBK"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<html>

 <head>

    <title>MultiSubmit.jsp</title>

  </head>

  <body>

    <form action="./multiSubmit.do" method="post">

         第一个数:<input type="text" name="number1"/><br>

         第二个数:<input type="text" name="number2"/><br>

               <input type="submit" name="action" value="">

         &nbsp;<input type="submit" name="action" value="">

         &nbsp;<input type="submit" name="action" value="">

         &nbsp;<input type="submit" name="action" value="">

    </form>

  </body>

</html>

 

2.   创建ActionForm 代码如下:

package com.yourcompany.struts.form;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

public class MultiSubmitForm extends ActionForm {

     private int number2;

     private int number1;

     private String action;

     public ActionErrors validate(ActionMapping mapping,

              HttpServletRequest request) {

         // TODO Auto-generated method stub

         return null;

     }

     public void reset(ActionMapping mapping, HttpServletRequest request) {

         // TODO Auto-generated method stub

     }

     public int getNumber2() {

         return number2;

     }

     public void setNumber2(int number2) {

         this.number2 = number2;

     }

     public int getNumber1() {

         return number1;

     }

     public void setNumber1(int number1) {

         this.number1 = number1;

     }

     public String getAction() {

         return action;

     }

     public void setAction(String action) {

         this.action = action;

     }

}

3.创建Action ,相应的代码如下:

package com.yourcompany.struts.action;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.actions.LookupDispatchAction;

import com.yourcompany.struts.form.MultiSubmitForm;

public class MultiSubmitAction extends LookupDispatchAction {

     public ActionForward doAdd(ActionMapping mapping, ActionForm form,

              HttpServletRequest request, HttpServletResponse response) {

             MultiSubmitForm multiSubmitForm = (MultiSubmitForm) form;         System.out.println("doAdd method in .........");

         System.out.println("--- number1 = " + multiSubmitForm.getNumber1());

         System.out.println("--- number2 = " + multiSubmitForm.getNumber2());

         return null;

     }   

     public ActionForward doSubtract(ActionMapping mapping, ActionForm form,

              HttpServletRequest request, HttpServletResponse response) {

         MultiSubmitForm multiSubmitForm = (MultiSubmitForm) form;        System.out.println("doSubtract method in .........");

         System.out.println("--- number1 = " + multiSubmitForm.getNumber1());

         System.out.println("--- number2 = " + multiSubmitForm.getNumber2());

         return null;

     }

    

    

     public ActionForward doMultifly(ActionMapping mapping, ActionForm form,

              HttpServletRequest request, HttpServletResponse response) {

              MultiSubmitForm multiSubmitForm = (MultiSubmitForm) form; System.out.println("doMultifly method in .........");

         System.out.println("--- number1 = " + multiSubmitForm.getNumber1());

         System.out.println("--- number2 = " + multiSubmitForm.getNumber2());

         return null;

     }

    

    

     public ActionForward doDivide(ActionMapping mapping, ActionForm form,

              HttpServletRequest request, HttpServletResponse response) {

         MultiSubmitForm multiSubmitForm = (MultiSubmitForm) form;

 System.out.println("doDivide method in .........");

         System.out.println("--- number1 = " + multiSubmitForm.getNumber1());

         System.out.println("--- number2 = " + multiSubmitForm.getNumber2());

         return null;

     }

     @Override

     protected Map getKeyMethodMap() {

         // TODO Auto-generated method stub

         Map map = new HashMap();

         map.put("button.add", "doAdd");

         map.put("button.subtract", "doSubtract");

         map.put("button.multiply", "doMultifly");

         map.put("nutton.divide", "doDivide");

         return map;

     }

}

 

4.   applicationResource.properties 资源文件中加入以下代码:

button.add=/u52a0               # 对应的中文字为: 加

button.subtract=/u51cf          # 对应的中文字为: 减

button.multiply=/u4e58          # 对应的中文字为: 乘

nutton.divide=/u9664        # 对应的中文字为: 除

 

5.   struts-config.xml中修改相应的action 节点

<action

      attribute="multiSubmitForm"

      input="/multiSubmit.jsp"

      name="multiSubmitForm"

      path="/multiSubmit"

      parameter="action"

      scope="request"

      type="com.yourcompany.struts.action.MultiSubmitAction">

     </action>

 

6.   为了支持按钮上的中文,添加过滤器,代码如下:

package com.filter;

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

public class FilterServlet implements Filter {

  public void destroy() {

       // Put your code here

  }

  public void init() throws ServletException {

       // Put your code here

  }

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain filter) throws IOException, ServletException {

       // TODO Auto-generated method stub

      arg0.setCharacterEncoding("GBK");

      arg1.setCharacterEncoding("GBK");

       filter.doFilter(arg0, arg1);

  }

 

  public void init(FilterConfig arg0) throws ServletException {

       // TODO Auto-generated method stub

  }

}

7.   以上过滤器需要在web.xml中描述,在web.xml中添加以下代码:

     <filter>

         <filter-name>filterServlet</filter-name>

         <filter-class>com.filter.FilterServlet</filter-class>

     </filter>

<filter-mapping>

     <filter-name>filterServlet</filter-name>

     <url-pattern>/*</url-pattern>

</filter-mapping>

 

 

Struts 中如何使用validation 框架验证:

1.创建JSP 文件,代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

 <html:javascript formName="usersForm"/>

<html>

  <head>

    <title>My JSP 'users.jsp' starting page</title>

  </head> 

  <body>

<html:form action="/users.do" method="post" onsubmit="return validateUsersForm(this)">

    名称:<input type="text" name="name"/> <br>

     年龄:<input type="text" name="age"/><br>

     Email:<input type="text" name="email"/><br>

     电话:<input type="text" name="phone"/><br>

     生日:<input type="text" name="birthDay"/><br>

         <input type="submit" value="提交"/>

    </html:form>

  </body>

</html>

2.创建ActionForm 代码如下

package com.yourcompany.struts.form;

import java.sql.Date;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

public class UsersForm extends ActionForm {

         private String phone;

         private int age;

         private String email;

         private String name;

         private String birthDay;

         public ActionErrors validate(ActionMapping mapping,

                            HttpServletRequest request) {

                   // TODO Auto-generated method stub

                   return null;

         }

         public void reset(ActionMapping mapping, HttpServletRequest request) {

                   // TODO Auto-generated method stub

         }

         public String getPhone() {

                   return phone;

         }

         public void setPhone(String phone) {

                   this.phone = phone;

         }

         public int getAge() {

                   return age;

         }

         public void setAge(int age) {

                   this.age = age;

         }

         public String getEmail() {

                   return email;

         }

         public void setEmail(String email) {

                   this.email = email;

         }

         public String getName() {

                   return name;

         }

         public void setName(String name) {

                   this.name = name;

         }

         public String getBirthDay() {

                   return birthDay;

         }

         public void setBirthDay(String birthDay) {

                   this.birthDay = birthDay;

         }

}

3.        创建Action 代码如下:

package com.yourcompany.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 com.yourcompany.struts.form.UsersForm;

public class UsersAction extends Action {

         public ActionForward execute(ActionMapping mapping, ActionForm form,

                            HttpServletRequest request, HttpServletResponse response) {

                   UsersForm usersForm = (UsersForm) form;// TODO Auto-generated method stub

                   return null;

         }

}

为了加入验证框架需要在struts-config.xml 中加入以下代码:

<message-resources parameter="com.yourcompany.struts.ApplicationResources" />

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml" />

  </plug-in>

   

4.        WEB-INF目录下增加 validation.xml 代码如下:

<!DOCTYPE form-validation PUBLIC

          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"

          "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">

<form-validation>  

  <formset>

    <form name="usersForm">

       <!-- 验证年龄是必须的,并且只能输入 a-z 之间任意字符 -->

      <field property="name" depends="required,mask">

         <arg0 key="message.name" />

         <arg0 key="message.name" name="mask" resource="true"/>

         <var>

           <var-name>mask</var-name>

           <!-- 验证用户名只能输入 a-z 之间任意字符 -->

           <var-value>^[A-Za-z]*$</var-value>

         </var>

      </field>

      <!-- 验证年龄是必须的,并且只能是10100之间的数字 -->

      <field property="age" depends="required,intRange">

         <arg0 key="message.age"/>

         <arg1 name="intRange" key="${var:min}" resource="false"/><!-- 定义最小范围 -->

         <arg2 name="intRange" key="${var:max}" resource="false"/><!-- 定义最大范围 -->

         <var>

           <var-name>min</var-name>

           <var-value>10</var-value>

         </var>

         <var>

            <var-name>max</var-name>

            <var-value>100</var-value>

         </var>

      </field>

      <!-- 验证电话号码是必须的,前8位必须是数字 -->

      <field property="phone" depends="required,mask">

        <arg0 key="message.phone"/>

        <arg0 name="mask" key="message.phone" resource="true"/>

        <var>

          <var-name>mask</var-name>

          <var-value>^/d{8}</var-value>

        </var>

     

      </field>

     

      <!-- 验证EMAIL是必须的,并且只能是合法的EMAIL 格式 -->

      <field property="email" depends="required,email">

         <arg0 key="message.email"/>

      </field>

      <!-- 验证时间是必须的,并且只能是yyyy/MM/dd 格式 -->

      <field property="birthDay" depends="required,date">

         <arg0 key="message.birthDay"/>

         <arg0 name="date" key="message.birthDay" resource="true"/>

         <var>

           <var-name>datePattern</var-name>

           <var-value>yyyy/MM/dd</var-value>

         </var>

      </field>

    </form>

  </formset>

</form-validation>

5.        applicationResource.properties 文件中加入以下代码:

     message.name=name 

    message.age=age    

     message.email=email  

     message.birthDay=birthDay

     message.phone=phone

     errors.required={0} is required.

     errors.minlength={0} can not be less than {1} characters.

     errors.maxlength={0} can not be greater than {1} characters.

     errors.invalid={0} is invalid.

     errors.byte={0} must be a byte.

     errors.short={0} must be a short.

     errors.integer={0} must be an integer.

     errors.long={0} must be a long.

     errors.float={0} must be a float.

     errors.double={0} must be a double.

    errors.date={0} is not a date.

    errors.range={0} is not in the range {1} through {2}.

    errors.creditcard={0} is an invalid credit card number.

    errors.email={0} is an invalid e-mail address.

原创粉丝点击