Servlet 编写
从 service 获取返回的包含下拉框内容的 json 数据,发送到客户端。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @WebServlet("/provinceServlet") public class ProvinceServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ProvinceService service = new ProvinceServiceImpl(); String json = service.findAllJson();
System.out.println(json); response.setContentType("application/json;charset=utf-8"); response.getWriter().write(json);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
|
Service编写
findAll() 从 mysql 获取数据,findAllJson()从 redis 获取数据,当用户访问该页面时,先检查 redis 中是否包含需要的数据,如果有,并返回 json 格式数据,没有的话从 mysql 进行查询。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| public class ProvinceServiceImpl implements ProvinceService { private ProvinceDao dao = new ProvinceDaoImpl();
@Override public List<Province> findAll() { return dao.findAll(); }
@Override public String findAllJson() { Jedis jedis = JedisPoolUtils.getJedis(); String province_json = jedis.get("province");
if(province_json == null || province_json.length() == 0){ System.out.println("redis中没数据,查询数据库..."); List<Province> ps = dao.findAll(); ObjectMapper mapper = new ObjectMapper(); try { province_json = mapper.writeValueAsString(ps); } catch (JsonProcessingException e) { e.printStackTrace(); }
jedis.set("province",province_json); jedis.close();
}else{ System.out.println("redis中有数据,查询缓存..."); }
return province_json; } }
|
JQuery 编写
加载页面后,使用 ajax 异步请求方式发送请求,使用 CURUD 操作 append 方法将子元素 option 追加到父元素中,实现下拉框的加载。
1 2 3 4 5 6 7 8 9 10 11
| <script> $(function () { $.get("findProvinceServlet",{},function (data) { var province = $("#province"); $(data).each(function () { var option = "<option name='"+this.id+"'>"+this.name+"</option>" province.append(option); }) }) }) </script>
|
注:之后的增删改操作需要删除 redis 中对应数据并重新存储,在对应函数内增加方法即可。