Ajax + JSON + Servlet + Oracle数据库实现省市县三级联动效果

web.xml

<servlet>
      <servlet-name>GetCity</servlet-name>
      <servlet-class>com.yyb.servlet.GetCity</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>GetCity</servlet-name>
      <url-pattern>/getCity</url-pattern>
  </servlet-mapping>

index.jsp

<%@page import="com.yyb.po.Region"%>
<%@page import="java.util.List"%>
<%@page import="com.yyb.dao.impl.ProvinceDaoImpl"%>
<%@page import="com.yyb.dao.ProvinceDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%
	ProvinceDao pdao=new ProvinceDaoImpl();
	List<Region> regions=pdao.findAllProvince();
	request.setAttribute("regions", regions);
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>省市县三级联动</title>
<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript">
	$(document).ready(function(){
		$("#province").change(function(){
			var provinceId=$("#province").val();
			$.ajax({
				type:"post",
				url:"getCity",
				data:"provinceId="+provinceId,
				success:function(msg){
					var city=JSON.parse(msg);
					if(city.resultCode==0){
						var provinceArry=city.rs;
		                $("#city").get(0).options.length=provinceArry.length+1;
		                $("#city").get(0).options[0]=new Option("请选择",0);
		                for(var i=0;i<provinceArry.length;i++){  
		                    $("#city").get(0).options[i+1]=new Option( provinceArry[i].region_name, provinceArry[i].region_id);
		                }
					}else{
						alert("未知错误!");
					}
				}
			});
		});
		$("#city").change(function(){
			var provinceId=$("#city").val();
			$.ajax({
				type:"post",
				url:"getCity",
				data:"provinceId="+provinceId,
				success:function(msg){
					var city=JSON.parse(msg);
					if(city.resultCode==0){
						var provinceArry=city.rs;
		                $("#county").get(0).options.length=provinceArry.length+1;
		                $("#county").get(0).options[0]=new Option("请选择",0);
		                for(var i=0;i<provinceArry.length;i++){  
		                    $("#county").get(0).options[i+1]=new Option( provinceArry[i].region_name, provinceArry[i].region_id);
		                }
					}else{
						alert("未知错误!");
					}
				}
			});
		});
	});
</script>
</head>
<body>
	请选择:
	<select id="province">
		<c:forEach items="${regions}" var="r">
			<option value="${r.region_id}">${r.region_name}</option>
		</c:forEach>
	</select>
	<select id="city"></select>
	<select id="county"></select>
</body>
</html>


DBUtil.java

package com.yyb.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {
	private static final String DRIVER = "oracle.jdbc.OracleDriver";
	private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
	private static final String USER = "scott";
	private static final String PASSWORD = "tiger";

	public static Connection getConnection() {
		Connection conn = null;
		try {
			Class.forName(DRIVER);
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	public static void close(ResultSet rs, Statement stmt, Connection conn) {
		if (rs != null) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (stmt != null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		System.out.println(DBUtil.getConnection());
	}

}

Region.java

package com.yyb.po;

public class Region {
	private int region_id; // 行政区划id
	private String region_code; // 行政区划代码
	private String region_name; // 行政区划名称
	private int parent_id; // 父行政区划
	private int region_level; // 层级
	private int region_order; // 排序,用来调整顺序
	private String region_name_en; // 行政区划英文名称
	private String region_shortname_en; // 行政区划简称

	public int getRegion_id() {
		return region_id;
	}

	public void setRegion_id(int region_id) {
		this.region_id = region_id;
	}

	public String getRegion_code() {
		return region_code;
	}

	public void setRegion_code(String region_code) {
		this.region_code = region_code;
	}

	public String getRegion_name() {
		return region_name;
	}

	public void setRegion_name(String region_name) {
		this.region_name = region_name;
	}

	public int getParent_id() {
		return parent_id;
	}

	public void setParent_id(int parent_id) {
		this.parent_id = parent_id;
	}

	public int getRegion_level() {
		return region_level;
	}

	public void setRegion_level(int region_level) {
		this.region_level = region_level;
	}

	public int getRegion_order() {
		return region_order;
	}

	public void setRegion_order(int region_order) {
		this.region_order = region_order;
	}

	public String getRegion_name_en() {
		return region_name_en;
	}

	public void setRegion_name_en(String region_name_en) {
		this.region_name_en = region_name_en;
	}

	public String getRegion_shortname_en() {
		return region_shortname_en;
	}

	public void setRegion_shortname_en(String region_shortname_en) {
		this.region_shortname_en = region_shortname_en;
	}

}

ProvinceDao.java

package com.yyb.dao;

import java.util.List;

import com.yyb.po.Region;

public interface ProvinceDao {
	public List<Region> findAllProvince();
	public List<Region> findByProvinceId(int provinceId);
}

ProvinceDaoImpl.java

package com.yyb.dao.impl;

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

import com.yyb.dao.ProvinceDao;
import com.yyb.po.Region;
import com.yyb.utils.DBUtil;

public class ProvinceDaoImpl implements ProvinceDao {

	@Override
	public List<Region> findAllProvince() {
		List<Region> regions = new ArrayList<Region>();
		String sql = "select * from region where parent_id=1";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			conn = DBUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Region r = new Region();
				r.setRegion_id(rs.getInt("region_id"));
				r.setRegion_code(rs.getString("region_code"));
				r.setRegion_name(rs.getString("region_name"));
				r.setParent_id(rs.getInt("parent_id"));
				r.setRegion_level(rs.getInt("region_level"));
				r.setRegion_order(rs.getInt("region_order"));
				r.setRegion_name_en(rs.getString("region_name_en"));
				r.setRegion_shortname_en(rs.getString("region_shortname_en"));
				regions.add(r);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil.close(rs, pstmt, conn);
		}
		return regions;
	}

	@Override
	public List<Region> findByProvinceId(int provinceId) {
		List<Region> regions = new ArrayList<Region>();
		String sql = "select * from region where parent_id="+provinceId;
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		try {
			conn = DBUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			while (rs.next()) {
				Region r = new Region();
				r.setRegion_id(rs.getInt("region_id"));
				r.setRegion_code(rs.getString("region_code"));
				r.setRegion_name(rs.getString("region_name"));
				r.setParent_id(rs.getInt("parent_id"));
				r.setRegion_level(rs.getInt("region_level"));
				r.setRegion_order(rs.getInt("region_order"));
				r.setRegion_name_en(rs.getString("region_name_en"));
				r.setRegion_shortname_en(rs.getString("region_shortname_en"));
				regions.add(r);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			DBUtil.close(rs, pstmt, conn);
		}
		return regions;
	}

}

GetCity.java

package com.yyb.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yyb.dao.ProvinceDao;
import com.yyb.dao.impl.ProvinceDaoImpl;
import com.yyb.po.Region;

import net.sf.json.JSONObject;

public class GetCity extends HttpServlet {

	private static final long serialVersionUID = 1L;

	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setCharacterEncoding("UTF-8");
		String provinceId = request.getParameter("provinceId");
		ProvinceDao dao = new ProvinceDaoImpl();
		int id = 0;
		if (provinceId != null && !"".equals(provinceId)) {
			id = Integer.parseInt(provinceId);
		}
		List<Region> regions = dao.findByProvinceId(id);
		JSONObject jobj = new JSONObject();
		if (regions != null && regions.size() > 0) {
			jobj.element("resultCode", 0);
			jobj.element("rs", regions);
		} else {
			jobj.element("resultCode", 1);
		}
		PrintWriter out = response.getWriter();
		out.write(jobj.toString());
		out.flush();
		out.close();
	}

}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值