struts+spring+hibernate的web应用<四> Web层代码编写(1)

阅读更多

前面的文章:

struts+spring+hibernate web 应用 < > 架构搭建

struts+spring+hibernate web 应用 < > Dao 层代码编写

struts+spring+hibernate web 应用 < > Service 层代码编写

 

Web 层代码量比较大,涉及的地方也比较多,考虑到文章过于庞大,所以分两篇写。
我们还是先从主要的
action 开始吧。

com.game.products.web.actions 包中新建 ProductsAction ,这是一个 DispatchAction ,代码如下:

 

package  com.game.products.web.actions;

import  java.util.List;

import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

import  org.acegisecurity.AccessDeniedException;
import  org.apache.struts.action.ActionForm;
import  org.apache.struts.action.ActionForward;
import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.actions.DispatchAction;

import  com.game.commons.Pager;
import  com.game.commons.PagerService;
import  com.game.products.model.Products;
import  com.game.products.services.iface.ProductsService;
import  com.game.products.web.forms.ProductsForm;


public   class  ProductsAction  extends  DispatchAction  {
    
    
private  ProductsService productsService;
    
private  PagerService pagerService;
    
    
/**  
     * 显示所有信息
     
*/

    
public  ActionForward doGetProducts(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        
        
int  totalRows = productsService.getRows();
        String currentPage
= req.getParameter( " currentPage " );
        String pagerMethod
= req.getParameter( " pagerMethod " );
        
        Pager pager
= pagerService.getPager(currentPage, pagerMethod, totalRows);
        
        List productsList
= productsService.getProducts(pager.getPageSize(), pager.getStartRow());
        
        req.setAttribute(
" productsList " , productsList);
        req.setAttribute(
" PAGER " , pager);
        req.setAttribute(
" flag " , flag);
        req.setAttribute(
" totalRows " , String.valueOf(totalRows));
        
        
return  mapping.findForward( " all " );
    }

    
    
/**  
     * 显示一条信息
     
*/

    
public  ActionForward doGetProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        String gameId
= req.getParameter( " gameId " );
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 2 " )) {
            fieldname
= (String)req.getParameter( " fieldname " );
            value
= (String)req.getParameter( " value " );
            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
        }

        
        Products pd
= productsService.getProduct(gameId);
        req.setAttribute(
" pd " , pd);
        req.setAttribute(
" flag " , flag);
        
return  mapping.findForward( " one " );
    }

    
    
/**  
     * 添加信息页面
     
*/

    
public  ActionForward doAddProductPage(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 2 " )) {
            fieldname
= (String)req.getParameter( " fieldname " );
            value
= (String)req.getParameter( " value " );
            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
        }

        
        String maxid
= productsService.getMaxID();
        req.setAttribute(
" maxid " , maxid);
        
return  mapping.findForward( " add " );
    }

    
    
/**  
     * 添加信息
     
*/

    
public  ActionForward doAddProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        ProductsForm pf
= (ProductsForm)form;
        String flag
= pf.getFlag();
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 2 " )) {
            fieldname
= pf.getFieldname();
            value
= pf.getValue();
            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
        }

        
        Products pd
= new  Products();
        pd.setGameCapacity(pf.getGameCapacity());
        pd.setGameId(pf.getGameId());
        pd.setGameMedia(pf.getGameMedia());
        pd.setGameNameCn(pf.getGameNameCn());
        pd.setGameNameEn(pf.getGameNameEn());
        pd.setGameVersion(pf.getGameVersion());
        pd.setGameCopyright(pf.getGameCopyright());
        pd.setGameContent(pf.getGameContent());
        
if (pf.getGamePrice().equals( "" )) {
            pd.setGamePrice(
null );
        }
else {
            pd.setGamePrice(pf.getGamePrice());
        }

        
        
int  sign = 1 ;
        
try {
            productsService.addProduct(pd);
            sign
= 1 ;
        }
catch (Exception e) {
            sign
= 2 ;
        }

        
        
if (sign == 1 ) {
            
return  mapping.findForward( " success " );
        }
else {
            
return  mapping.findForward( " failure " );
        }

    }

    
    
/**  
     * 修改信息
     
*/

    
public  ActionForward doUpdateProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        ProductsForm pf
= (ProductsForm)form;
        String gameId
= pf.getGameId();
        
        String flag
= pf.getFlag();
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 2 " )) {
            fieldname
= pf.getFieldname();
            value
= pf.getValue();
            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
        }

        
        Products pd
= productsService.getProduct(gameId);
        pd.setGameCapacity(pf.getGameCapacity());
        pd.setGameId(pf.getGameId());
        pd.setGameMedia(pf.getGameMedia());
        pd.setGameNameCn(pf.getGameNameCn());
        pd.setGameNameEn(pf.getGameNameEn());
        pd.setGameVersion(pf.getGameVersion());
        pd.setGameCopyright(pf.getGameCopyright());
        pd.setGameContent(pf.getGameContent());
        
if (pf.getGamePrice().equals( "" )) {
            pd.setGamePrice(
null );
        }
else {
            pd.setGamePrice(pf.getGamePrice());
        }

        
        
int  sign = 1 ;
        
try {
            productsService.updateProductd(pd);
            sign
= 1 ;
        }
catch (Exception e) {
            sign
= 2 ;
        }

        
        
if (sign == 1 ) {
            
return  mapping.findForward( " success " );
        }
