创建管理员表
- 字段:编号(主键、自增)
用户名 字符串
密码 字符串 - 创建登录JSP页面,能实现输入账号和密码,进行后台验证,成功后能查看用户列表页面,失败就进行提示。
- 建表插入数据
- 添加管理员实体
- 编写DAO、编写登录的方法
- 编写Service调用DAO
- 编写Servlet
- 编写登录页面,传参给Servlet
页面跳转的方式:
重定向
响应对象.sendRedirect("地址")
请求转发forward
请求对象.getRequestDispatcher("地址").forward(请求,响应);
区别:
1. 重定向属于服务器外部跳转
forward属于服务器内部跳转
2. 重定向地址栏会改变,forward不会改变
3. forward效率更高
注意:
使用请求转发存在表单重复提交问题
出现的情况:
1. 使用请求转发到新的页面,在新页面点击刷新
2. 多次点击提交按钮
3. 跳转到新页面,新页面返回,再刷新
验证码
提高登录系统的安全性,防止机器人对系统进行攻击
技术点:
- 图形的绘制
- 随机产生4个字母或数字
API:
-
BufferedImage 内存中的图片
BufferedImage(int width,int height,int type)
width 宽度 height 高度
type 类型 --> BufferedImage静态常量 -
Graphics 绘图
获得方法:
BufferedImage对象.getGraphics()
常用方法:
setColor(Color color) 设置颜色
setFont(Font font) 设置字体
fillRect(int x,int y,int width,int height) 填充矩形范围
x\y是左上角坐标,width、height填充的宽和高
drawLine(int x1,int y1,int x2,int y2) 画线条
x1\y1是第一个点坐标 x2\y2第二个点坐标
drawString(String text,int x,int y) 画文字
text文字内容,x\y是坐标 -
ImageIO 图片工具类
write(BufferedImage image,String format,OutputStream out)
通过输出流发送图片 -
实现过程:
验证码Servlet:
1. 创建内存图片
2. 获得绘图对象
3. 设置颜色、字体
4. 填充背景
5. 随机绘制四个字母或数字
6. 将验证码字符串保存到Session
7. 发送图片到浏览器
登录JSP:
1. 添加img标签,src设置为Serlvet的URL
2. 实现点击更新验证码
3. 添加输入框,输入验证码
登录Servlet
1. 获得验证码参数和Session中验证码进行比较
过滤器
过滤器可以过滤各种Web项目中的资源
作用:
-
执行某些通用的操作
比如:给每个Servlet设置编码 -
可以对某些请求进行拦截
比如:对没有登录的请求进行拦截
实现:
- 定义类实现Filter接口
-
实现方法:
init 初始化
destory 销毁
doFilter 过滤 -
注册
web.xml 注册
@WebFilter 注解
方法名和参数列表:
doFilter(HttpServletRequest req,HttpServletResponse resp,FilterChain chain)
主要方法:
doFilter 如果过滤器链执行该方法,不执行就是拦截
注册:
- xml中注册
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.qianfeng.nanny.filter.EncodingFilter</filter-class>
</filter>
<!-- 配置过滤器过滤资源的URL -->
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- 注解注册
@WebFilter("/*")
@WebFilter({"/login.jsp","/login.do"})
@WebFilter("*.do")
/*代表拦截所有资源
/login.jsp,/login.do 拦截指定的资源
*.do 拦截最后为.do的资源
作业:
- 登录页面的验证码
- 编码的过滤器
- 判断是否登录的过滤器
- 如何实现安全退出
- 实现用户的添加