首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

Ajax-DWR框架施用简介

2012-06-27 
Ajax-DWR框架使用简介Ajax-DWR框架使用简介一般步骤:1。将dwr.xml配置文件放在Web应用的WEB-INF目录下;dwr

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="批量添加水印" onclick="batchAddWaterMark();"/></div>
<div 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)

    */

热点排行