dwr3 学习笔记<一>

直接上代码,请下载源代码[在最后],有问题发我邮件lyk_52199@163.com
<==jsp/javascript================================>
[b]-->main.jsp[/b]

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR3.0DEMO--BY JUSTIN LEE @ 2011-03-13 PM</title>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/Demo.js'></script>
<script type='text/javascript'>
//====================================================================================================
//无参,有简单返回值,只传一个回调参数过去
function test1(){
Demo.test1(callbackTest1);
}
/**
*test1()回调函数
**/
function callbackTest1(data){
alert(data);
}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有简单参数,无返回值
function test2(){
Demo.test2("简单参数");
//Demo.test2("简单参数",callbackTest2);//可以不用传回调函数,如果传了会得到NULL
}
/**
*test2()回调函数
**/
function callbackTest2(data){
alert(data);
}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有简单参数,有简单返回值
function test3(){
Demo.test3("有简单参数,有简单返回值",callbackTest3);
}
/**
*test3()回调函数
**/
function callbackTest3(data){
alert(data);
}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有简单参数,返回Bean类
function test4(){
Demo.test4(new Date(),callbackTest4);//这里参数是一个日期,就直接用JS的日期就可以了
}
/**
*test4()回调函数
**/
function callbackTest4(data){
//对于返回实体类的JS处理方法
if(data){
for(var property in data){
  alert("property:"+property);
  alert(property+":"+data[property]);
  }
}
//如果知道属性,则可以用下面的方法来获取值
alert(data["propA"]);
alert(data.propD[0]);//这种方式处理也可以,不过这里propD是一个数组,因此可以用数组的处理方法

}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有Bean参数,有简单返回值
function test5(){
var pa = "a String";//private String propA;
var pb = 23;//private Integer propB;
var pc = new Date();//private Date propC;
var pd = ["a","b","c"];//private String[] propD;
var obja = {propA:pa, propB:pb,propC:pc, propD:pd};//JSON方式构造一个类对象
Demo.test5(obja,callbackTest5);
}
/**
*test5()回调函数
**/
function callbackTest5(data){
alert(data);
}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有简单参数,返回LIST MAP OR SET集合类
function test6(){
Demo.test6("有简单参数,返回LIST MAP OR SET集合类",callbackTest6);
}
/**
*test6()回调函数
**/
function callbackTest6(data){
//不知道属性名称时,使用如下方法,最好少一点alert,很烦的
  for(var i=0;i<data.length;i++){
  for(var property in data[i]){
  //alert("property:"+property);
   alert("property:"+property+"--value:"+data[i][property]);
   }
  } 
//知道属性名称时,使用如下方法
  for(var i=0;i<data.length;i++){
  alert(data[i].propA);
  alert(data[i].propB);
alert(data[i].propD[0]);
   }
}
//====================================================================================================
/*****************************************************************************************************/
//====================================================================================================
//有List、Set或者Map等集合参数,返回LIST MAP OR SET集合类
function test7(){
var pa = "1a String for test7";//private String propA;
var pb = 11;//private Integer propB;
var pc = new Date();//private Date propC;
var pd = ["aforTest7","bforTest7","cforTest7"];//private String[] propD;
var obja = {propA:pa, propB:pb,propC:pc, propD:pd};
pa = "2a String for test7";//private String propA;
pb = 22;//private Integer propB;
pc = new Date();//private Date propC;
pd = ["2aforTest7","2bforTest7","2cforTest7"];//private String[] propD;
var objb = {propA:pa, propB:pb,propC:pc, propD:pd};
var list = [obja,objb];
Demo.test7(list,callbackTest7);
}
/**
*test7()回调函数
**/
function callbackTest7(data){
//不知道属性名称时,使用如下方法
  for(var i=0;i<data.length;i++){
  for(var property in data[i]){
   alert("--data["+i+"]--property:"+property+"----value:"+data[i][property]);
   }
  }
}
//====================================================================================================
</script>
</head>
<body onload="test7()">
</body>
</html>

