东莞志豪建设公司网站,安徽六安属于南方还是北方,html制作个人简历代码带照片,制作网页时为什么一般不使用较特殊的字体自动登录问题和MD5加密前面已经完成了Filter的自动登录#xff0c;但是有问题#xff0c;我们在web.xml中Filter的url-mapping中配置的规则是/*, 也就是这个网站的所有请求都拦截。这肯定不合适。我们本来访问/login.jsp#xff0c;本来就是去登录#xff0c;结果也进行了拦…自动登录问题和MD5加密前面已经完成了Filter的自动登录但是有问题我们在web.xml中Filter的url-mapping中配置的规则是/*, 也就是这个网站的所有请求都拦截。这肯定不合适。我们本来访问/login.jsp本来就是去登录结果也进行了拦截。解决自动登录问题其实我们可以在AutoLoginFilter.java这个文件中写if语句来判断虽然web.xml文件还是配置拦截/*, 但是只有在if满足条件才进行拦截否则直接放行就好。下面if条件我们不希望/login.jsp 和/loginServlet这两个请求地址被拦截所以这里取反使用符号。意思就是除了这两个之外地址都拦截。package com.kaigejava.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.anthony.domain.User;import com.anthony.service.UserService;import com.anthony.service.UserServiceImpl;public class AutoLoginFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 1 转换两个对象 HttpServletRequest HttpServletResponseHttpServletRequest req (HttpServletRequest) request;HttpServletResponse resp (HttpServletResponse) response;// 优化String uri req.getRequestURI(); // 浏览器中url端口8080后面部分String path req.getContextPath(); // 应用名称path uri.substring(path.length()); // /login.jspif (!(/login.jsp.equals(path)) || (/loginServlet.equals(path))) {// 2.处理业务, 这里是得到cookies// 优化User user (User) req.getSession().getAttribute(user);if (user null) { // 说明从来没有登录过Cookie[] cookies req.getCookies();String username ;String password ;for (int i 0; cookies ! null i if (user.equals(cookies[i].getName())) {String value cookies[i].getValue(); // usernamepassword这样一个格式字符串// 得到用户名和密码String[] values value.split();username values[0];password values[1];}}UserService us new UserServiceImpl();User u us.findUser(username, password);if (u ! null) { // 如果登录成功把用户信息存到session中req.getSession().setAttribute(user, u);}}}// 3.放行chain.doFilter(request, response);}public void init(FilterConfig fConfig) throws ServletException {}}可以再次测试下例如在LoginServlet中或者打印用户名和密码字段可以发现只执行了一次登录也就是没有被拦截。MD5加密第一个要知道的是MD5(Message-Digest Algoorithm 5)是一种不可逆的加密算法。也就是只能加密不能解密操作。那么我们登录是如何做到呢一般来说数据库中用户名密码肯定采用MD5加密。在后台拿到前端获取密码然后把这个密码通过MD5加密然后传入数据库和密码这栏比较相等就说明密码一样。先来看看MD5加密效果上面这个图是用户密码在数据库中是没有加密过的下面我们执行把第二个用户进行md5加密之后看看加密之后密码处的效果。UPDATE users SET PASSWORDMD5(PASSWORD) WHERE id2;这个一长串密码就是MD5加密之后的效果。Java中如何使用MD5加密这个MD5加密方法算一个工具类吧网上很容易搜到下面是代码方法package com.kaigejava.util;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5Utils {public static String md5(String plainText) {byte[] secreBytes null;try {secreBytes MessageDigest.getInstance(md5).digest(plainText.getBytes());}catch (NoSuchAlgorithmException e) {throw new RuntimeException(没有md5这个算法);}String md5code new BigInteger(1, secreBytes).toString(16);for (int i 0; i 32 - md5code.length(); i) {md5code 0 md5code;}return md5code;}}登录过程使用加密密码在LoginServlet.java中处理登录这个我们通过request.getParameter(“password”)得到的密码肯定是明文的这时候我们需要先给password进行MD5加密然后进行登录操作。(前提是用户注册过程中后台代码在处理注册的servlet中就把用户密码给进行MD5加密然后保存在数据中的密码就是加密的形式)上面如果是在注册的servlet中也这样对password进行加密。