else {
            
return  mapping.findForward( " failure " );
        }

    }

    
    
/**  
     * 删除信息
     
*/

    
public  ActionForward doDeleteProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 2 " )) {
            fieldname
= (String)req.getParameter( " fieldname " );
            value
= (String)req.getParameter( " value " );
            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
        }

        
        String gameId
= req.getParameter( " gameId " );
        
        Products pd
= productsService.getProduct(gameId);
        
int  sign = 1 ;
        
try {
            productsService.deleteProduct(pd);
            sign
= 1 ;
        }
catch (Exception e) {
            sign
= 2 ;
        }

        
        
if (sign == 1 ) {
            
return  mapping.findForward( " success " );
        }
else {
            
return  mapping.findForward( " failure " );
        }

    }

    
    
/**  
     * 返回信息
     
*/

    
public  ActionForward doReturnProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        
if (flag.equals( " 1 " )) {
            
int  totalRows = productsService.getRows();
            String currentPage
= req.getParameter( " currentPage " );
            String pagerMethod
= req.getParameter( " pagerMethod " );
            
            Pager pager
= pagerService.getPager(currentPage, pagerMethod, totalRows);
            
            List productsList
= productsService.getProducts(pager.getPageSize(), pager.getStartRow());
            
            req.setAttribute(
" productsList " , productsList);
            req.setAttribute(
" PAGER " , pager);
            req.setAttribute(
" flag " , flag);
            req.setAttribute(
" totalRows " , String.valueOf(totalRows));
        }
else   if (flag.equals( " 2 " )) {
            fieldname
= (String)req.getParameter( " fieldname " );
            value
= (String)req.getParameter( " value " );
            
int  totalRows = productsService.getRows(fieldname,value);
            String currentPage
= req.getParameter( " currentPage " );
            String pagerMethod
= req.getParameter( " pagerMethod " );
            
            Pager pager
= pagerService.getPager(currentPage, pagerMethod, totalRows);

            req.setAttribute(
" fieldname " , fieldname);
            req.setAttribute(
" value " , value);
            
            List productsList
= productsService.queryProducts(fieldname, value,pager.getPageSize(), pager.getStartRow());
            
            req.setAttribute(
" productsList " , productsList);
            req.setAttribute(
" PAGER " , pager);
            req.setAttribute(
" totalRows " , String.valueOf(totalRows));
        }

        
        
return  mapping.findForward( " all " );
        
    }

    
    
/**  
     * 查询信息
     
*/

    
public  ActionForward doQueryProduct(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest req,
            HttpServletResponse res)
{
        String flag
= req.getParameter( " flag " );
        req.setAttribute(
" flag " , flag);
        String fieldname
= "" ;
        String value
= "" ;
        fieldname
= (String)req.getParameter( " fieldname " );
        value
= (String)req.getParameter( " value " );
        
        
int  totalRows = productsService.getRows(fieldname,value);
        String currentPage
= req.getParameter( " currentPage " );
        String pagerMethod
= req.getParameter( " pagerMethod " );
        
        Pager pager
= pagerService.getPager(currentPage, pagerMethod, totalRows);

        req.setAttribute(
" fieldname " , fieldname);
        req.setAttribute(
" value " , value);
        
        List productsList
= productsService.queryProducts(fieldname, value,pager.getPageSize(), pager.getStartRow());
        
        req.setAttribute(
" productsList " , productsList);
        req.setAttribute(
" PAGER " , pager);
        req.setAttribute(
" totalRows " , String.valueOf(totalRows));
        
        
return  mapping.findForward( " all " );
        
    }


    
public  ProductsService getProductsService()  {
        
return  productsService;
    }


    
public   void  setProductsService(ProductsService productsService)  {
        
this .productsService  =  productsService;
    }


    
public  PagerService getPagerService()  {
        
return  pagerService;
    }


    
public   void  setPagerService(PagerService pagerService)  {
        
this .pagerService  =  pagerService;
    }

    
}

 

com.game.products.web.forms 包中新建 ProductsForm ,他继承了 ValidatorForm 。代码如下:

 

package  com.game.products.web.forms;

import  javax.servlet.http.HttpServletRequest;

import  org.apache.struts.action.ActionMapping;
import  org.apache.struts.validator.ValidatorForm;

