190722-02(三级列表){MVC 框架模式/代码分层}

JavaBean + dao +Servlet + JSP 实现省市区的三级下拉列表

首先分别创建JavaBean的省、市、区对象的SetGet构造方法,

接着定义dao接口的实现类实现数据库的连接,

再通过servlet对数据库进行查询,

最后在JSP上布局网页实现交互功能。



bean. Province.java

public class Province {

private int id;

private String code;

private String name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Province() {

// TODO Auto-generated constructor stub

}

public Province(int id, String code, String name) {

super();

this.id = id;

this.code = code;

this.name = name;

}

}

bean.City.java

public class City {

private int id;

private String code;

private String name;

private String provinceCode;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getProvinceCode() {

return provinceCode;

}

public void setProvinceCode(String provinceCode) {

this.provinceCode = provinceCode;

}

public City() {

// TODO Auto-generated constructor stub

}

public City(int id, String code, String name, String provinceCode) {

super();

this.id = id;

this.code = code;

this.name = name;

this.provinceCode = provinceCode;

}

}

bean.Town.java

public class Town {

private int id;

private String code;

private String name;

private String cityCode;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getCityCode() {

return cityCode;

}

public void setCityCode(String cityCode) {

this.cityCode = cityCode;

}

public Town() {

// TODO Auto-generated constructor stub

}

public Town(int id, String code, String name, String cityCode) {

super();

this.id = id;

this.code = code;

this.name = name;

this.cityCode = cityCode;

}

}

dao.AddressDao.java(interface)

public List<Province> getAllProvinceList();

※定义接口(规范)让其实现类实现规定的方法

dao.impl.AddressDaoImpl.java(implements AddressDao)

@Override

public List<Province> getAllProvinceList() {

// 查询数据库

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List<Province> pList = new ArrayList<>();

try {

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://127.0.0.1:3306/java0520";

String user = "root";

String password = "1234";

conn = DriverManager.getConnection(url, user, password);

ps = conn.prepareStatement("select * from t_address_province");

rs = ps.executeQuery();

while (rs.next()) {

int id = rs.getInt("id");

String code = rs.getString("code");

String name = rs.getString("name");

Province province = new Province(id, code, name);

pList.add(province);

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

}

return pList;

}

}

servlet.GetProvince.java

@WebServlet("/getprovince")

public class GetProvince extends HttpServlet {

private static final long serialVersionUID = 1L;

private AddressDao addressDao = new AddressDaoImpl();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");     //设置字符集

List<Province> pList = addressDao.getAllProvinceList();

String jsonString = JSON.toJSONString(pList);      //将pList转换成json格式的字符串

PrintWriter out = response.getWriter();     //将字符串放入流中

out.write(jsonString);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

servlet.GetCity.java

@WebServlet("/getcity")

public class GetCity extends HttpServlet {

private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

String pcode = request.getParameter("pcode");

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List<City> cList = new ArrayList<>();

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java0520", "root", "1234");

ps = conn.prepareStatement("select * from t_address_city where provinceCode = ?");

ps.setString(1, pcode);

rs = ps.executeQuery();

while (rs.next()) {

int id = rs.getInt("id");

String code = rs.getString("code");

String name = rs.getString("name");

String provinceCode = rs.getString("provinceCode");

City city = new City(id,code,name,provinceCode);

cList.add(city);

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

}

String jsonString = JSON.toJSONString(cList);

PrintWriter out = response.getWriter();

out.write(jsonString);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

servlet.GetTown.java

@WebServlet("/gettown")

public class GetTown extends HttpServlet {

private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

String ccode = request.getParameter("ccode");

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

List<Town> tList = new ArrayList<>();

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/java0520", "root", "1234");

ps = conn.prepareStatement("select * from t_address_town where cityCode = ?");

ps.setString(1, ccode);

rs = ps.executeQuery();

while (rs.next()) {

int id = rs.getInt("id");

String code = rs.getString("code");

String name = rs.getString("name");

String cityCode = rs.getString("cityCode");

Town town = new Town(id, code, name, cityCode);

tList.add(town);

}

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} finally {

}

String jsonString = JSON.toJSONString(tList);

PrintWriter out = response.getWriter();

out.write(jsonString);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

view/3level.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<!--

1.当页面加载完成时,加载到第一下拉列表框

    从该页面发起请求,请求服务器,服务器中的servlet通过jdbc查询sql,将数据返回

2.当从第一个下拉列表中选择一个省时,加载到第二下拉列表框

3.当从第二个下拉列表中选中一个市时,加载到第三下拉列表框

-->

<!-- ajax只能通过流返回数据,servlet可任意方式返回数据 -->

<select id="pid" onchange="getCity(this.value)">

<option>--请选择--</option>

</select>

<select id="cid" onchange="getTown(this.value)">

<option>--请选择--</option>

</select>

<select id="tid">

<option>--请选择--</option>

</select>

<script src="js/jquery.min.js"></script>

<script type="text/javascript">

$(function(){

getProvince();

getCity();

getTown();

})

function getProvince(){

$.ajax({

"url":"getprovince",

"type":"get",

"success":function(data){

var ProvinceArray = JSON.parse(data);

for(var i = 0 ; i < ProvinceArray.length ; i++){

$("#pid").append("<option value='"+ProvinceArray[i].code+"'>"+ProvinceArray[i].name+"</option>");

}

}

})

}

function getCity(provinceCode){

$.ajax({

"url":"getcity",

"type":"get",

"data":{ "pcode" : provinceCode },

"success":function(data){

var CityArray = JSON.parse(data);

$("#cid").html("<option>--请选择--</option>");

$("#tid").html("<option>--请选择--</option>");

for(var i = 0 ; i < CityArray.length ; i++){

$("#cid").append("<option value='"+CityArray[i].code+"'>"+CityArray[i].name+"</option>");

}

}

})

}

function getTown(cityCode){

$.ajax({

"url":"gettown",

"type":"get",

"data":{ "ccode" : cityCode },

"success":function(data){

var TownArray = JSON.parse(data);

$("#tid").html("<option>--请选择--</option>");

for(var i = 0 ; i < TownArray.length ; i++){

$("#tid").append("<option value='"+TownArray[i].code+"'>"+TownArray[i].name+"</option>");

}

}

})

}

</script>

</body>

</html>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容