AJAX-DWR配置与应用

一、MyEclipse下新建Web工程,加入dwr的相关dwr.jar包到WEB-INF\lib下
-------------------------
二、在web.xml中增加DWR的Servlet配置,如下:

<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>

-----------------------------
三、在WEB-INFO下新建并配置dwr.xml文件,如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN" "http://getahead.org/dwr/dwr30.dtd"> 
<dwr>
   <allow>
    <create creator="new" javascript="Fenye">
    	<param name="class" value="com.icss.dwr.MyDwrTestDAO"></param>
    </create>
    <convert match="com.icss.dwr.FenyeVO" converter="bean"></convert>
  </allow>
</dwr>

-----------------------------
四、写服务器端java类,vo、dao类及连接数据库类DBUtil
vo类:


public class FenyeVO {
	private int f_no;
	private String f_name;
	private String f_sex;
	public String getF_name() {
		return f_name;
	}
	public void setF_name(String f_name) {
		this.f_name = f_name;
	}
	public int getF_no() {
		return f_no;
	}
	public void setF_no(int f_no) {
		this.f_no = f_no;
	}
	public String getF_sex() {
		return f_sex;
	}
	public void setF_sex(String f_sex) {
		this.f_sex = f_sex;
	}	
}

dao类:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

public class MyDwrTestDAO {
	//查找所有用户并分页显示
	public ArrayList selfenye(int num){
		ArrayList<FenyeVO> list = new ArrayList<FenyeVO>();
		Db db = new Db();
		Connection conn = db.getCon();
		ResultSet rs = null;
		PreparedStatement ps = null;
		String sql = "exec proc_fenye @linenum=?";
		try{
			ps = conn.prepareStatement(sql);
			ps.setInt(1, num);
			rs = ps.executeQuery();
			while(rs.next()){
				FenyeVO fenye = new FenyeVO();
				fenye.setF_no(rs.getInt("f_no"));
				fenye.setF_name(rs.getString("f_name"));
				fenye.setF_sex(rs.getString("f_sex"));
				list.add(fenye);
			}
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			try {
				rs.close();
				ps.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return list;
	} 
       //查找对应ID的用户信息
	public FenyeVO selOneUser(){
		Db db = new Db();
		ResultSet rs = null;
		PreparedStatement ps = null;
		Connection conn = db.getCon();
		String sql = "select * from fenye where f_no=?";
		FenyeVO fenye = new FenyeVO();
		try{
			ps = conn.prepareStatement(sql);
			ps.setInt(1, 21);
			rs = ps.executeQuery();
			if(rs.next()){
				fenye.setF_no(rs.getInt("f_no"));
				fenye.setF_name(rs.getString("f_name"));
				fenye.setF_sex(rs.getString("f_sex"));
			}
			System.out.println("===="+fenye.getF_name());
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			try {
				rs.close();
				ps.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return fenye;
	}
	//删除对应ID的用户
	public boolean deleteUser(FenyeVO fenye){
		Db db = new Db();
		ResultSet rs = null;
		PreparedStatement ps = null;
		Connection conn = db.getCon();
		String sql = "delete from fenye where f_no=?";
		try{
			ps = conn.prepareStatement(sql);
			ps.setInt(1, fenye.getF_no());
			if(ps.execute()){
				return true;
			}
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			try {
				rs.close();
				ps.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return false;
	}
}

-----------------------------
五、写jsp页面,引入engine.js,util.js,后台对应的js文件名,这里是Fenye.js,如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>My JSP 'Dwr.jsp' starting page</title>
	<script type='text/javascript' src='dwr/interface/Fenye.js'></script>
        <script type='text/javascript' src='dwr/engine.js'></script>
	<script type='text/javascript' src='dwr/util.js'></script>
	
	<script type="text/javascript">
	
	dwr.engine.setAsync(false);
	dwr.engine.setErrorHandler(function(msg){alert(msg)});
	var page=0;
	
	//显示下拉菜单项的
	function getSelect(){
		Fenye.selfenye(dwr.util.getValue("txt1"),showSelect);
	}
	//加载下拉菜单值
	function showSelect(data){
		dwr.util.removeAllOptions("sel");
		dwr.util.addOptions("sel",data,"f_sex","f_name");
	}
	//跳到上一面
	function laxtpage(){
			
		if(page <= 0){
			page=0;
			getStr();
		}else{
		page--;
		getStr();
		}
	}
	//跳到下一页
	function nextpage(){
		page++;
		getStr();
	}
	//显示上下跳转分布
	function getStr(){
//		Fenye.selfenye(dwr.util.getValue("txt1"),show);
		Fenye.selfenye(page,show);
	}
	//显示跳到对应页面
	function jumppage(){
		page = dwr.util.getValue("jumppage");
		Fenye.selfenye(dwr.util.getValue("jumppage"),show);
	}
	//用于向listtable中加入返回的数值,用data参数传递,进入cellFunces处理,
	//在options中处理要向listtable里面加入的元素
	function show(data){
		dwr.util.removeAllRows("listtable");
		dwr.util.addRows("listtable",data,cellFuncs,options);
	}
	//返回所填充的具体数值
	var cellFuncs=[
		function(obj){return obj.f_no;},
		function(obj){return obj.f_name;},
		function(obj){return obj.f_sex;},
		function(obj){
			var oDiv = document.createElement("div");
			var btn = document.createElement("input");
			btn.type="button";
			btn.value="delete";
			btn.οnclick=function(){
				var o = {f_no:obj.f_no};
				Fenye.deleteUser(o);
			}
			 btn1 = document.createElement("input");
	    	 btn1.type="button";
	    	 btn1.value="update";
	    	 btn1.onclick = function(){
	       		 //var o = {proid:200,proname:"hello"}
	       		 //Test.deletePro(o);
	    	 }
	    	 var a = document.createElement("<a href='Del.jsp?id="+obj.proid+"'>");
	    	 a.innerHTML = "del";
			oDiv.appendChild(btn);
			oDiv.appendChild(btn1);
			oDiv.appendChild(a);
			return oDiv;
		}
	]
	//创建填充的列以及列的style
	var options={
		cellCreator:function(options){
			var oTd=options.document.createElement("td");
			oTd.style.textAlign="center";
			if(options.cellNum==0){
		//		oTd.style.textAlign="center";
				oTd.style.fontWeight="bold";
	       		oTd.style.color="red";
			}
			return oTd;
		}
	}
	
	</script>

  </head>
  
  <body οnlοad="getStr()">
    <input type="text" id="txt"/>
    <input type="button" value="query" οnclick="query()"/>
    <br/>
    产品ID:<span id="s1"></span><br/>
    产品名称:<span id="s2"></span>
    <br/>  
    <input type="text" id="txt1"/>
    <input type="button" value="getSelect" οnclick="getSelect()"/>
    <select id="sel"></select>
    <table border="1">
      <thead>
      <tr>
      <th width="100">ID</th>
      <th width="100">Name</th>
      <th width="100">SEX</th>
       <th width="100">&nbsp;</th>
      </tr>
      </thead>
      <tbody  id="listtable"></tbody>
    </table>
    <input type="button" οnclick="laxtpage()" value="上一页" />
    <input type="button" value="跳到" size="5px" οnclick="jumppage()" />
    <input type="text" id="jumppage"/>
    <input type="button" οnclick="nextpage()" value="下一页"/>
    
  </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值