public   class  ProductsForm  extends  ValidatorForm  {
    
//     Fields 
     private  String gameId; // 编号
     private  String gameNameCn; // 中文名称
     private  String gameNameEn; // 英文名称
     private  String gameCapacity; // 碟数
     private  String gameVersion; // 版本
     private  String gameMedia; // 介质
     private  String gameCopyright; // 版权
     private  String gamePrice; // 价格
     private  String gameContent; // 攻略
    
    
private  String flag;
    
private  String fieldname;
    
private  String value;
    
    
//     Constructors
     public  ProductsForm() {
        gameId
= null ;
        gameNameCn
= null ;
        gameNameEn
= null ;
        gameCapacity
= null ;
        gameVersion
= null ;
        gameMedia
= null ;
        gameCopyright
= null ;
        gamePrice
= null ;
        gameContent
= null ;
        
        flag
= null ;
        fieldname
= null ;
        value
= null ;
    }

    
    
//  reset
     public   void  reset(ActionMapping mapping, HttpServletRequest request)  {
        gameId
= null ;
        gameNameCn
= null ;
        gameNameEn
= null ;
        gameCapacity
= null ;
        gameVersion
= null ;
        gameMedia
= null ;
        gameCopyright
= null ;
        gamePrice
= null ;
        gameContent
= null ;
        
        flag
= null ;
        fieldname
= null ;
        value
= null ;
    }

    
    
//     Property accessors
     public  String getGameCapacity()  {
        
return  gameCapacity;
    }


    
public   void  setGameCapacity(String gameCapacity)  {
        
this .gameCapacity  =  gameCapacity;
    }


    
public  String getGameId()  {
        
return  gameId;
    }


    
public   void  setGameId(String gameId)  {
        
this .gameId  =  gameId;
    }


    
public  String getGameNameCn()  {
        
return  gameNameCn;
    }


    
public   void  setGameNameCn(String gameNameCn)  {
        
this .gameNameCn  =  gameNameCn;
    }


    
public  String getGameNameEn()  {
        
return  gameNameEn;
    }


    
public   void  setGameNameEn(String gameNameEn)  {
        
this .gameNameEn  =  gameNameEn;
    }


    
public  String getGameVersion()  {
        
return  gameVersion;
    }


    
public   void  setGameVersion(String gameVersion)  {
        
this .gameVersion  =  gameVersion;
    }


    
public  String getGameMedia()  {
        
return  gameMedia;
    }


    
public   void  setGameMedia(String gameMedia)  {
        
this .gameMedia  =  gameMedia;
    }


    
public  String getFieldname()  {
        
return  fieldname;
    }


    
public   void  setFieldname(String fieldname)  {
        
this .fieldname  =  fieldname;
    }


    
public  String getFlag()  {
        
return  flag;
    }


    
public   void  setFlag(String flag)  {
        
this .flag  =  flag;
    }


    
public  String getValue()  {
        
return  value;
    }


    
public   void  setValue(String value)  {
        
this .value  =  value;
    }


    
public  String getGameCopyright()  {
        
return  gameCopyright;
    }


    
public   void  setGameCopyright(String gameCopyright)  {
        
this .gameCopyright  =  gameCopyright;
    }


    
public  String getGameContent()  {
        
return  gameContent;
    }


    
public   void  setGameContent(String gameContent)  {
        
this .gameContent  =  gameContent;
    }


    
public  String getGamePrice()  {
        
return  gamePrice;
    }


    
public   void  setGamePrice(String gamePrice)  {
        
this .gamePrice  =  gamePrice;
    }


}

 

 

接着编写配置文件。

struts-config 包中新建 struts-config.xml 。代码如下:

xml version="1.0" encoding="ISO-8859-1" ?>
DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"
>

< struts-config >
    
< form-beans >
        
< form-bean  name ="productsForm"  type ="com.game.products.web.forms.ProductsForm"   />
    
form-beans >
    
    
< global-forwards >
        
< forward  name ="success"  path ="/products/product_success.jsp"   />
        
< forward  name ="failure"  path ="/products/product_failure.jsp"   />
    
global-forwards >
    
    
< action-mappings >
        
< action  path ="/getProducts"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >
            
< forward  name ="all"  path ="/products/products.jsp"   />
        
action >
        
< action  path ="/getProduct"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >
            
< forward  name ="one"  path ="/products/product.jsp"   />
        
action >
        
< action  path ="/deleteProduct"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >             
        
action >
        
< action  path ="/addProductPage"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >
            
< forward  name ="add"  path ="/products/addproduct.jsp"   />
        
action >
        
< action  path ="/addProduct"  name ="productsForm"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false"  input ="/product_failure.jsp" >
        
action >
        
< action  path ="/updateProduct"  name ="productsForm"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false"  input ="/product_failure.jsp" >
        
action >
        
        
< action  path ="/returnProduct"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >
            
< forward  name ="all"  path ="/products/products.jsp"   />
        
action >
        
< action  path ="/queryProducts"  type ="org.springframework.web.struts.DelegatingActionProxy"  parameter ="method"  scope ="request"  validate ="false" >
            
< forward  name ="all"  path ="/products/products.jsp"   />
        
action >
    
action-mappings >
    
    
< message-resources  parameter ="com.game.resources.ApplicationResourcesProducts"   />
    
    
< plug-in  className ="org.apache.struts.validator.ValidatorPlugIn" >
        
< set-property  property ="pathnames"
            value
="/WEB-INF/struts-validator/validator-rules.xml,/WEB-INF/struts-validator/validation.xml" />
    
plug-in >     
    
struts-config >

 

需要注意的是,这里的 action 交由 spring DelegatingActionProxy 管理了。

 

打开 applicationContext.xml ,接着添加如下代码:


    
< bean  name ="/getProducts"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
        
< property  name ="pagerService" >
            
< ref  bean ="pagerService" />
        
property >
    
bean >
    
< bean  name ="/getProduct"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
    
bean >
    
< bean  name ="/deleteProduct"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
    
bean >
    
< bean  name ="/addProductPage"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
    
bean >
    
< bean  name ="/addProduct"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
    
bean >
    
< bean  name ="/updateProduct"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
    
bean >
    
< bean  name ="/returnProduct"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
        
< property  name ="pagerService" >
            
< ref  bean ="pagerService" />
        
property >
    
bean >
    
< bean  name ="/queryProducts"  class ="com.game.products.web.actions.ProductsAction"  singleton ="false" >
        
< property  name ="productsService" >
            
< ref  bean ="productsService" />
        
property >
        
