需求:省市县首先只展示出来省,用户选择省份后,出现对应的市,选择城市后,展示对应的县/区
分析:
1.界面上首先展示出省,可以用监听器初始化数据就获得对应的省份
2.点击省份获得市对应的可以用异步传输即ajax
3.只有当用户选择才会将数据传回后端调用数据,否则不发出申请
初始化数据:InitializeListener
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import com.oracle.pojo.Provinces;
import com.oracle.service.ProvincesService;
import jdk.nashorn.internal.ir.RuntimeNode.Request;
@WebListener
public class InitializeListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext servletContext = sce.getServletContext();
servletContext.setAttribute("root",servletContext.getContextPath());
servletContext.setAttribute("js",servletContext.getContextPath()+"/js");
//调用所有的
ProvincesService ps=new ProvincesService();
List proList = ps.findAllProvinces();
//数据保存在servletContext中
servletContext.setAttribute("proList",proList);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
index.jsp界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
三级联动
AddressCityServlet.java
@WebServlet(urlPatterns="/address")
public class AddressServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获得前端页面的provinceid
String provinceid = req.getParameter("provinceid");
//调用方法
CitiesService cs=new CitiesService();
List citiesList = cs.findCitiesByProvinceid(provinceid);
System.out.println("citiesList"+citiesList);
JSonArray jsonArray=JSONArray.fromObject(citiesList);
resp.setCharacterEncoding("utf-8");
PrintWriter out=resp.getWriter();
out.print(jsonArray);
out.flush();
out.close();
}
AddressCityServlet.java
@WebServlet(urlPatterns="/addressCity")
public class AddressCityServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获得城市Id
String cityid = req.getParameter("cityid");
//调用方法
AreasService as=new AreasService();
List areaList = as.findAreaAllBycityid(cityid);
System.out.println("areaList"+areaList);
JSonArray jsonArray = JSONArray.fromObject(areaList);
//以响应的形式传递给前端页面
PrintWriter out = resp.getWriter();
out.println( jsonArray );
out.flush();
out.close();
}
}
service层和mapper层代码就不写啦,是很常见的方法,希望会有所帮助,如果发现错误的地方欢迎指出



