本例子是由MySQL数据库,结合前台使用Struts来完成的。主要是为了说明DWR的使用,所以对于数据库的设计等等都较简单,大家觉得那里有什么不合理之处请给我留言!数据库创建的脚本在附件里面。
数据库的大概设计是,共有三个字段[id,name,parentid],顾名思义,id就是唯一标示一条记录,name存放的是省市县的名称,parentid存放的其上级的id,例如对于省一级别的,其parentid全部为0,对于市一级别的,其parentid存放的是所对应省的id,对于县一级别的,其parentid存放的是所对应市的id。
首先在进入显示页面的时候就把所有的parentid=0的全部查出来,初始化进入省所在的下拉列表中,然后根据选择省的下拉列表,通过DWR调用java方法将其所对应的市取出来,以此类推……
这里主要需要说明的是在web.xml里面需要配置如下:
代码
- <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.xml的同目录下,创建一个
dwr.xml,配置如下:
代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 0.4//EN" "http://www.getahead.ltd.uk/dwr/dwr.dtd">
- <dwr>
- <allow>
- <create creator="new" javascript="province">
- <param name="class" value="com.xinli.struts.service.ProvinceService"/>
- </create>
- </allow>
- </dwr>
对于dwr.xml需要说明的是:
1.creator:定义供javascript调用的新建对象的方法,也即对象的构造方法。其可以包括【new,none,scripted,spring,jsf,struts,pageflow,ejb3】关于creator的具体用法,可以参照
http://getahead.org/dwr/server/dwrxml/creators。
2.javascript:java类暴露给浏览器所调用的javascript的名称,也就是在jsp页面所出现的js的名称一定和此处所定义的一致。
3.param:指定create元素所需要的参数,比如其允许创建的java类的名称。
4.name:param元素所指定的参数名称。
5.value:param元素所指定的参数值。
后台业务方法实现如下
ProvinceDAO:
代码
- package com.xinli.struts.dao;
-
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Statement;
- import java.util.HashMap;
- import java.util.Map;
-
- import com.xinli.struts.db.DBManager;
-
-
-
-
- public class ProvinceDAO {
-
- private static Connection conn = null;
-
- private static Statement stmt = null;
-
- private static ResultSet rs = null;
-
-
- public Map getFirst() throws SQLException {
- Map map = new HashMap();
- String sql = "select * from province where parentid = " + 0;
- try {
- conn = DBManager.getConnection();
- stmt = conn.createStatement();
- rs = stmt.executeQuery(sql);
- while (rs.next()) {
- map.put(rs.getInt("id"), rs.getString("name"));
- }
- return map;
- } catch (Exception e) {
- System.out.println("----获得省的方法出现异常:" + e);
- e.printStackTrace();
- return null;
- } finally {
- if (rs != null && stmt != null && conn != null) {
- rs.close();
- stmt.close();
- conn.close();
- }
- }
- }
-
- public Map getChildByParentId(String id) throws SQLException {
- Map map = new HashMap();
- String sql = "select * from province as p where p.parentid =" + id;
- try {
- conn = DBManager.getConnection();
- stmt = conn.createStatement();
- rs = stmt.executeQuery(sql);
- while (rs.next()) {
- map.put(rs.getInt("id"), rs.getString("name"));
- }
- return map;
- } catch (Exception e) {
- System.out.println("----根据父id获得子记录的方法出现异常:" + e);
- e.printStackTrace();
- return null;
- } finally {
- if (rs != null && stmt != null && conn != null) {
- rs.close();
- stmt.close();
- conn.close();
- }
- }
- }
- }
posted on 2007-10-17 01:14
谭明 阅读(603)
评论(0) 编辑 收藏 所属分类:
AJAX