1.在web包下面的servlet包里面写一个ProvinceServlet

package com.zzq.web.servlet;import com.fasterxml.jackson.databind.ObjectMapper;
import com.zzq.domain.Province;
import com.zzq.service.ProvinceServiceImpl;
import com.zzq.service.impl.ProvinceService;import java.io.IOException;
import java.util.List;@javax.servlet.annotation.WebServlet("/provinceServlet")
public class ProvinceServlet extends javax.servlet.http.HttpServlet {@Overrideprotected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {//1.调用service查询ProvinceService service = new ProvinceServiceImpl();List<Province> list = service.findAll();//2.序列化list为jsonObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(list);//3.响应结果response.setContentType("application/json;charset=utf-8");response.getWriter().write(json);}@Overrideprotected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {this.doPost(request, response);}
}

至此,服务器所以代码写完了
2. 在web包下写一个index.html页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/jquery-3.3.1.min.js"></script><script>$(function () {//发送ajax请求,加载所有省份数据$.get("provinceServlet",{},function (data) {//[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"广州"},{"id":4,"name":"陕西"}]//1.获取selectvar province = $("#province");//2.遍历json数组$(data).each(function () {//3.创建<option>var option = "<option name='"+this.id+"'>"+this.name+"</option>";//4.调用select的append追加optionprovince.append(option);});});});</script></head>
<body><select id="province"><option>--请选择省份--</option>
</select>
</body>
</html>

效果如下

改造:加入Redis

1.我们直接把json数据存入Redis,在接口类加入方法

public String findAllJson();


2. 在实现类中实现方法

package com.zzq.service;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zzq.dao.ProvinceDaoImpl;
import com.zzq.dao.impl.ProvinceDao;
import com.zzq.domain.Province;
import com.zzq.service.impl.ProvinceService;
import com.zzq.util.JedisPoolUtils;
import redis.clients.jedis.Jedis;import java.util.List;/*** ProvinceService的实现类*/
public class ProvinceServiceImpl implements ProvinceService {//声明Daoprivate ProvinceDao provinceDao = new ProvinceDaoImpl();@Overridepublic List<Province> findAll() {return provinceDao.findAll();}/*使用redis缓存*/@Overridepublic String findAllJson() {//1.获取redis客户端连接Jedis jedis = JedisPoolUtils.getJedis();//2.查询数据String province_json = jedis.get("province");//3.判断 province_json 数据是否为nullif (province_json == null || province_json.length() == 0) {//redis中没有数据System.out.println("redis中没数据,查询数据库...");//从数据库中查询List<Province> list = provinceDao.findAll();//将list序列化为jsonObjectMapper mapper = new ObjectMapper();try {province_json = mapper.writeValueAsString(list);} catch (JsonProcessingException e) {e.printStackTrace();}//将json数据存入redisjedis.set("province", province_json);//归还连接jedis.close();} else {System.out.println("redis中有数据,查询缓存...");}return province_json;}
}

3.简化一下servlet,因为servlet不用处理json了

package com.zzq.web.servlet;import com.zzq.service.ProvinceServiceImpl;
import com.zzq.service.impl.ProvinceService;import java.io.IOException;@javax.servlet.annotation.WebServlet("/provinceServlet")
public class ProvinceServlet extends javax.servlet.http.HttpServlet {@Overrideprotected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {//1.调用service查询ProvinceService service = new ProvinceServiceImpl();String json = service.findAllJson();//2.响应结果response.setContentType("application/json;charset=utf-8");response.getWriter().write(json);}@Overrideprotected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {this.doPost(request, response);}
}

最终效果

Redis之案例:省份列表(下)相关推荐

  1. Redis简单案例(二) 网站最近的访问用户

    原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...

  2. Redis简单案例(四) Session的管理

    Redis简单案例(四) Session的管理 原文:Redis简单案例(四) Session的管理 负载均衡,这应该是一个永恒的话题,也是一个十分重要的话题.毕竟当网站成长到一定程度,访问量自然也是 ...

