List getAllCats() throws Exception;
}
public class CategoryDaoImpl implements CategoryDao {
@Override
public List getAllCats() throws Exception {
String sql = “select * from category”;
QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
return qr.query(sql, new BeanListHandler(Category.class));
}
}
在header.jsp页面当中获取IndexServlet发送的List集合
<c:forEach items=“${allCats}” var=“c”>
- ${c.cname }
</c:forEach>
弊端:当访问首页是可以看到全部的分类信息,但是如果访问其它登录页面,看不到分类信息
JSON 相关知识
https://www.runoob.com/json/json-tutorial.html
首页分类版本二(使用json)
步骤实现:
1、/jsp/header.jsp
在页面底部
$.post(url,{},function(data){},“json”){}
2、在CategoryServlet当中创建findAllCats方法
调用业务层的获取全部分类
将全部分类转换为JSON格式的数据
导入json相关的架包(web下的lib当中)
将全部的分类信息响应到客户端
public class CategoryServlet extends BaseServlet {
// findAllCats
public String findAllCats(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 调用业务层的获取全部分类
CategoryService categoryService = new CategoryServiceImpl();
List list = categoryService.getAllCats();
// 将全部分类的List数据转换为JSON格式的数据(转换之前要引入json相关的架包)
String jsonStr = JSONArray.fromObject(list).toString();
System.out.println(jsonStr);
// 将全部的分类信息响应到客户端
//告诉浏览器本次响应的数据是JSON格式的字符串
resp.setContentType(“application/json;charset=utf-8”);
resp.getWriter().print(jsonStr);//将json格式的字符串响应到客户端
return null;
}
}
3、调试
观察本次的请求和响应网络传输的情况,
目的:排除两端错误
[{“cid”:“1”,“cname”:“手机数码”},
{“cid”:“172934bd636d485c98fd2d3d9cccd409”,“cname”:“运动户外”},
{“cid”:“2”,“cname”:“电脑办公”},
{“cid”:“3”,“cname”:“家具家居”},
{“cid”:“4”,“cname”:“鞋靴箱包”},
{“cid”:“5”,“cname”:“图书音像”},
{“cid”:“59f56ba6ccb84cb591c66298766b83b5”,“cname”:“aaaa”},
{“cid”:“6”,“cname”:“母婴孕婴”},
{“cid”:“afdba41a139b4320a74904485bdb7719”,“cname”:“汽车用品”}]
版本二的弊端:如果用户频繁的访问包含分类信息的页面,每次都要去DB中去获取分类信息,影响性能。
首页分类版本三(使用Redis)
原理分析
步骤实现:
1、导入Redis,jar包
2、及其工具类(修改参数127.0.01)
public class JedisUtils {
//创建连接池
private static JedisPoolConfig config;
private static JedisPool pool;
static{
config=new JedisPoolConfig();
config.setMaxTotal(30);
config.setMaxIdle(2);
pool=new JedisPool(config, “127.0.0.1”, 6379);//链接本地的redis
}
//获取连接的方法
public static Jedis getJedis(){
return pool.getResource();
}
//释放连接
public static void closeJedis(Jedis j){
j.close();
}
}
3、启动window版本本地演示版本的Redis
Redis官网下载
http://www.redis.cn/download.html
将从数据获取的数据放入到json,当第一访问的时候,将json的数据直接响应到前端,通过将json的数据放入到Redis,当地二次访问该方法的时候,直接从Redis当中获取对应的数据响应到前端
判断是否是第一次访问的依据是判断其Redis当中有没有对应的数据,然后再放入,或者取出
public class CategoryServlet extends BaseServlet {
// findAllCats
public String findAllCats(HttpServletRequest req, HttpServletResponse resp) throws Exception {
// 在redis当中获取全部分类信息
Jedis jedis = JedisUtils.getJedis();
String jsonStr = jedis.get(“allCats”);
if (null == jsonStr || “”.equals(jsonStr)) {
// 调用业务层的获取全部分类
CategoryService categoryService = new CategoryServiceImpl();
List list = categoryService.getAllCats();
// 将全部分类的List数据转换为JSON格式的数据(转换之前要引入json相关的架包)
jsonStr = JSONArray.fromObject(list).toString();
System.out.println(jsonStr);
//将JSON格式的字符串放入到redis当中
jedis.set(“allCats”, jsonStr);
System.out.println(“Redis缓存当中没有数据”);
// 将全部的分类信息响应到客户端
// 告诉浏览器本次响应的数据是JSON格式的字符串
resp.setContentType(“application/json;charset=utf-8”);
resp.getWriter().print(jsonStr);// 将json格式的字符串响应到客户端
} else {
System.out.println(“Redis缓存当中有数据”);
// 将全部的分类信息响应到客户端
// 告诉浏览器本次响应的数据是JSON格式的字符串
resp.setContentType(“application/json;charset=utf-8”);
// 将json格式的字符串响应到客户端
resp.getWriter().print(jedis.get(“allCats”));//将redis当中的数据发送到前端
System.out.println(jedis.get(“allCats”));
}
// 释放redis当中的资源
JedisUtils.closeJedis(jedis);
return null;
}
}最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
ExTP-1715462281216)][外链图片转存中…(img-A2xpUuTk-1715462281217)]
[外链图片转存中…(img-mRKlYX3e-1715462281217)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!