jdbc+servlet+ajax开发省市区三级联动

技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动

特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等

宗旨:从实战中学习

博客讲解是按照两级联动,但下载的资源是三级联动含sql文件。

效果图:

首页核心代码:

  1. <%
  2. List<HashMap<String,Object>> maps = ConnectionUtil.findProvinces();
  3. pageContext.setAttribute("provinces", maps);
  4. %>
  5. <fieldset>
  6. <legend>省市区三级联动</legend>
  7. 省份:
  8. <select id="province" onchange="select_citys(this)">
  9. <option value="">-请选择-</option>
  10. <!-- 循环显示所有省份 -->
  11. <c:forEach var="pv" items="${provinces}">
  12. <option value="${pv.id}">${pv.name}</option>
  13. </c:forEach>
  14. </select>
  15. 城市:
  16. <select id="city" onchange="select_areas(this)">
  17. <option value="">-请选择-</option>
  18. </select>
  19. 区域:
  20. <select id="area">
  21. <option value="">-请选择-</option>
  22. </select>
  23. </fieldset>

ajax代码:

  1. function select_citys(obj){
  2. var provinceId = $(obj).val();
  3. if(!provinceId)return; // 声明变量就要判断是否为null
  4. $.ajax({
  5. type:"post",//请求方式get/post
  6. url:"${ctx}/CityServlet",//请求对应的地址
  7. data:{"provinceId":provinceId},//往服务器传递的参数,
  8. success:function(data){//服务器交互成功调用的回调函数,data就是服务器端传递出来的数据
  9. var jdata = data.trim(); // 去前后空格
  10. if(jdata=="fail"){
  11. alert("查询失败!");
  12. }else{
  13. var jsonData = eval(jdata);//将字符串的json对象转换成json
  14. $("#area").html("<option>-请选择-</option>");
  15. append_template(jsonData,"city");
  16. }
  17. }
  18. });
  19. };
  20. 后台处理核心代码:

    1. protected void doPost(HttpServletRequest request,
    2. HttpServletResponse response) throws ServletException, IOException {
    3. PrintWriter out=response.getWriter();
    4. // 获取ajax请求发送过来的省份id参数
    5. String pid = request.getParameter("provinceId");
    6. if (pid != null && !pid.equals("")) {// 有变量就要进行空判断
    7. int provinceId = Integer.parseInt(pid);// 因为前端都是传String;所以要转换
    8. List<HashMap<String, Object>> citys = ConnectionUtil
    9. .findCitys(provinceId);
    10. try {
    11. // 将集合对象转换成json格式---List---JsonArr字符串[{},{},{}]
    12. out.print(JSONUtil.serialize(citys));
    13. } catch (JSONException e) {
    14. e.printStackTrace();
    15. }
    16. } else {
    17. // 查询失败
    18. out.print("fail");
    19. }
    20. }
    21. 数据库操作:

      1. package com.ajax.connection;
      2. import java.sql.Connection;
      3. import java.sql.DriverManager;
      4. import java.sql.PreparedStatement;
      5. import java.sql.ResultSet;
      6. import java.sql.SQLException;
      7. import java.sql.Statement;
      8. import java.util.ArrayList;
      9. import java.util.HashMap;
      10. import java.util.List;
      11. /**
      12. * 数据库链接,查询类
      13. * 对jdbc操作数据库不懂的可以参考:http://blog.csdn.net/qq_19558705/article/details/49947317
      14. * 以下内容就不做过多的注释了
      15. * 实际业务会采用连接池的方式,这只做学习使用
      16. * @author Administrator
      17. *
      18. */
      19. public class ConnectionUtil {
      20. private static String url = "jdbc:mysql:///test";
      21. private static String username = "root";
      22. private static String password = "root";
      23. public static Connection getConnection(){
      24. Connection connection = null;
      25. try{
      26. Class.forName("com.mysql.jdbc.Driver");
      27. connection = DriverManager.getConnection(url,username,password);
      28. return connection;
      29. }catch(Exception ex){
      30. return null;
      31. }
      32. }
      33. public static List<HashMap<String, Object>> findProvinces(){
      34. Connection connection = null;
      35. Statement statement = null;
      36. ResultSet rs = null;
      37. List<HashMap<String, Object>> maps = null;
      38. try{
      39. String sql = "SELECT id,name FROM tm_province order by sort asc";
      40. connection = getConnection();
      41. statement = connection.createStatement();
      42. rs = statement.executeQuery(sql);
      43. maps = new ArrayList<HashMap<String,Object>>();
      44. HashMap<String, Object> map = null;
      45. while(rs.next()){
      46. map = new HashMap<String, Object>();
      47. map.put("id", rs.getInt("id"));
      48. map.put("name", rs.getString("name"));
      49. maps.add(map);
      50. }
      51. return maps;
      52. }catch(SQLException sql){
      53. sql.printStackTrace();
      54. return null;
      55. }finally{
      56. try{
      57. if(rs!=null)rs.close();
      58. if(statement!=null)statement.close();
      59. if(connection!=null)connection.close();
      60. }catch(SQLException sql){
      61. sql.printStackTrace();
      62. }
      63. }
      64. }
      65. //后面内容省略,可以免费下载资源
      66. }

      字符拦截器:

      1. package com.ajax.filter;
      2. import java.io.IOException;
      3. import javax.servlet.Filter;
      4. import javax.servlet.FilterChain;
      5. import javax.servlet.FilterConfig;
      6. import javax.servlet.ServletException;
      7. import javax.servlet.ServletRequest;
      8. import javax.servlet.ServletResponse;
      9. import javax.servlet.http.HttpServletRequest;
      10. import javax.servlet.http.HttpServletResponse;
      11. /**
      12. * 如果不清楚字符拦截器可以参考:http://blog.csdn.net/qq_19558705/article/details/49962153
      13. * @author Administrator
      14. *
      15. */
      16. public class CharacterFilter implements Filter {
      17. private FilterConfig config;
      18. public void doFilter(ServletRequest req, ServletResponse resp,
      19. FilterChain chain) throws IOException, ServletException {
      20. HttpServletRequest request = (HttpServletRequest) req;
      21. HttpServletResponse response = (HttpServletResponse) resp;
      22. // 从web.xml文件中获取encoding对应的init-param中的param-value
      23. String encoding = config.getInitParameter("encoding");
      24. // 只要定义了变量;就要判断是否为空;不然会报空指针异常
      25. if (encoding != null) {
      26. // 指明内容请求格式的字符编码集
      27. response.setContentType("text/html ;charset=" + encoding);
      28. // 请求时规范字符编码格式
      29. request.setCharacterEncoding(encoding);
      30. // 指明输出的格式字符编码集
      31. response.setCharacterEncoding(encoding);
      32. }
      33. // 进入下一个拦截器
      34. chain.doFilter(request, response);
      35. }
      36. // FilterConfig 是拦截器的全局变量
      37. public void init(FilterConfig config) throws ServletException {
      38. this.config = config;
      39. }
      40. public void destroy() {
      41. }
      42. }