< property  name ="pagerService" >
            
< ref  bean ="pagerService" />
        
property >
    
bean >

 

接着编写 web.xml ,代码如下:

xml version="1.0" encoding="GB2312" ?>
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 > 游戏软件管理系统 display-name >
    
< context-param >
        
< param-name > log4jConfigLocation param-name >
        
< param-value > /WEB-INF/classes/log4j.properties param-value >
    
context-param >
    
< context-param >
        
< param-name > contextConfigLocation param-name >
        
< param-value > /WEB-INF/spring-context/applicationContext.xml param-value >
      
context-param >
    
    
< filter >
        
< filter-name > Set Character Encoding filter-name >
        
< filter-class > com.game.commons.SetCharacterEncodingFilter filter-class >
        
< init-param >
            
< param-name > encoding param-name >
            
< param-value > GB2312 param-value >
        
init-param >
    
filter >

    
< filter-mapping >
        
< filter-name > Set Character Encoding filter-name >
        
< url-pattern > /* url-pattern >
    
filter-mapping >
    
    

      
< listener >
        
< listener-class > org.springframework.web.context.ContextLoaderListener listener-class >
      
listener >

      
< listener >
        
< listener-class > org.springframework.web.util.Log4jConfigListener listener-class >
      
listener >
    
    

    
< servlet >
        
< servlet-name > action servlet-name >
        
< servlet-class > org.apache.struts.action.ActionServlet servlet-class >
        

            
< init-param >
              
< param-name > config param-name >
              
< param-value > /WEB-INF/struts-config/struts-config.xml param-value >
            
init-param >
            
< init-param >
                
< param-name > debug param-name >
                
< param-value > 3 param-value >
            
init-param >
            
< init-param >
                
< param-name > detail param-name >
                
< param-value > 3 param-value >
            
init-param >
            
< init-param >
                
< param-name > nocache param-name >
                
< param-value > yes param-value >
            
init-param >
            
< load-on-startup > 2 load-on-startup >
    
servlet >
    
    

    
< servlet-mapping >
        
< servlet-name > action servlet-name >
        
< url-pattern > *.do url-pattern >
    
servlet-mapping >
 
    

    
< welcome-file-list >
        
< welcome-file > products/index.jsp welcome-file >
    
welcome-file-list >

    

    
< taglib >
        
< taglib-uri > struts-bean taglib-uri >
        
< taglib-location > /WEB-INF/tld/struts-bean.tld taglib-location >
    
taglib >

    
< taglib >
        
< taglib-uri > struts-html taglib-uri >
        
< taglib-location > /WEB-INF/tld/struts-html.tld taglib-location >
    
taglib >

    
< taglib >
        
< taglib-uri > struts-logic taglib-uri >
        
< taglib-location > /WEB-INF/tld/struts-logic.tld taglib-location >
    
taglib >

    
< taglib >
        
< taglib-uri > struts-nested taglib-uri >
        
< taglib-location > /WEB-INF/tld/struts-nested.tld taglib-location >
    
taglib >
web-app >

 

 

大家可能注意到了这里有个 Set Character Encoding 过滤器。我们需要在 com.game.commons 包中新建 SetCharacterEncodingFilter 类来过滤编码,类的代码如下:

package  com.game.commons;

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  SetCharacterEncodingFilter  implements  Filter  {
protected  String encoding  =   null ;
protected  FilterConfig filterConfig  =   null ;
protected   boolean  ignore  =   true ;

public   void  init(FilterConfig filterConfig)  throws  ServletException  {
this .filterConfig = filterConfig;
this .encoding = filterConfig.getInitParameter( " encoding " );
String value
= filterConfig.getInitParameter( " ignore " );
if (value == null )
this .ignore = true ;
else   if (value.equalsIgnoreCase( " true " ))
this .ignore = true ;
else
this .ignore = false ;
}


public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  throws  IOException, ServletException  {
//  TODO 自动生成方法存根
if  (ignore  ||  (request.getCharacterEncoding()  ==   null ))  {
String encoding 
=  selectEncoding(request);
if  (encoding  !=   null )
request.setCharacterEncoding(encoding);
}

chain.doFilter(request, response);
}


public   void  destroy()  {
//  TODO 自动生成方法存根
this .encoding  =   null ;
this .filterConfig  =   null ;
}


protected  String selectEncoding(ServletRequest request)  {
return  ( this .encoding);
}

}

 

 

为了项目的测试运行,我们还需要配置 log4j.properties ,这个文件放在 src 根目录下。代码如下:

log4j.rootLogger=info,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.wehave=DEBUG
# log4j.logger.org.springframework=DEBUG
# SqlMap logging configuration
# log4j.logger.com.ibatis=DEBUG
# log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
# log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
# log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
# log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
#log4j.logger.java.sql.ResultSet=DEBUG
#log4j.logger.javax.sql=DEBUG

 

这是一个简单的 log4j 配置方法,只是在后台打印出需要的数据。如果还有别的需求,可以参考这个文档:如何使用 Log4j

 

为了达到页面验证的目的,我们还需要使用到 struts 的验证框架。

struts-validator 中添加 validation.xml 。在这配置验证规则:

 

DOCTYPE form-validation PUBLIC
    "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
    "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"
>
    
< form-validation >
    
< formset >
        
< form  name ="productsForm" >
            
< field  property ="gameNameCn"  depends ="required" >
                
< arg0  key ="errors.gameNameCn" />
            
field >     
            
< field  property ="gameNameEn"  depends ="required" >
                
< arg0  key ="errors.gameNameEn" />
            
field >
            
< field  property ="gameCapacity"  depends ="integer" >
                
< arg0  key ="errors.gameCapacity" />
            
field >
            
< field  property ="gamePrice"  depends ="float" >
                
< arg0  key ="errors.gamePrice" />
            
field >
        
form >     
    
formset >
form-validation >

 

 

在同个目录下,添加 validator-rules.xml ,这个在 struts 开发包中有,只需要 copy 过来就可以用了。为了方便大家,我这里将里面配置代码粘贴出来:

xml version="1.0" encoding="ISO-8859-1"  ?>
DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
          "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd"
>


< form-validation >

    
< global >
        
< validator  name ="required"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateRequired"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            msg
="errors.required" >
            
< javascript >
            function validateRequired(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRequired = new required();
                for (x in oRequired) {
                    var field = form[oRequired[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'file' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password' ||
                        field.type == 'hidden') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (trim(value).length == 0) {
                        
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRequired[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                  if(focusField.type!='hidden'){
                   focusField.focus();
                  }
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
            // Trim whitespace from left and right sides of s.
            function trim(s) {
                return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
            }
            
            
]]>   javascript >
        
validator >
        

        
< validator  name ="requiredif"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateRequiredIf"  
            methodParams
="java.lang.Object,
                               org.apache.commons.validator.ValidatorAction,
                               org.apache.commons.validator.Field,
                               org.apache.struts.action.ActionErrors,
                               org.apache.commons.validator.Validator,
                               javax.servlet.http.HttpServletRequest"
 
            msg
="errors.required" >
            
< javascript >
            function validateRequiredIf(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                var j=0;
                oRequiredif = new requiredif();
                for (x in oRequiredif) {
                    var field = form[oRequiredif[x][0]];
                    for(var ii=0;ii                         if(field[ii].checked==true){
                            j++;
                        }
                    }  
                     if (j == 0) {
                        
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRequiredif[x][1];
                            isValid = false;
                    }
                }

                if (fields.length > 0) {
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
]]>   javascript >
        
validator >
        
< validator  name ="minlength"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateMinLength"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.minlength" >
            
< javascript >
            function validateMinLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMinLength = new minlength();
                for (x in oMinLength) {
                    var field = form[oMinLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea'||
                        field.type == 'password') {
                        
                        var iMin = parseInt(oMinLength[x][2]("minlength"));
                        if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMinLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="maxlength"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateMaxLength"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.maxlength" >
            
< javascript >
            function validateMaxLength(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMaxLength = new maxlength();
                for (x in oMaxLength) {
                    var field = form[oMaxLength[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea'||
                        field.type == 'password') {
                        
                        var iMax = parseInt(oMaxLength[x][2]("maxlength"));
                        if (field.value.length > iMax) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMaxLength[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="mask"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateMask"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.invalid" >
            
< javascript >
            function validateMask(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oMasked = new mask();
                for (x in oMasked) {
                    var field = form[oMasked[x][0]];
                    
                    if ((field.type == 'text' || 
                         field.type == 'textarea'||
                        field.type == 'password') && 
                         (field.value.length > 0)) {
                        
                        if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oMasked[x][1];
                            isValid = false;
                        }
                    }
                }
                
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }

            function matchPattern(value, mask) {
               return mask.exec(value);
            }
]]>   javascript >
        
validator >
        
< validator  name ="byte"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateByte"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.byte"  jsFunctionName ="ByteValidations" >
            
< javascript >
            function validateByte(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oByte = new ByteValidations();
                for (x in oByte) {
                    var field = form[oByte[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {

                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oByte[x][1];

                            } else {

                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oByte[x][1];
                                    bValid = false;
                                }
                            }
                        }
                        
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="short"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateShort"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.short"  jsFunctionName ="ShortValidations" >
            
< javascript >
            function validateShort(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oShort = new ShortValidations();
                for (x in oShort) {
                    var field = form[oShort[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oShort[x][1];

                            } else {
                        
                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oShort[x][1];
                                    bValid = false;
                                }
                           }
                       }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="integer"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateInteger"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.integer"  jsFunctionName ="IntegerValidations" >
            
< javascript >
            function validateInteger(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oInteger = new IntegerValidations();
                for (x in oInteger) {
                    var field = form[oInteger[x][0]];

                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                        
                            if (!isAllDigits(value)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oInteger[x][1];
                                
                            } else {
                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oInteger[x][1];
                                    bValid = false;
                               }
                           }
                       }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }

            function isAllDigits(argvalue) {
                argvalue = argvalue.toString();
                var validChars = "0123456789";
                var startFrom = 0;
                if (argvalue.substring(0, 2) == "0x") {
                   validChars = "0123456789abcdefABCDEF";
                   startFrom = 2;
                } else if (argvalue.charAt(0) == "-") {
                    startFrom = 1;
                }
                
                for (var n = startFrom; n < argvalue.length; n++) {
                    if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
                }
                return true;
            }
]]>   javascript >
        
validator >
        
< validator  name ="long"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateLong"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.long" />
        
< validator  name ="float"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateFloat"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.float"  jsFunctionName ="FloatValidations" >
            
< javascript >
            function validateFloat(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oFloat = new FloatValidations();
                for (x in oFloat) {
                    var field = form[oFloat[x][0]];
                    
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'select-one' ||
                        field.type == 'radio') {
                        
                        var value = '';
                        // get field's value
                        if (field.type == "select-one") {
                            var si = field.selectedIndex;
                            if (si >= 0) {
                                value = field.options[si].value;
                            }
                        } else {
                            value = field.value;
                        }
                        
                        if (value.length > 0) {
                            // remove '.' before checking digits
                            var tempArray = value.split('.');
                            var joinedString= tempArray.join('');

                            if (!isAllDigits(joinedString)) {
                                bValid = false;
                                if (i == 0) {
                                    focusField = field;
                                }
                                fields[i++] = oFloat[x][1];

                            } else {
                                var iValue = parseFloat(value);
                                if (isNaN(iValue)) {
                                    if (i == 0) {
                                        focusField = field;
                                    }
                                    fields[i++] = oFloat[x][1];
                                    bValid = false;
                                }
                            }
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="double"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateDouble"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.double" />
        
< validator  name ="date"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateDate"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.date"  jsFunctionName ="DateValidations" >
            
< javascript >
            function validateDate(form) {
               var bValid = true;
               var focusField = null;
               var i = 0;
               var fields = new Array();
               oDate = new DateValidations();
               for (x in oDate) {
                   var value = form[oDate[x][0]].value;
                   var datePattern = oDate[x][2]("datePatternStrict");
                   if ((form[oDate[x][0]].type == 'text' ||
                        form[oDate[x][0]].type == 'textarea') &&
                       (value.length > 0) &&
                       (datePattern.length > 0)) {
                     var MONTH = "MM";
                     var DAY = "dd";
                     var YEAR = "yyyy";
                     var orderMonth = datePattern.indexOf(MONTH);
                     var orderDay = datePattern.indexOf(DAY);
                     var orderYear = datePattern.indexOf(YEAR);
                     if ((orderDay < orderYear && orderDay > orderMonth)) {
                         var iDelim1 = orderMonth + MONTH.length;
                         var iDelim2 = orderDay + DAY.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderDay && iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                         } else if (iDelim1 == orderDay) {
                            dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                         } else {
                            dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                            if (!isValidDate(matched[2], matched[1], matched[3])) {
                               if (i == 0) {
                                   focusField = form[oDate[x][0]];
                               }
                               fields[i++] = oDate[x][1];
                               bValid =  false;
                            }
                         } else {
                            if (i == 0) {
                                focusField = form[oDate[x][0]];
                            }
                            fields[i++] = oDate[x][1];
                            bValid =  false;
                         }
                     } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                         var iDelim1 = orderDay + DAY.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                         } else if (iDelim2 == orderYear) {
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[1], matched[2], matched[3])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                 }
                                 fields[i++] = oDate[x][1];
                                 bValid =  false;
                              }
                         } else {
                             if (i == 0) {
                                 focusField = form[oDate[x][0]];
                             }
                             fields[i++] = oDate[x][1];
                             bValid =  false;
                         }
                     } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                         var iDelim1 = orderYear + YEAR.length;
                         var iDelim2 = orderMonth + MONTH.length;
                         var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                         var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                         if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                         } else if (iDelim1 == orderMonth) {
                             dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                         } else if (iDelim2 == orderDay) {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                         } else {
                             dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                         }
                         var matched = dateRegexp.exec(value);
                         if(matched != null) {
                             if (!isValidDate(matched[3], matched[2], matched[1])) {
                                 if (i == 0) {
                                     focusField = form[oDate[x][0]];
                                  }
                                  fields[i++] = oDate[x][1];
                                  bValid =  false;
                              }
                          } else {
                              if (i == 0) {
                                  focusField = form[oDate[x][0]];
                              }
                              fields[i++] = oDate[x][1];
                              bValid =  false;
                          }
                     } else {
                         if (i == 0) {
                             focusField = form[oDate[x][0]];
                         }
                         fields[i++] = oDate[x][1];
                         bValid =  false;
                     }
                  }
               }
               if (fields.length > 0) {
                  focusField.focus();
                  alert(fields.join('\n'));
               }
               return bValid;
            }

        function isValidDate(day, month, year) {
            if (month < 1 || month > 12) {
                    return false;
                }
                if (day < 1 || day > 31) {
                    return false;
                }
                if ((month == 4 || month == 6 || month == 9 || month == 11) &&
                    (day == 31)) {
                    return false;
                }
                if (month == 2) {
                    var leap = (year % 4 == 0 &&
                               (year % 100 != 0 || year % 400 == 0));
                    if (day>29 || (day == 29 && !leap)) {
                        return false;
                    }
                }
                return true;
            }
]]>   javascript >
        
validator >
        

        
< validator  name ="range"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateIntRange"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
="integer"  msg ="errors.range" >
            
< javascript >
            function validateRange(form) {
                return validateIntRange(form);
            }
]]>   javascript >
        
validator >
        
< validator  name ="intRange"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateIntRange"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
="integer"  msg ="errors.range" >
            
< javascript >
            function validateIntRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new intRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((field.type == 'text' ||
                         field.type == 'textarea') &&
                        (field.value.length > 0)) {
                        
                        var iMin = parseInt(oRange[x][2]("min"));
                        var iMax = parseInt(oRange[x][2]("max"));
                        var iValue = parseInt(field.value);
                        if (!(iValue >= iMin && iValue <= iMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="floatRange"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateFloatRange"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
="float"  msg ="errors.range" >
            
< javascript >
            function validateFloatRange(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRange = new floatRange();
                for (x in oRange) {
                    var field = form[oRange[x][0]];
                    
                    if ((field.type == 'text' ||
                         field.type == 'textarea') &&
                        (field.value.length > 0)) {
                        
                        var fMin = parseFloat(oRange[x][2]("min"));
                        var fMax = parseFloat(oRange[x][2]("max"));
                        var fValue = parseFloat(field.value);
                        if (!(fValue >= fMin && fValue <= fMax)) {
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRange[x][1];
                            isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return isValid;
            }
]]>   javascript >
        
validator >
        
< validator  name ="creditCard"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateCreditCard"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.creditcard" >
            
< javascript >
            function validateCreditCard(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oCreditCard = new creditCard();
                for (x in oCreditCard) {
                    if ((form[oCreditCard[x][0]].type == 'text' ||
                         form[oCreditCard[x][0]].type == 'textarea') &&
                        (form[oCreditCard[x][0]].value.length > 0)) {
                        if (!luhnCheck(form[oCreditCard[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oCreditCard[x][0]];
                            }
                            fields[i++] = oCreditCard[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
             */
            function luhnCheck(cardNumber) {
                if (isLuhnNum(cardNumber)) {
                    var no_digit = cardNumber.length;
                    var oddoeven = no_digit & 1;
                    var sum = 0;
                    for (var count = 0; count < no_digit; count++) {
                        var digit = parseInt(cardNumber.charAt(count));
                        if (!((count & 1) ^ oddoeven)) {
                            digit *= 2;
                            if (digit > 9) digit -= 9;
                        };
                        sum += digit;
                    };
                    if (sum == 0) return false;
                    if (sum % 10 == 0) return true;
                };
                return false;
            }

            function isLuhnNum(argvalue) {
                argvalue = argvalue.toString();
                if (argvalue.length == 0) {
                    return false;
                }
                for (var n = 0; n < argvalue.length; n++) {
                    if ((argvalue.substring(n, n+1) < "0") ||
                        (argvalue.substring(n,n+1) > "9")) {
                        return false;
                    }
                }
                return true;
            }
]]>   javascript >
        
