Ajax-DWR框架使用简介

Ajax-DWR框架使用简介
一般步骤:
1。将dwr.xml配置文件放在Web应用的WEB-INF目录下;
<dwr>
<allow>
<create creator="spring" scope="page" javascript="imageInfoService">
<param name="beanName" value="imageInfoService"/>
<include method="avalidateAddBizImage"/>
<include method="isWaterMarkPolicy"/>
</create>
</allow>
</dwr>

2.JSP文件的JS代码中调用DWR:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<%@ include file="/commons/taglibs.jsp" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"/>
<meta http-equiv="expires" content="Wed, 26 Feb 1997 08:21:57 GMT"/>
<link href="${ctx}/styles/imageRepository/common.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="${ctx}/dwr/util.js"> </script>
<script type="text/javascript" src="${ctx}/dwr/engine.js"> </script>
<script type="text/javascript" src="${ctx}/dwr/interface/imageInfoService.js"></script>
<script>
<c:if test="${categoryIsNotExist == true}">
alert("该图片库分类已经不存在!");
</c:if>
function batchAddWaterMark() {
var chkbxNum= document.getElementsByName('categoryId');
var isChecked = false;
for (var i=0; i< chkbxNum.length; i++){
if (chkbxNum[i].checked == true) {
isChecked = true;
break;
}
}
if (!isChecked) {
alert("请选择要添加水印的图片库分类!");
return false;
}

<!--JavaScript代码调用AJAX框架DWR-->
imageInfoService.isWaterMarkPolicy("1",function(result){
if(result=='isWaterMarkPolicy'){
if(confirm("您确定进行此操作吗,将会把图片库中所有未加过水印的图片全部添加水印!")){
document.categoryForm.action = "${ctx}/imageRepository.do?method=batchAddWaterMark";
document.categoryForm.submit();
}
}else{
alert("无法添加水印,请先到企业设置――图片水印参数设置中进行设置!");
return false;
}
});

}
</script>
<div align="center"><input name="buttonDelete22" type="button" value="批量添加水印" class="buttonL" οnclick="batchAddWaterMark();"/></div>
<div class="font_gray" style="margin-top:10px;">提示:上传图片前请先在“默认上传分类设置”中绑定图片库分类</div>
</div>
</body>
</html>
3.业务类
(1)接口类:
package com.sitechasia.ebiz.imagerepository.service;
import java.util.List;
import java.util.Map;
import com.sitechasia.ebiz.imagerepository.vo.ImageInfoVO;
import com.sitechasia.webx.core.service.IValueObjectBaseService;
import com.sitechasia.webx.core.support.Page;
public interface IImageInfoService extends IValueObjectBaseService<ImageInfoVO> {

/**
* 判断是否有水印策略
* @param hasAddWaterMark
* @return
*/
public String isWaterMarkPolicy(String hasAddWaterMark);
}