ajax省市区三级联动的更多相关文章

  1. JQ与AJAX 省市区三级联动下拉框

    用于初学者学习基本的联动下拉框,废话不多说,见代码 首先看控制器里的3个下拉框对应代码: public ActionResult GetProvinceList() { ProvinceReposit ...

  2. 基于ThinkPHP+AJAX的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  3. Ajax来实现下拉框省市区三级联动效果(服务端基于express)

    //服务端JS代码: //提供服务端的处理 const express = require('express'); const fs = require('fs'); const app = expr ...

  4. 使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能

    使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能 要求:写一个省市区(或者年月日)的三级联动,实现地区或时间的下拉选择. 实现技术:php ajax 实现:省级下拉变化时市下拉区下 ...

  5. 基于thinkphp和ajax的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  6. 第117天:Ajax实现省市区三级联动

    Ajax实现省市区三级联动 思路: (1)首先获取省份信息 (2)发起Ajax请求,注意dataType中的T大写 (3)封装回调函数,回调函数success中用$.each循环每一条数据,动态创建o ...

  7. JS省市区三级联动

    不需要访问后台服务器端,不使用Ajax,无刷新,纯JS实现的省市区三级联动. 当省市区数据变动是只需调正js即可. 使用方法: <!DOCTYPE html><html>< ...

  8. 省市区三级联动(二)JS部分简单版

    通过对上一篇<省市区三级联动>的学习发现JScript部分省市区的填充代码几乎相同,所以可以写成一个函数. 注意:html部分和chuli.php部分不变 1.下拉列表填充可以写成带参数的 ...

  9. ajax 实现三级联动

    ajax 实现三级联动,相当于写了一个小插件,用的时候直接拿过来用就可以了,这里我用了数据库中的chinastates表, 数据库内容很多,三级联动里的地区名称都在里面,采用的是代号副代号的方式 比如 ...

随机推荐

  1. HEVC学习之二CTU, CU, CTB, CB, PB, TB

    在H264标准中,编码层的核心是宏块,一个宏块大小为16X16,包含一个16X16的亮度块,以及对于常用的4:2:0采样格式来说还包含两个8X8的色度块.相对应的在HEVC中类似的结构为编码树单元(C ...

  2. 【JAVA】【Eclipse】出现This element neither has attached source nor attached Javadoc...的解决方法

    This element neither has attached source nor attached Javadoc and hence no Javadoc could be found Ec ...

  3. redis高可用分布式集群

    一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...

  4. java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f303192 rejected from java.util.concurrent.ThreadPoolExecutor@11f7cc04[Terminated, pool size = 0, active threads

    java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1f303192 rejec ...

  5. 【zZ】OpenCV HOGDescriptor 参数图解

    http://blog.csdn.net/raodotcong/article/details/6239431

  6. iframe跨域cookie问题

    今天在项目里面遇到了iframe跨域不能写cookie的问题.应用场景是这样的:有A和B两个业务,A要通过iframe的方式嵌入B,但是在ie下A不能通过写cookie的方式记录信息,在firefox ...

  7. NIO 连接

    http://www.iteye.com/magazines/132-Java-NIO

  8. 查找jsp页面报错技巧

    在报错跳转页面打印错误信息<div>系统执行发生错误,信息描述如下:</div> <div>错误状态代码是:${pageContext.errorData.stat ...

  9. Linux Shell ---系统命令(1)

    date命令 功能说明:显示或设置系统时间与日期. 语 法: date [-d <字符串>][-u][+%H%I%K%l%M%P%r%s%S%T%X%Z%a%A%b%B%c%d%D%j%m ...

  10. HTTP权威指南笔记-2.URL与资源

    2.1 URI与URL.URN URL是浏览器寻找信息时所需的具体位置.URl是人们对HTTP和其他协议的常用访问点:浏览器指向一个URL,浏览器就会发送适当的协议报文向服务器获取内容. URI是一类 ...