Filter
一、Filter简介
Filter意思为过滤器。顾名思义,过滤器可以在浏览器以及目标资源之间起到一个过滤作用。它可以截取客户端和Web资源之间的请求和响应信息。
二、Filter作用
1.Filter可以在请求到达目标资源之前进行拦截。
2.Filter也可以放行请求。
3.Filter可以在响应到达浏览器之前做一个预处理。
三、Filter接口的主要方法
1.init()方法用于初始化Filter。
2.doFilter()作用和service()方法类似,是过滤器请求和响应的主要方法。
3.destroy()用于在Filter对象被销毁前做一些收尾工作。如:释放资源等。
四、创建Filter,实现FIlter接口
package com.yyzy.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//编码转换
servletRequest.setCharacterEncoding("utf-8");
//放行
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
MD5
一、MD5简介
MD5加密技术:一种常见的加密算法,可以对数据进行加密。
注意:注册的时候进行加密然后存在数据库中
注意:登录的时候也要进行加密,然后和数据库加密之后的数据进行对比。
例如密码:1234 加密之后变成了 abcd。
所以登录的时候依然使用1234进行登录。然后将加密之后的1234 和abcd进行对比。
二、如何使用MD5加密技术
1.导入jar包
2.创建MD5对象:
Mademd5 md = new Mademd5();
String str = "1234";//原密码
String s = md.toMd5(str);//加密之后的密码
System.out.println(s);
Cookie
一、Cookie简介
Cookie是保存在客户端的一段字符串。 格式为:key-value
如何在浏览器查看Cookie : F12 application
应用场景: 自动登录 记住账号 浏览记录 查询记录
二、Cookie的优点和缺点
优点:保存在客户端 减轻服务器的压力
缺点:保存在客户端 容易被非法用户获取
三、 Cookie的生命周期
生命周期:默认的有效期 一次会话(浏览器打开到关闭为一次会话)
无法跨域:这是浏览器自带的安全机制而非Cookie的
四、 如何在Servlet中创建Cookie
1.创建一个Key为username value为username的Cookie
Cookie c1 = new Cookie("username" , username);
2.设置Cookie的生命周期单位是秒
c1.setMaxAge(3600*24*31);//一个月
3.将其添加进浏览器
resp.addCookie(c1);
五、案例
1.如何在Servlet中删除Cookie
package com.yyzy.servlet;
import com.yyzy.dao.UserinfoDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/DelCookieServlet")
public class DelCookieServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
if (cookies!=null){
for(int i = 0 ;i<cookies.length;i++){
if(cookies[i].getName().equals("username")){
cookies[i].setMaxAge(0);
resp.addCookie(cookies[i]);
}
if(cookies[i].getName().equals("password")){
cookies[i].setMaxAge(0);
resp.addCookie(cookies[i]);
}
}
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
}
2. 如何在Servlet中查询Cookie
package com.yyzy.servlet;
import com.yyzy.dao.UserinfoDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/CheckCookieServlet")
public class CheckCookieServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Cookie[] cookies = req.getCookies();
String username = "";//将cookie的值存
String password = "";
if (cookies!=null){
for(int i = 0 ;i<cookies.length;i++){
if(cookies[i].getName().equals("username")){
username = cookies[i].getValue();
}
if(cookies[i].getName().equals("password")){
password = cookies[i].getValue();
}
}
UserinfoDao ud = new UserinfoDao();
boolean b = ud.login(username, password);
if (b){
req.getRequestDispatcher("success.jsp").forward(req,resp);
}else{
req.setAttribute("info","登录信息已经失效");
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
}
}
3.如何在JSP中读取Cookie
${cookie.xxx}