validator >
        
< validator  name ="email"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateEmail"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.email" >
            
< javascript >
            function validateEmail(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oEmail = new email();
                for (x in oEmail) {
                    if ((form[oEmail[x][0]].type == 'text' ||
                         form[oEmail[x][0]].type == 'textarea') &&
                        (form[oEmail[x][0]].value.length > 0)) {
                        if (!checkEmail(form[oEmail[x][0]].value)) {
                            if (i == 0) {
                                focusField = form[oEmail[x][0]];
                            }
                            fields[i++] = oEmail[x][1];
                            bValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                    focusField.focus();
                    alert(fields.join('\n'));
                }
                return bValid;
            }

            /**
             * Reference: Sandeep V. Tamhankar ([email protected]),
             * http://javascript.internet.com
             */
            function checkEmail(emailStr) {
               if (emailStr.length == 0) {
                   return true;
               }
               var emailPat=/^(.+)@(.+)$/;
               var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
               var validChars="\[^\\s" + specialChars + "\]";
               var quotedUser="(\"[^\"]*\")";
               var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
               var atom=validChars + '+';
               var word="(" + atom + "|" + quotedUser + ")";
               var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
               var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
               var matchArray=emailStr.match(emailPat);
               if (matchArray == null) {
                   return false;
               }
               var user=matchArray[1];
               var domain=matchArray[2];
               if (user.match(userPat) == null) {
                   return false;
               }
               var IPArray = domain.match(ipDomainPat);
               if (IPArray != null) {
                   for (var i = 1; i <= 4; i++) {
                      if (IPArray[i] > 255) {
                         return false;
                      }
                   }
                   return true;
               }
               var domainArray=domain.match(domainPat);
               if (domainArray == null) {
                   return false;
               }
               var atomPat=new RegExp(atom,"g");
               var domArr=domain.match(atomPat);
               var len=domArr.length;
               if ((domArr[domArr.length-1].length < 2) ||
                   (domArr[domArr.length-1].length > 3)) {
                   return false;
               }
               if (len < 2) {
                   return false;
               }
               return true;
            }
]]>   javascript >
        
