过滤器和监听器

过滤器概述

可参考:https://www.cnblogs.com/coderland/p/5902878.html

生活中的过滤器:饮水机,烟嘴, 口罩, 丈母娘等,将人们不需要的东西过滤掉,得到想要的东西(单向的)
Web的过滤器(Filter):对请求或者是响应信息进行过滤(双向的)

过滤器的作用:其中最重要的就是filter功能.它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).


继续阅读→

登录注销购物车验证码

登录和注销

LoginServlet:

接收请求参数,username、password

调用业务方法处理请求:dao.checkLogin(username, password);

控制页面跳转:失败,回到登录页面;成功:跳转到指定页面,并将用户信息共享到Session中

UserDAOImpl:

  1. SELECT * FROM t_user WHERE username = ? AND password = ?;(提示:账号或密码输入有误)
  2. SELECT * FROM t_user WHERE username = ?;然后再在内存中校验密码(提示:账号不存在/密码错误)

继续阅读→

文件上传和下载

上传文件的准备工作

1.表单中的提交方式必须为POST(POST没有大小限制):<form action="#" method="post">

2.在表单中需要添加一个上传控件:<input type="file" name="headImg" />

3.必须将表单中enctype修改为multipart/form-data,数据以二进制的形式进行传递:<form action="#" method="post" enctype="multipart/form-data">

注意:此时在Servlet中就不能再使用String name = req.getParameter("name");获取请求参数

文件上传操作,实际上就是在解析数据。通常,这种操作是必须要做的,但是又没有技术含量,所有通常都应该有第三方的工具使用,如:基于Apache FileUpload组件

继续阅读→

高级分页查询

本项目基于之前的高级查询项目,结合了高级查询和分页查询,同时解决了参数提交的问题。使用了谷歌分页查询算法,最后放上源码。

分页的两种设计方式:

1.假分页:将所有的数据从数据库中查询出来放在内存中(List 集合)

翻页直接从集合中截取指定条数的数据
第一页:索引 0~9:list.get(索引)
第二页:索引 10~19:list.get(索引)
....................
问题:当数据量较大的时候,可能造成内存溢出(严重)
好处:操作速度较快






继续阅读→

高级查询

整理了高级查询的项目,放到这里方便查看。高级查询的实质就是拼接SQL语句,这个项目还增强了代码重构的能力。完成一个需求的功能一般都是从最直接也是最简单的方法入手,一步步迭代得到较理想的结果。这个项目解决了" where 1 = 1 "的问题,因为“ where 1 = 1 ”会降低数据库的效率。把查询条件封装成对象,并抽出了通用的代码作为查询对象的基类(父类),运行代码时会调用钩子方法,是模板方法设计模式的具体应用。

继续阅读→