登录注销购物车验证码

登录和注销

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 ”会降低数据库的效率。把查询条件封装成对象,并抽出了通用的代码作为查询对象的基类(父类),运行代码时会调用钩子方法,是模板方法设计模式的具体应用。

继续阅读→

MVC思想

项目的架构模式

1.模式一(Mode1 1):

  • JSP + JavaBean 开发也称作JSP模式一(以JSP为中心(JSP Centric))的设计模型
  • 此方式适合于快速开发
  • JSP不仅仅负责输出界面,还处理请求,没有体现出责任分离原则

继续阅读→