validator >
        

        
< validator  name ="requiredArray"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateRequiredArray"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.required"  
            jsFunctionName
="RequiredArrayValidations" >
            
< javascript >
            function validateRequiredArray(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                var j=0;
                oRequired = new RequiredArrayValidations();
                for (x in oRequired) {
                    var field = form[oRequired[x][0]];
                    for(var ii=0;ii                         if(field[ii].value.length>0){
                            j++;
                        }
                    }  
                     if (j < field.length) {
                        
                            if (i == 0) {
                                focusField = field;
                            }
                            fields[i++] = oRequired[x][1];
                            isValid = false;
                    }
                }

                if (fields.length > 0) {
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
]]>   javascript >
        
validator >
        

        
< validator  name ="integerArray"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateIntegerArray"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.integer"  
            jsFunctionName
="IntegerArrayValidations" >
            
< javascript >
            function validateIntegerArray(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var j=0;
                var fields = new Array();
                oInteger = new IntegerArrayValidations();
                for (x in oInteger) {
                    var field = form[oInteger[x][0]];
                    for(var ii=0;ii                         var value=field[ii].value;
                        if (value.length > 0) {
                        
                            if (!isAllDigits(value)) {
                                bValid = false;                                
                                j++;
                                if(j==1){
                                    focusField = field[ii];
                                }
                                
                            } else {
                                var iValue = parseInt(value);
                                if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
                                    bValid = false;
                                    j++;
                                    if(j==1){
                                        focusField = field[ii];
                                    }
                               }
                           }
                       }
                    }  
                     if (j > 0) {
                        
                            fields[i++] = oInteger[x][1];
                            isValid = false;
                    }
                }
                    
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }

            
]]>   javascript >
        
