省市县三级级联(模块化开发)
不废话,上代码:
先看一下项目列表:
tool包里的代码:
请看:tool包
vo.Area类:
package com.jd.vo;public class Area {private String id;private String name;private String code;private String parentCode;public Area(String id, String name, String code, String parentCode) {this.id = id;this.name = name;this.code = code;this.parentCode = parentCode;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getParentCode() {return parentCode;}public void setParentCode(String parentCode) {this.parentCode = parentCode;}@Overridepublic String toString() {return "Area [id=" + id + ", name=" + name + ", code=" + code + ", parentCode=" + parentCode + "]";}
}
imp中的接口:
IAreaService接口:
package com.jd.area.imp;import java.util.List;import com.jd.vo.Area;public interface IAreaService {List<Area> select(String parentCode);
}
IAreaDao接口:
package com.jd.area.imp;import java.util.List;import com.jd.vo.Area;public interface IAreaDao {List<Area> select(String parentCode);
}
service包:
AreaService类:
package com.jd.area.service;import java.util.List;import com.jd.area.dao.AreaDao;
import com.jd.area.imp.IAreaDao;
import com.jd.area.imp.IAreaService;
import com.jd.vo.Area;public class AreaService implements IAreaService {private IAreaDao areaDao = new AreaDao();public List<Area> select(String parentCode) {if(parentCode==null) {parentCode = "";}return areaDao.select(parentCode);}}
dao包:
AreaDao类:
package com.jd.area.dao;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.jd.area.imp.IAreaDao;
import com.jd.tool.db.DBLink;
import com.jd.tool.db.IRowMapper;
import com.jd.vo.Area;public class AreaDao implements IAreaDao {public List<Area> select(String parentCode) {String sql = "select * from area where parent_code = '"+parentCode+"'";final List<Area> LIST = new ArrayList<Area>();new DBLink().select(sql, (new IRowMapper() {public void rowMapper(ResultSet rs) {try {while(rs.next()) {String id = rs.getString("id");String name = rs.getString("name");String code = rs.getString("code");String parentCode = rs.getString("parent_code");LIST.add(new Area(id,name,code,parentCode));}} catch (SQLException e) {e.printStackTrace();}}} ));return LIST;}}
servlet:
CascadeServlet:
package com.jd.area.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.google.gson.Gson;
import com.jd.area.imp.IAreaService;
import com.jd.area.service.AreaService;public class CascadeServlet extends HttpServlet {private static final long serialVersionUID = 1L;private IAreaService areaService = new AreaService();protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String parentCode = request.getParameter("parentCode");response.setContentType("text/plain; charset=UTF-8");//调用service层//jsonString json = new Gson().toJson(areaService.select(parentCode));//生成json字符串//响应页面PrintWriter out = response.getWriter();out.write(json);out.flush();out.close();}}
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html>
<html><head><title>Insert title here</title><script type="text/javascript" src="./js/jquery-1.8.3.min.js"></script><script type="text/javascript" src="./js/json2.js"></script><script type="text/javascript">//省$(function(){var parentCode = "";var obj = {url: "./CascadeServlet?parentCode="+parentCode ,dataType: "text",//用于设置服务器响应回来的数据的类型success:function(data){//只有状态码(status)是200时才走data = JSON.parse(data);//将一个json字符串转换成一个JavaScript对象var options = "<option value=''>--请选择--</option>";for(var i = 0; i < data.length; i++){var province = data[i];options = options + "<option value='"+province.code+"'>"+province.name+"</option>";}$("#province").empty();$("#province").append(options);}};$.ajax(obj);});//市function changeCity(){var parentCode = $("#province").val();if(parentCode==""){$("#city").empty();$("#city").append("<option value=''>--请选择--</option>");$("#county").empty();$("#county").append("<option value=''>--请选择--</option>");return;}var obj = {url: "./CascadeServlet?parentCode="+parentCode,dataType: "text",//用于设置服务器响应回来的数据的类型success:function(data){//只有状态码(status)是200时才走data = JSON.parse(data);//将一个json字符串转换成一个JavaScript对象var options = "<option value=''>--请选择--</option>";for(var i = 0; i < data.length; i++){var city = data[i];options = options + "<option value='"+city.code+"'>"+city.name+"</option>";}$("#county").empty();$("#county").append("<option value=''>--请选择--</option>");$("#city").empty();$("#city").append(options);}};$.ajax(obj);}//县区function changeCounty(){var parentCode = $("#city").val();if(parentCode==""){$("#county").empty();$("#county").append("<option value=''>--请选择--</option>");return;}var obj = {url: "./CascadeServlet?parentCode="+parentCode,dataType: "text",//用于设置服务器响应回来的数据的类型success:function(data){//只有状态码(status)是200时才走data = JSON.parse(data);//将一个json字符串转换成一个JavaScript对象var options = "<option value=''>--请选择--</option>";for(var i = 0; i < data.length; i++){var county = data[i];options = options + "<option value='"+county.code+"'>"+county.name+"</option>";}$("#county").empty();$("#county").append(options);}};$.ajax(obj);}</script></head><body><select id="province" onchange="changeCity()"><option value="">--请选择--</option></select><select id="city" onchange="changeCounty()"><option value="">--请选择--</option></select><select id="county"><option value="">--请选择--</option></select></body>
</html>
相关文章:
IOS - 设置与帮助界面
设置与帮助 改动头像, 改动password, 移动客服, 帮助, 声明, 关于我们. 代码 // // IndexSetting600ViewController.h // SymptomChecker // // Created by wang on 2015-7-21. // //#import "CYTableViewController.h"interface IndexSetting600ViewController …

CentOS虚拟机和物理机共享文件夹实现
CentOS虚拟机和物理机共享文件夹实现过程。 一、 安装VMware Tools VMwareTools的安装脚本是要使用到perl的,而CentOS 6自身不带perl,所以需要自己安装。可以自己下载源代码编译,也可以直接用yum来安装。 yum install perl 2、虚拟机工具栏-…

[讨论]你的女朋友值多少钱?
你的女朋友值多少钱?一个简单的测试可能会告诉我们很多的东西。 女主持人气势咄咄的问一个男嘉宾,你为什么那么在乎钱,男嘉宾说:“钱能买到一切!” 现场的观众哗然了。 男嘉宾微笑的说:“我们做个测试吧。” 一个很简单…

庆祝天津.Net俱乐部成立,辛苦TerryLee了,感谢dudu!
终于等来了天津.Net俱乐部的成立,欢迎天津热心.Net的人士申请加入! 转载于:https://www.cnblogs.com/anchky/archive/2006/03/21/354946.html

软件工程专业1
任何软件系统开发的共同本质: – 从现实空间的需求到计算机空间的软件代码之间的映射与转换; 软件工程本质: 用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量”。 软件工程的两个映射: 概念映射&#…

动态网页项目(Dynamic Web Project)2.5和3.0版本的差异
我们知道在2.5版本中都有web.xml,用来配置servlet: 但3.0版本却没有web.xml,那该怎么配置servlet呢? 解决的方法就是使用注解: 而且在注解中配置servlet非常方便! 那如果想在3.0中也使用web.xml该怎么办…

New LINQ CTP!
FYI, we just released an updated community preview of our LINQ support for both VB and C#, entitled “Microsoft Visual Studio Code Name “Orcas” Language-Integrated Query, May 2006 Community Technology Preview.” Or you could just call it “the May CTP.”…

mybatis的一些基础问题
拿实体类中的属性 userPhone 来说: mapper 文件 转载于:https://www.cnblogs.com/py1994/p/7097808.html

(zt)Web 2.0奔路进行时
Web 2.0奔路进行时作者 黄昆Web2.0不是独立存在的,在2006年将会全面融入互联网,这种融入并不意味着Web2.0以及Web2.0所代表的创新浪潮的消退,反而将以这种充满活力的创新方式引发互联网产业格局的巨大变革。Web2.0,在奔跑。发展到…

each(callback)与each(object[,callback])的区别
each(callback)与each(object[,callback])的区别: 1. 调用对象不同,前者必须使用jQuery对象调用;后者只能使用$调用; 2. 遍历对象不同:前者遍历的是jQuery对象;后者还可以遍历数组等非jQuery对象。我们来看…

Microsoft .Net Remoting系列专题之二:Marshal、Disconnect与生命周期以及跟踪服务
Microsoft .Net Remoting系列专题之二 一、远程对象的激活 在Remoting中有三种激活方式,一般的实现是通过RemotingServices类的静态方法来完成。工作过程事实上是将该远程对象注册到通道中。由于Remoting没有提供与之对应的Unregister方法来注销远程对象࿰…

luogu P2759 奇怪的函数 二分答案+数论
题目描述 使得 x^x 达到或超过 n 位数字的最小正整数 x 是多少? 输入输出格式 输入格式: 一个正整数 n 输出格式: 使得 x^x 达到 n 位数字的最小正整数 x 输入输出样例 输入样例#1:11 输出样例#1:10 说明 n<2000000…

前端性能毫秒必争方案(一)HTTP请求
在讲http知识之前,有必要提及下网络七层协议OSI(Open System Interconnect)的缩写 犹如水浒里面的七星聚义,没这七星,就没有108将。(已经放置文章最后面) 2. 减少http请求次数原因在于 1、Http连接 RequestHeader 的开销 众所周知,…

CodeSmith应用(一)
这个例子仅是一个简单的应用,在我翻译并学习完CodeSmith的英文帮助文档后,对CodeSmith有了一定的了解,开始着手编写一些CodeSmith应用模板,今天按照最早提到的例子自行编写了一个基于表的添加存储过程的生成模板。具体语法前面基础…

01_创建一个新的activityactivity配置清单文件
今天开始学四大组件。今天是学Activity,然后是广播接收者,然后是服务,然后是内容提供者。四大组件,咱们一天一个。Activity就是跟用户交互的界面,大部分的应用都不会只有这么一个界面。创建多个Activity,在…

Java 集合——List集合
Collection接口是集合的老祖宗,定义了接口的基本方法。 List是Collection接口的子接口,也是最常用的接口,此接口对Collection接口进行了大量的扩展,List集合里的元素是可以重复的。 List接口的主要实现类有ArrayList,和…

jQuery中的插件机制
我们在很多地方都用过插件,插件能让我们操作某个东西变得异常方便,jQuery也不例外,为了扩展jQuery库函数,jQuery提供了两种方式: jQuery.extend(object):扩展jQuery对象本身,主要是用来扩展jQu…

ActiveRecordBase借助NHibernate的条件获取实体类对象
ActiveRecordBase.FindAll() 函数其中有一个这样的版本的参数ActiveRecordBase.FindAll(TargetType AsSystem.Type,Orders() AsNHibernate.Expression.Order,ParamArraycriterias() AsNHibernate.Expression.ICriteriion) 可以方便的使用NHibernate的条件查询,例如…

轻量级持久层V2版本代码与模板
首页列表上好像不能下载,要下载文件请进来下。 上篇帖《轻量级持久层的讨论》中大家踊跃的提出各种意见,让我得到不少灵感,这些新的想法将会应用到下一个版本的开发中,我先得试试可行性如何。这里先给出这一版本的代码和模板&…

最近用到的一些方法技巧
郁闷,msn上不去,没法干活。记上最近项目中用到的一些code snippet1.查询今天的记录select datediff(dd,ConvDateTime,getdate()),* from dbo.rbConversationMaster where datediff(dd,ConvDateTime,getdate())0 DataDiff Returns the number of date and…

MyBatis的使用
要了解MyBatis的使用,首先要了解MyBatis是因何而来的?为了和数据库进行交互,通常的做法是将SQL语句写在Java代码里,然后生成class文件,而我们知道class文件是无法修改的。假如后来我们只想改变一下SQL语句,…
iOS7系统iLEX RAT冬青鼠安装教程:无需刷机还原纯净越狱系统
全网科技 温馨提醒:iLEX RAT和Semi-Restore的作用都是让你的已越狱的设备恢复至越狱的初始状态。可是要注意无论你是用iLexRAT冬青鼠还是Semi-restore。对于还原来说都存在巨大的风险。非必要情况下,还是不要任意使用它们。*iLEX RAT冬青鼠安装教程&…

HDU 4832(DP+计数问题)
HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行。竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include <string.h> #include <iostream> using namespace std;typedef long…

社会生活中常用的14条著名法则
一、 马太效应 八、 水桶定律 二、 手表定理 九、 蘑菇管理三、 不值得定律 十、 奥卡姆剃刀定律四、 彼得原理 十一、 二八定律五、 零和游戏原理 十二、 钱的问题六、 华盛顿合作…

Spring框架之(无参、有参)构造方法与setter方法的初始化
我们之前要创建对象时,都需要new一下,但使用了Spring后,就不需要再new了,可以直接使用类名调用了。这是因为Spring 已经为我们自动创建好了Java对象(但需要在xml文件里进行一些配置)。 举个例子看看吧&…

P1034 矩形覆盖
题目描述 在平面上有 n 个点(n < 50),每个点用一对整数坐标表示。例如:当 n=4 时,4个点的坐标分另为:p1(1,1),p2(2,2&a…

[linux][c语言]用socket实现简单的服务器客户端交互
Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP…

Spring之注解方式实例化Java类
我们知道一个<bean></bean>就代表一个对象,如果想创建多个对象,就要使用多个<bean></bean>,所以这里有个简便的方法: <context:component-scan base-package"com.jd"></context:comp…

3.Linux Shell流程控制
1.if/else结构 if condition thenstatements elif condition thenstatements elsestatements fi 2.条件 与C语言不同的是,条件(condition)实际上是语句列表,而不是一般的布尔表达式。 按照惯例,函数以及命令的退出状态用0表示成功,…

ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型
ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利。然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage 不能支持设计时界面,以及下面要提到的Content Page 中增加 CSS 的问…