2、dwr的一些基本应用

首先我们给出两个类:
Group.java

package org.konghao.dwr.model;
public class Group {
    
    private int id ;
    private String name ;

    public Group(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public Group() {
        super();
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String toString() {
        return "Group [id=" + id + ", name=" + name + "]";
    }
}

User.java

package org.konghao.dwr.model;
public class User {
    private int id ;
    private String username ;
    private Group group;
    
    public User() {
        super();
    }
    public User(int id, String username, Group group) {
        super();
        this.id = id;
        this.username = username;
        this.group = group;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Group getGroup() {
        return group;
    }
    public void setGroup(Group group) {
        this.group = group;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", group=" + group
                + "]";
    }
}

MyException.java

package org.konghao.dwr.model;
public class MyException extends RuntimeException {
    public MyException() {}

    public MyException(String message, Throwable cause,
            boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }

    public MyException(String message, Throwable cause) {
        super(message, cause);
    }

    public MyException(String message) {
        super(message);
    }

    public MyException(Throwable cause) {
        super(cause);
    }
}

下面我们在类MyDwr.java中添加一些方法:

package org.konghao.dwr.model;
import java.util.ArrayList;
import java.util.List;

public class MyDwr {
    public String hello(String world){
        System.out.println("hello " + world);
        return "hello" + world;
    }
    
    public User load(){
        User user = new User(1,"张三", new Group(1, "财务处"));
        return user;
    }
    
    public List list(){
        List users = new ArrayList();
        users.add(new User(1,"张三", new Group(1, "财务处")));
        users.add(new User(2,"李四", new Group(2, "科技处")));
        users.add(new User(3,"王五", new Group(3, "宣传部")));
        
        return users;
    }
    
    public void add(User user){
        System.out.println(user);
    }
    
    public void deleteUser(){
        throw new MyException("在删除用户出现异常");
    }
}

下面我们在使用js代码来直接访问这个类中的相关方法:
dwr02.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    dwr02.jsp
    
    
    
  
  

但是我们在访问此jsp的时候发现user的相关值访问不到,这是因为对于javabean类型的数据,我们需要添加相关的转换器。在类dwr.xml中添加相关的配置:




    
        
            
        
        
        
        
    

在后面还需要用到异常,所以这里我们将异常类的转换器也添加进去。此时测试结果是:

2、dwr的一些基本应用_第1张图片
1

从这里我们可以看到我们可以直接访问到 java类的相关属性。这是访问 javabean的相关属性,还可以访问相关的 java集合。
dwr03.jsp

    

我们还可以使用json串来进行添加:
dwr04.jsp

    

当然我们还可以取得相关的异常消息:
dwr05.jsp

    

这里我们在测试的时候会发现打印出相关异常消息。
对于异常处理,dwr给出了其他一些属性,首先我们改造上面的jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    dwr01.jsp
    
    
    
    
  
  

说明:这里我们使用了dwr的一个工具jsutil.js),同时需要在dwr.xml中配置:


然后进行测试,会弹出相关的信息,最后弹出的是异常的默认属性:

2、dwr的一些基本应用_第2张图片
2

相关的使用可以查看文档。下面看一下工具 util.js的相关方法的使用:
先在 MyDwr.java中添加一个方法:

public int add(int a, int b){
    return a + b;
}

dwr06.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    dwr06.jsp
    
    
    
    
  
  
  
    +
    
    
    
id username groupName

在测试的时候,方法calAdd可以达到将两个输入值相加的功能。这里使用getValue取得相关元素的值。点击“初始化地址”时可以将相关的值添加到select中,同时也可以点击“添加”向select中添加值。当然在后面我们还可以像table中添加值。
下面我们看文件上传:
首先我们还是在MyDwr.java中添加一个方法:

    public String upload(InputStream is, String filename) throws IOException{
        String fn = FilenameUtils.getName(filename);//获取文件名称
        FileUtils.copyInputStreamToFile(is, new File("d:/webservice/" + fn));
        return fn;
    }

dwr07.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    dwr07.jsp
    
    
    
    
  
  
    
    
  

这样就实现了文件上传。不仅如此,我们还可以获得HttpServletRequest等对象,这里我们先对方法upload进行改造:

    public String upload(InputStream is, String filename) throws IOException{
        //WebContext可以获取HttpServletRequest对象
        WebContext wc = WebContextFactory.get();
        HttpServletRequest request = wc.getHttpServletRequest();
        String realPath = request.getSession().getServletContext().getRealPath("upload");
        
        String fn = FilenameUtils.getName(filename);//获取文件名称\
        String filePath = realPath + "/" + fn;
        FileUtils.copyInputStreamToFile(is, new File(filePath));
        return filePath;
    }

还是使用dwr07.jsp进行测试,我们会发现文件被上传到本工程中了。

你可能感兴趣的:(2、dwr的一些基本应用)