[b]-->upload.jsp[/b]

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR3.0DEMO--BY JUSTIN LEE @ 2011-03-13 PM - file upload</title>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/UploadFile.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'></script>
<script type="text/javascript">
/*
*文件上传Dwr
*/
function uploadFiles() {
if(document.getElementById("uploadFile").value==""){
alert("请先选择要上传的文件");
document.getElementById("uploadFile").click();
return;
}
var file = dwr.util.getValue('uploadFile');
UploadFile.upload(file,function(data){
alert(data);
document.getElementById("uploadFile").value="";
//for(var property in data){
  //alert("property:"+property);
  //alert(property+":"+data[property]);
  //}
});
}
</script>
</head>
<body>
<table><tr>
<td>File</td>
<td><input type="file" id="uploadFile" /></td>
<td id="file.container"> </td>
</tr>
<tr>
<td colspan="3">
<button onclick="uploadFiles()">upload</button>
</td>
</tr>
</table>
</body>
</html>

[b]-->dodnload.jsp[/b]

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR3.0DEMO--BY JUSTIN LEE @ 2011-03-13 PM</title>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/DownloadFile.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
<script type='text/javascript' src='<%=request.getContextPath()%>/dwr/util.js'></script>
<script type="text/javascript">
/*
*文件下载Dwr
*/
function downloadPdfFile() {
var pdftext = dwr.util.getValue('pdftext');
DownloadFile.downloadPdfFile(pdftext, function(data) {
dwr.engine.openInDownload(data);
});
}
</script>
</head>
<body>
<input type="text" id="pdftext" value="Hello, justin Lee,这是一个PDF文档内容" />
<input type="button" onclick="downloadPdfFile()" value="DownLoadIt" />
</body>
</html>

<==java类================================>
[b]TestBean.java[/b]

/**
* 测试Bean
*/
package com.justin.dwrdemo;

import java.util.Date;

/**
* @author Administrator
*
*/
public class TestBean {
private String propA;
private Integer propB;
private Date propC;
private String[] propD;
public String getPropA() {
return propA;
}
public void setPropA(String propA) {
this.propA = propA;
}
public Integer getPropB() {
return propB;
}
public void setPropB(Integer propB) {
this.propB = propB;
}
public Date getPropC() {
return propC;
}
public void setPropC(Date propC) {
this.propC = propC;
}
public String[] getPropD() {
return propD;
}
public void setPropD(String[] propD) {
this.propD = propD;
}
}

[b]UploadFile.java[/b]

/**
*
*/
package com.justin.dwrdemo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.io.FileTransfer;