  3. 使用redis实现缓存_用下一个js实现一个简单的redis缓存

    使用redis实现缓存 For most websites, the changing pieces don't actually vary that often. That immutability ...

  4. css实现列表下拉菜单_逐行:点击打开下拉列表和菜单的高级CSS技巧

    css实现列表下拉菜单 by David Piepgrass 由David Piepgrass 逐行:点击打开下拉列表和菜单的高级CSS技巧 (Line-by-line: advanced CSS t ...

  5. 「Redis数据结构」压缩列表(ZipList)

    「Redis数据结构」压缩列表(ZipList) 文章目录 「Redis数据结构」压缩列表(ZipList) 一.概述 二.结构 三.连锁更新问题 四.压缩列表的缺陷 五.小结 参考 ZipList ...

  6. Redis故障案例(一)-特定key批量丢失

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78591111 作者:RogerZhuo 来源:DBA ...

  7. Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版

    Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...

  8. Redis第一集:Windows下安装Redis和测试

    Redis第一集:Windows下安装Redis和测试 一.资源 Windows下的Redis的下载地址 点击这里即可下载,如果进不去GitHub的话,可以上网搜一下怎么进GitHub,搭个梯子(●ˇ ...

  9. Redis简单案例(三) 连续登陆活动的简单实现

    原文:Redis简单案例(三) 连续登陆活动的简单实现 连续登陆活动,或许大家都不会陌生,简单理解就是用户连续登陆了多少天之后,系统就会送一些礼品给相应的用户.最常见的 莫过于游戏和商城这些.游戏就送 ...

  10. 前端:JS/35/二级联动菜单,select对象,select对象的属性,option对象,option对象属性,实例:省份列表与城市列表的联动

    二级联动菜单 select 对象 一个<select>标记,对应一个select对象: select对象的属性 1,options[] :设置或返回下拉列表中<option>标 ...

最新文章

  1. mysql3.0数据库修复_mysql3.0监控mysql数据库
  2. oracle 禁用外键
  3. 常见电子元件实物照片
  4. 022_Vue购物车
  5. 乐鑫代理启明云端分享|ESP32 系列教程之四: Windows 搭建 esp-idf 环境
  6. 奇小葩讲设备树(3/5)-- Linux设备树详解(三)u-boot设备树的传递
  7. 基于Spring开发的DUBBO服务接口测试
  8. mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...
  9. SSAS的MDX语句整理
  10. pytorch学习笔记(三十):RNN反向传播计算图公式推导
  11. 关于Excel中的【照相机】功能。(我们通过此功能,可以通过Excel在图片上面画上一些内容后,连同图片和内容一起弄出来)
  12. webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
  13. 2021年人工智能学习路线图分享
  14. ArcGIS Pro2.5安装步骤(含Pro2.5安装包)
  15. 黑马程序员 接口 总结
  16. linux创建777权限的文件,Linux文件夹权限777,无法创建文件
  17. 图形库LVGL v8.2版本移植
  18. 阿里云直播集成简要指南
  19. oracle修改查询结果,Oracle使用查询结果更新表的方法
  20. [网络流24题] 06 最长递增子序列(最多不相交路径,最大流)

热门文章

  1. 计算机组成原理串行加法器延迟时间,2021考研408计算机组成原理:串行加法器和并行加法器...
  2. BMP测试图片及显示源码
  3. 在Ubuntu中下载github上的文件
  4. ps去水印教程_Adobe Photoshop CS2去除水印方法 PS去水印教程
  5. 机器学习经典案例——泰坦尼克号
  6. 计算机系统常见故障分析与排除,电脑常见网络故障分析与排除方法
  7. 【黄啊码】软件测试之Loadrunner教程
  8. 《MATLAB智能算法超级学习手册》一一1.5 简单工程应用分析
  9. 防不胜防 这些游戏被外挂活生生地毁了
  10. 06-JavaWEB_Git