validator >
        

        
< validator  name ="floatArray"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateFloatArray"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.float"  
            jsFunctionName
="FloatArrayValidations" >
            
< javascript >
            function validateFloatArray(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var j=0;
                var fields = new Array();
                oFloat = new FloatArrayValidations();
                for (x in oFloat) {
                    var field = form[oFloat[x][0]];
                    for(var ii=0;ii                         var value=field[ii].value;
                        
                       if (value.length > 0) {
                            // remove '.' before checking digits
                            var tempArray = value.split('.');
                            var joinedString= tempArray.join('');

                            if (!isAllDigits(joinedString)) {
                                bValid = false;
                                j++;
                                if (j == 1) {
                                    focusField = field[ii];
                                }
                                
                            } else {
                                var iValue = parseFloat(value);
                                if (isNaN(iValue)) {
                                    j++;
                                    if (j == 1) {
                                        focusField = field[ii];
                                    }
                                    bValid = false;
                                }
                            }
                        }
                    }  
                     if (j > 0) {
                        
                            fields[i++] = oFloat[x][1];
                            isValid = false;
                    }
                }
                    
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return bValid;
            }

            
]]>   javascript >
        
validator >
        
        
        
< validator  name ="doubleArray"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateDoubleArray"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.double" />
        
            
        