/**
* @author justin
*
*/
public class UploadFile {

/**
* 文件上传
*
* @return
*/
public String upload(FileTransfer fileTransfer) {
if(fileTransfer!=null){
System.out.println("---fileTransfer.getFilename()\t"+fileTransfer.getFilename());
System.out.println("---fileTransfer.getSize()\t"+fileTransfer.getSize());
System.out.println("---fileTransfer.getMimeType()\t"+fileTransfer.getMimeType());
}
String s = "{文件上传失败}";
try {
WebContext webContext = WebContextFactory.get();
webContext.getHttpServletResponse().setCharacterEncoding("UTF-8");
String saveurl = webContext.getHttpServletRequest().getSession().getServletContext().getRealPath("/upload");
System.out.println("---saveurl\t"+saveurl);
String fn = fileTransfer.getFilename();
fn = new String(fn.getBytes("ISO-8859-1"), "UTF-8");
File saveDir = new File("F://flexJavaDev/tomcat6_20110114/webapps/dwrDemo/uploadFiles");
if(!saveDir.exists()){
saveDir.mkdir();
}
File file = new File(saveDir.getAbsolutePath()+"/"+fn);
System.out.println("fileAbsPath:"+file.getAbsolutePath());
file.setReadable(true);
file.setWritable(true);
if (!file.exists()) {
file.createNewFile();
System.out.println("new File:"+file.getAbsolutePath());
}
InputStream inputStream = fileTransfer.getInputStream();
int available = inputStream.available();
byte[] b = new byte[available];
FileOutputStream foutput = new FileOutputStream(file);
inputStream.read(b);
foutput.write(b);
foutput.flush();
foutput.close();
inputStream.close();
s="{文件名:'"+fn+",文件类型:'"+fileTransfer.getMimeType()+"',文件大小:'"+fileTransfer.getSize()+"',文件存储地址:'"+file.getAbsolutePath()+"'}";
System.out.println("===s===\n"+s);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch(Exception e){
e.printStackTrace();
}
return s;
}
}


[b]DwrDemo.java[/b]

package com.justin.dwrdemo;

import java.util.*;

/**
* @author justin
* 功能:dwr3功能性测试类
* 日期:2011-03-13 PM
*/
public class DwrDemo {
/**
* 无参,有简单返回值
* @return
*/
public String test1(){
System.out.println("test1:无参,有简单返回值\t");
return "test1:无参,有简单返回值";
}
/**
* 有简单参数,无返回值
* @param s
*/
public void test2(String s){
System.out.println("test2:有简单参数,无返回值\t"+s);
}
/**
* 有简单参数,有简单返回值
* @param s
* @return
*/
public String test3(String s){
System.out.println("test3:有简单参数,有简单返回值\t"+s);
return "test3:"+s;
}
/**
* 有简单参数,返回Bean类
* @param date
* @return
*/
public TestBean test4(Date date){
System.out.println("test4:有简单参数,返回一般实体类\t"+date);
TestBean tb = new TestBean();
tb.setPropA("string prop a");
tb.setPropB(2);
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, 200);
tb.setPropC(c.getTime());
String[] a = new String[2];
a[0]="arrValue_0";
a[1]="数组值_1";
tb.setPropD(a);
return tb;
}
/**
* 有Bean参数,有简单返回值
* @param tb
* @return
*/
public String test5(TestBean tb){
System.out.println("test5:"+tb);
System.out.println(tb.getPropA());
System.out.println(tb.getPropB());
System.out.println(tb.getPropC());
System.out.println(tb.getPropD()[0]);
return "OK";
}
/**
* 有简单参数,返回LIST MAP OR SET集合类
* @param a
* @return
*/
public List<TestBean> test6(String a){
System.out.println("test6:有简单参数,返回LIST MAP OR SET集合类\t"+a);
TestBean tb = null;
List<TestBean> list = new ArrayList<TestBean>();
for(int i=0;i<10;i++){
tb = new TestBean();
tb.setPropA("propA__"+i);
tb.setPropB(i);
tb.setPropC(new Date());
String[] arr = new String[2];
arr[0]="arr0__"+i;
arr[1]="arr1__"+i;
tb.setPropD(arr);
list.add(tb);
}
return list;
}
/**
* 有List、Set或者Map等集合参数,返回LIST MAP OR SET集合类
* @param a
* @return
*/
public List<TestBean> test7(List<TestBean> list){
System.out.println("test7:有List、Set或者Map等集合参数,返回LIST MAP OR SET集合类\t"+list);
TestBean tb = null;
List<TestBean> listRs = new ArrayList<TestBean>();
if(list!=null){
for(int i=0;i<list.size();i++){
tb = list.get(i);
tb.setPropA(tb.getPropA()+"forReturn!");
tb.setPropB(tb.getPropB()+1000);
tb.setPropC(new Date());
String[] arr = tb.getPropD();
for(int j=0;j<arr.length;j++){
arr[j] = arr[j]+"updatedByTest7()";
}
tb.setPropD(arr);
listRs.add(tb);
}
}

return list;
}
}

[b]DownFile.java[/b]

/**
*
*/
package com.justin.dwrdemo;

import java.io.ByteArrayOutputStream;

import org.directwebremoting.io.FileTransfer;

import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;


/**
* @author justin
*
*/
public class DownloadFile {
public FileTransfer downloadPdfFile(String contents) throws Exception {
if (contents == null || contents.length() == 0) {
contents = "[BLANK]";
}

ByteArrayOutputStream buffer = new ByteArrayOutputStream();

Document document = new Document();
PdfWriter.getInstance(document, buffer);

document.addCreator("created by justin Lee with iText");
document.open();
document.add(new Paragraph(contents));
document.close();

return new FileTransfer("justinLeePdfDemo.pdf", "application/pdf", buffer.toByteArray());
}

}

----------------------------------------------------by justin Lee @2011-03-13 PM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值