Redis之案例:省份列表(下)
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之案例:省份列表(下)相关推荐
- Redis简单案例(二) 网站最近的访问用户
原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...
- Redis简单案例(四) Session的管理
Redis简单案例(四) Session的管理 原文:Redis简单案例(四) Session的管理 负载均衡,这应该是一个永恒的话题,也是一个十分重要的话题.毕竟当网站成长到一定程度,访问量自然也是 ...
- 使用redis实现缓存_用下一个js实现一个简单的redis缓存
使用redis实现缓存 For most websites, the changing pieces don't actually vary that often. That immutability ...
- css实现列表下拉菜单_逐行:点击打开下拉列表和菜单的高级CSS技巧
css实现列表下拉菜单 by David Piepgrass 由David Piepgrass 逐行:点击打开下拉列表和菜单的高级CSS技巧 (Line-by-line: advanced CSS t ...
- 「Redis数据结构」压缩列表(ZipList)
「Redis数据结构」压缩列表(ZipList) 文章目录 「Redis数据结构」压缩列表(ZipList) 一.概述 二.结构 三.连锁更新问题 四.压缩列表的缺陷 五.小结 参考 ZipList ...
- Redis故障案例(一)-特定key批量丢失
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/n88Lpo/article/details/78591111 作者:RogerZhuo 来源:DBA ...
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版 一.资源 Linux下的Redis的下载地址 二.安装与测试 上传至自己的Linux平台 解压安装包 tar ...
- Redis第一集:Windows下安装Redis和测试
Redis第一集:Windows下安装Redis和测试 一.资源 Windows下的Redis的下载地址 点击这里即可下载,如果进不去GitHub的话,可以上网搜一下怎么进GitHub,搭个梯子(●ˇ ...
- Redis简单案例(三) 连续登陆活动的简单实现
原文:Redis简单案例(三) 连续登陆活动的简单实现 连续登陆活动,或许大家都不会陌生,简单理解就是用户连续登陆了多少天之后,系统就会送一些礼品给相应的用户.最常见的 莫过于游戏和商城这些.游戏就送 ...
- 前端:JS/35/二级联动菜单,select对象,select对象的属性,option对象,option对象属性,实例:省份列表与城市列表的联动
二级联动菜单 select 对象 一个<select>标记,对应一个select对象: select对象的属性 1,options[] :设置或返回下拉列表中<option>标 ...
最新文章
- mysql3.0数据库修复_mysql3.0监控mysql数据库
- oracle 禁用外键
- 常见电子元件实物照片
- 022_Vue购物车
- 乐鑫代理启明云端分享|ESP32 系列教程之四: Windows 搭建 esp-idf 环境
- 奇小葩讲设备树(3/5)-- Linux设备树详解(三)u-boot设备树的传递
- 基于Spring开发的DUBBO服务接口测试
- mysql scrapy 重复数据_大数据python(scrapy)爬虫爬取招聘网站数据并存入mysql后分析...
- SSAS的MDX语句整理
- pytorch学习笔记(三十):RNN反向传播计算图公式推导
- 关于Excel中的【照相机】功能。(我们通过此功能,可以通过Excel在图片上面画上一些内容后,连同图片和内容一起弄出来)
- webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
- 2021年人工智能学习路线图分享
- ArcGIS Pro2.5安装步骤(含Pro2.5安装包)
- 黑马程序员 接口 总结
- linux创建777权限的文件,Linux文件夹权限777,无法创建文件
- 图形库LVGL v8.2版本移植
- 阿里云直播集成简要指南
- oracle修改查询结果,Oracle使用查询结果更新表的方法
- [网络流24题] 06 最长递增子序列(最多不相交路径,最大流)
热门文章
- 计算机组成原理串行加法器延迟时间,2021考研408计算机组成原理:串行加法器和并行加法器...
- BMP测试图片及显示源码
- 在Ubuntu中下载github上的文件
- ps去水印教程_Adobe Photoshop CS2去除水印方法 PS去水印教程
- 机器学习经典案例——泰坦尼克号
- 计算机系统常见故障分析与排除,电脑常见网络故障分析与排除方法
- 【黄啊码】软件测试之Loadrunner教程
- 《MATLAB智能算法超级学习手册》一一1.5 简单工程应用分析
- 防不胜防 这些游戏被外挂活生生地毁了
- 06-JavaWEB_Git