< validator  name ="dateArray"  
            classname
="org.apache.struts.validator.FieldChecks"  
            method
="validateDateArray"  
            methodParams
="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
 
            depends
=""  msg ="errors.date"  jsFunctionName ="DateArrayValidations" >
            
< javascript >
            function validateDateArray(form) {
                var bValid = true;
                var focusField = null;
                var i = 0;
                var j=0;
                var fields = new Array();
                oDate = new DateArrayValidations();
                for (x in oDate) {
                    var field = form[oDate[x][0]];
                    for(var ii=0;ii                         var value=field[ii].value;
                        var datePattern = oDate[x][2]("datePatternStrict");
                        if ((value.length > 0) &&
                           (datePattern.length > 0)) {
                          var MONTH = "MM";
                          var DAY = "dd";
                          var YEAR = "yyyy";
                          var orderMonth = datePattern.indexOf(MONTH);
                          var orderDay = datePattern.indexOf(DAY);
                          var orderYear = datePattern.indexOf(YEAR);
                          if ((orderDay < orderYear && orderDay > orderMonth)) {
                             var iDelim1 = orderMonth + MONTH.length;
                             var iDelim2 = orderDay + DAY.length;
                             var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                             var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                             if (iDelim1 == orderDay && iDelim2 == orderYear) {
                                dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                             } else if (iDelim1 == orderDay) {
                                dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                             } else if (iDelim2 == orderYear) {
                                dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                             } else {
                                dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                             }
                             var matched = dateRegexp.exec(value);
                             if(matched != null) {
                                if (!isValidDate(matched[2], matched[1], matched[3])) {
                                   
                                   bValid =  false;
                                   j++;
                                }
                             } else {
                                bValid =  false;
                                j++;
                             }
                           } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
                             var iDelim1 = orderDay + DAY.length;
                             var iDelim2 = orderMonth + MONTH.length;
                             var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                             var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                             if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                                 dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
                             } else if (iDelim1 == orderMonth) {
                                 dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
                             } else if (iDelim2 == orderYear) {
                                 dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
                             } else {
                                 dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
                             }
                             var matched = dateRegexp.exec(value);
                             if(matched != null) {
                                 if (!isValidDate(matched[1], matched[2], matched[3])) {
                                     j++;
                                     bValid =  false;
                                  }
                             } else {
                                 j++;
                                 bValid =  false;
                             }
                           } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
                             var iDelim1 = orderYear + YEAR.length;
                             var iDelim2 = orderMonth + MONTH.length;
                             var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
                             var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
                             if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                                 dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
                             } else if (iDelim1 == orderMonth) {
                                 dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
                             } else if (iDelim2 == orderDay) {
                                 dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
                             } else {
                                 dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
                             }
                             var matched = dateRegexp.exec(value);
                             if(matched != null) {
                                 if (!isValidDate(matched[3], matched[2], matched[1])) {
                                     j++;
                                     bValid =  false;
                                  }
                              } else {
                                  j++;
                                  bValid =  false;
                              }
                         } else {
                             j++;
                             bValid =  false;
                         }
                      }                      
                      }
                     if (j > 0) {
                        
                            fields[i++] = oDate[x][1];
                            isValid = false;
                     }
                }
                    
                if (fields.length > 0) {
                   alert(fields.join('\n'));
                }
                return bValid;
            }

            
]]>   javascript >
        
validator >
    
global >

form-validation >

你可能感兴趣的:(struts+spring+hibernate的web应用<四> Web层代码编写(1))