(2)实现类:
package com.sitechasia.ebiz.imagerepository.service.impl;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.sitechasia.ebiz.framework.web.ContextHolder;
import com.sitechasia.ebiz.download.service.IDownloadFileCallService;
import com.sitechasia.ebiz.filerepository.dao.IFileInfoDao;
import com.sitechasia.ebiz.filerepository.model.FileInfoDO;
import com.sitechasia.ebiz.filerepository.service.IFileInfoService;
import com.sitechasia.ebiz.filerepository.vo.FileInfoVO;
import com.sitechasia.ebiz.imagerepository.dao.IImageCategoryDao;
import com.sitechasia.ebiz.imagerepository.dao.IImageInfoDao;
import com.sitechasia.ebiz.imagerepository.dao.IModuleImgCategoryDao;
import com.sitechasia.ebiz.imagerepository.model.ImageCategoryDO;
import com.sitechasia.ebiz.imagerepository.model.ImageInfoDO;
import com.sitechasia.ebiz.imagerepository.service.IImageInfoService;
import com.sitechasia.ebiz.imagerepository.util.ReturnMessage;
import com.sitechasia.ebiz.imagerepository.vo.ImageCategoryVO;
import com.sitechasia.ebiz.imagerepository.vo.ImageInfoVO;
import com.sitechasia.ebiz.imagewatermark.core.impl.WaterMarkPolicyGroup;
import com.sitechasia.ebiz.imagewatermark.service.IMarkPolicyService;
import com.sitechasia.ebiz.imagewatermark.service.IWaterMarkService;
import com.sitechasia.webx.core.exception.BizLayerException;
import com.sitechasia.webx.core.service.impl.BaseDOVOService;
import com.sitechasia.webx.core.support.Page;
import com.sitechasia.webx.core.utils.base.PopulateUtil;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageInfoServiceImpl extends
BaseDOVOService<ImageInfoDO, ImageInfoVO> implements IImageInfoService {
private IImageInfoDao imageInfoDao;
private IImageCategoryDao imageCategoryDao;
private IFileInfoDao fileInfoDao;
private IDownloadFileCallService downloadFileCallService;
private IModuleImgCategoryDao moduleImgCateDao;
private IWaterMarkService waterMarkService;
private IMarkPolicyService markPolicyService;
private IWaterMarkService gifWaterMarkService;
public String isWaterMarkPolicy(String hasAddWaterMark) {
String path ="";
String result="";
if (hasAddWaterMark != null && hasAddWaterMark.equals("1")) {
String siteId = ContextHolder.getContext().getSiteId();
if (siteId != null && !siteId.equals("")) {
path = "./cluster/" + siteId
+ "/configParameter/watermark/policy.xml";
if (!new File(path).exists()) {
result="notWaterMarkPolicy";
}else{
result="isWaterMarkPolicy";
}
} else {
logger.equals("Site id is not exiest");
}
}
return result;
}
}
4。错误分析:
注意:由于配置不对,将出现错误。
(1)第二种情况;
例如将
<dwr>
<allow>
<create creator="spring" scope="page" javascript="imageInfoService">
<param name="beanName" value="imageInfoService"/>
<include method="avalidateAddBizImage"/>
<include method="isWaterMarkPolicy"/>
</create>
</allow>
</dwr>写成
<dwr>
<allow>
<create creator="spring" scope="page" javascript="imageInfoService22">
<param name="beanName" value="imageInfoService"/>
<include method="avalidateAddBizImage"/>
<include method="isWaterMarkPolicy"/>
</create>
</allow>
</dwr>
并且在JS代码还用imageInfoService.isWaterMarkPolicy("1",function(result){
if(result=='isWaterMarkPolicy'){
if(confirm("您确定进行此操作吗,将会把图片库中所有未加过水印的图片全部添加水印!")){
document.categoryForm.action = "${ctx}/imageRepository.do?method=batchAddWaterMark";
document.categoryForm.submit();
}
}else{
alert("无法添加水印,请先到企业设置――图片水印参数设置中进行设置!");
return false;
}
});)
前台错误信息是:imageInfoService 未定义
后台报错信息是:
18:28:28,560 WARN [DefaultCreatorManager] Names of known classes are: ServerTime productService customerProccessService payTypeService productcategoriseservice producttempaletService AdvertiseService shippayService markservice brandService infoCategoryService pricecomponentService bpisService pmcategoryService orderService imageInfoService22 orderdiscountService
18:28:28,560 WARN [UrlProcessor] Error: java.lang.SecurityException: No class by name: imageInfoService
18:28:28,560 WARN [UrlProcessor] Sent 501
java.lang.SecurityException: No class by name: imageInfoService
at org.directwebremoting.impl.DefaultCreatorManager.getCreator(DefaultCreatorManager.java:167)
at org.directwebremoting.impl.DefaultRemoter.generateInterfaceScript(DefaultRemoter.java:155)
at org.directwebremoting.servlet.InterfaceHandler.handle(InterfaceHandler.java:45)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:120)
at org.directwebremoting.servlet.DwrServlet.doGet(DwrServlet.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sitechasia.ebiz.framework.web.ContextFilter.doFilterInternal(ContextFilter.java:63)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
(2)第二种情况;
如果将<script type="text/javascript" src="${ctx}/dwr/interface/imageInfoService.js"></script>写成
<script type="text/javascript" src="${ctx}/dwr/interface/imageInfoService33.js"></script>
并且在JS代码还用imageInfoService.isWaterMarkPolicy("1",function(result){
if(result=='isWaterMarkPolicy'){
if(confirm("您确定进行此操作吗,将会把图片库中所有未加过水印的图片全部添加水印!")){
document.categoryForm.action = "${ctx}/imageRepository.do?method=batchAddWaterMark";
document.categoryForm.submit();
}
}else{
alert("无法添加水印,请先到企业设置――图片水印参数设置中进行设置!");
return false;
}
});)
前台错误信息是:imageInfoService 未定义
那么后台将报错误信息是:
18:38:42,457 WARN [DefaultCreatorManager] Names of known classes are: imageInfoService ServerTime productService customerProccessService payTypeService productcategoriseservice producttempaletService AdvertiseService shippayService markservice brandService infoCategoryService pricecomponentService bpisService pmcategoryService orderService orderdiscountService
18:38:42,457 WARN [UrlProcessor] Error: java.lang.SecurityException: No class by name: imageInfoService33
18:38:42,457 WARN [UrlProcessor] Sent 501
java.lang.SecurityException: No class by name: imageInfoService33
at org.directwebremoting.impl.DefaultCreatorManager.getCreator(DefaultCreatorManager.java:167)
at org.directwebremoting.impl.DefaultRemoter.generateInterfaceScript(DefaultRemoter.java:155)
at org.directwebremoting.servlet.InterfaceHandler.handle(InterfaceHandler.java:45)
at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)
at org.directwebremoting.servlet.DwrServlet.doPost(DwrServlet.java:120)
at org.directwebremoting.servlet.DwrServlet.doGet(DwrServlet.java:106)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.sitechasia.ebiz.framework.web.ContextFilter.doFilterInternal(ContextFilter.java:63)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)

*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值