前面的文章:
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
,接着添加如下代码:
<!--
View
-->
<
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
>
<!--
- Loads the root application context of this web app at startup.
- The application context is then available via
- WebApplicationContextUtils.getWebApplicationContext(servletContext).
-->
<
listener
>
<
listener-class
>
org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
listener
>
<
listener-class
>
org.springframework.web.util.Log4jConfigListener
</
listener-class
>
</
listener
>
<!--
Action Servlet Configuration
-->
<
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
>
<!--
Action Servlet Mapping
-->
<
servlet-mapping
>
<
servlet-name
>
action
</
servlet-name
>
<
url-pattern
>
*.do
</
url-pattern
>
</
servlet-mapping
>
<!--
The Welcome File List
-->
<
welcome-file-list
>
<
welcome-file
>
products/index.jsp
</
welcome-file
>
</
welcome-file-list
>
<!--
Struts Tag Library Descriptors
-->
<
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"
>
<!--
This file contains the default Struts Validator pluggable validator
definitions. It should be placed somewhere under /WEB-INF and
referenced in the struts-config.xml under the plug-in element
for the ValidatorPlugIn.
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
These are the default error messages associated with
each validator defined in this file. They should be
added to your projects ApplicationResources.properties
file or you can associate new ones by modifying the
pluggable validators msg attributes in this file.
# Struts Validator Error Messages
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.
-->
<
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
>
<![CDATA[
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
>
<!--
Åжϸ´Ñ¡¿ò²»ÄÜΪ¿Õ
ÕÔÆ·º£ 2004
-->
<
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
>
<![CDATA[
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<field.length;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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<!--
range is deprecated use intRange instead
-->
<
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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
>
<![CDATA[
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 (stamhankar@hotmail.com),
* 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
>
<!--
ÅжÏÊý×éÿ¸öÊýÖµ¶¼²»ÄÜΪ¿Õ
ÕÔÆ·º£ 2004
-->
<
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
>
<![CDATA[
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<field.length;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
>
<!--
ÅжÏÊý×éÿ¸ö²»Îª¿ÕµÄÊýÖµ¶¼±ØÐëΪÕûÐÍ
ÕÔÆ·º£ 2004
-->
<
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
>
<![CDATA[
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<field.length;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
>
<!--
ÅжÏÊý×éÿ¸ö²»Îª¿ÕµÄÊýÖµ¶¼±ØÐëΪ¸¡µãÐÍ
ÕÔÆ·º£ 2004
-->
<
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
>
<![CDATA[
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<field.length;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
>
<!--
ÅжÏÊý×éÿ¸ö²»Îª¿ÕµÄÊýÖµ¶¼±ØÐëΪ˫¾«¶ÈÐÍ
ÕÔÆ·º£ 2004
-->
<
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"
/>
<!--
ÅжÏÊý×éÿ¸ö²»Îª¿ÕµÄÊýÖµ¶¼±ØÐëΪÈÕÆÚÐÍ
ÕÔÆ·º£ 2004
-->
<
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
>
<![CDATA[
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<field.length;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层代码编写(2)
posted on 2007-03-14 10:00
千山鸟飞绝 阅读(9314)
评论(8) 编辑 收藏 所属分类:
Web开发