index.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%
  3. String path = request.getContextPath();
  4. String basePath = request.getScheme() + "://"
  5. + request.getServerName() + ":" + request.getServerPort()
  6. + path + "/";
  7. %>
  8. <%@page import="java.net.*" %>
  9. <%@page import="comm.MakeMD5" %>
  10. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  11. <html>
  12. <head>
  13. <base href="<%=basePath%>">
  14. <title>MyIndex</title>
  15. <meta http-equiv="imurl" content="no-cache">
  16. </head>
  17.  
  18. <body>
  19. <%
  20. boolean loginFlag=false;
  21. String account=null;
  22. String md5Account=null;
  23. Cookie cookieArr[]=request.getCookies();
  24. if(cookieArr!=null&&cookieArr.length>0){
  25. for(Cookie cookie:cookieArr){
  26. if(cookie.getName().equals("account")){
  27. account=cookie.getValue();
  28. account=URLDecoder.decode(account,"utf-8");
  29. //System.out.print(account);
  30. }
  31. if(cookie.getName().equals("md5Account")){
  32. md5Account=cookie.getValue();
  33. md5Account=URLDecoder.decode(md5Account,"utf-8");
  34. //System.out.print(md5Account);
  35. }
  36. }
  37. }
  38.  
  39. if(account!=null&&md5Account!=null){
  40. loginFlag=md5Account.equals(MakeMD5.getMD5(account));
  41. }
  42.  
  43. if(loginFlag){
  44. //request.getRequestDispatcher("successlogin.jsp").forward(request, response);
  45. //response.sendRedirect("successlogin.jsp");
  46. %>
  47. <fieldset>
  48. <legend>欢迎您回来</legend>
  49. <table align="center">
  50. <tr>
  51. <td><%=account %>,欢迎您登陆本网站</td>
  52. <td align="center">
  53. <a href="foreverlogin?action=logout">注销登陆</a>
  54. </td>
  55. </tr>
  56. </table>
  57. </fieldset>
  58. <%
  59. }else{
  60. %>
  61. <fieldset>
  62. <legend>用户登录</legend>
  63. <form action="foreverlogin?action=login" method="post">
  64. <table>
  65. <tr>
  66. <td>账&nbsp;&nbsp;号:</td>
  67. <td><input type="text" name="account"></td>
  68. </tr>
  69. <tr>
  70. <td>密&nbsp;&nbsp;码:</td>
  71. <td><input type="text" name="password"></td>
  72. </tr>
  73. <tr>
  74. <td>有效期:</td>
  75. <td>
  76. <input type="radio" name="timeout" value="-1" checked="checked">
  77. 关闭浏览器即失效
  78. <input type="radio" name="timeout" value="<%=30*24*60*60%>">
  79. 30天内有效
  80. <input type="radio" name="timeout" value="<%=Integer.MAX_VALUE%>">
  81. 永久有效
  82. </td>
  83. </tr>
  84. <tr>
  85. <td>
  86. <input type="submit" value="登陆">&nbsp;
  87. <input type="reset" value="重置">
  88. </td>
  89. </tr>
  90. </table>
  91. </form>
  92. </fieldset>
  93. <%
  94. }
  95. %>
  96. </body>
  97. </html>

src/comm/foreverlogin.java

  1. package comm;
  2.  
  3. import java.io.IOException;
  4. import java.net.URLEncoder;
  5.  
  6. import javax.servlet.ServletException;
  7. import javax.servlet.http.Cookie;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. public class foreverlogin extends HttpServlet {
  13. private static final long serialVersionUID = 1L;
  14.  
  15. public foreverlogin() {
  16. super();
  17. }
  18.  
  19. public void destroy() {
  20. super.destroy(); // Just puts "destroy" string in log
  21. // Put your code here
  22. }
  23.  
  24. public void doGet(HttpServletRequest request, HttpServletResponse response)
  25. throws ServletException, IOException {
  26.  
  27. doPost(request,response);
  28. }
  29.  
  30. public void doPost(HttpServletRequest request, HttpServletResponse response)
  31. throws ServletException, IOException {
  32.  
  33. request.setCharacterEncoding("utf-8");
  34. response.setContentType("text/html;charset=utf-8");
  35.  
  36. String action=request.getParameter("action");
  37. if(action.equals("login")){
  38. login(request,response);
  39. }
  40. else if(action.equals("logout")){
  41. logout(request,response);
  42. }
  43. }
  44.  
  45. //login
  46. public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
  47. String account=request.getParameter("account");
  48. //String password=request.getParameter("password");
  49. int timeout=Integer.parseInt(request.getParameter("timeout"));
  50.  
  51. String md5Account=MakeMD5.getMD5(account); //采用MD5算法加密
  52. account=URLEncoder.encode(account,"utf-8"); //账号为中文时需要转换Unicode才能保存在Cookie中
  53. Cookie accountCookie=new Cookie("account",account);
  54. accountCookie.setMaxAge(timeout);
  55. Cookie md5AccountCookie=new Cookie("md5Account",md5Account);
  56. md5AccountCookie.setMaxAge(timeout);
  57. response.addCookie(accountCookie);
  58. response.addCookie(md5AccountCookie);
  59.  
  60. //将线程休眠1秒后在执行
  61. try {
  62. Thread.sleep(1000);
  63. } catch (InterruptedException e) {
  64. // TODO Auto-generated catch block
  65. e.printStackTrace();
  66. }
  67.  
  68. //response.sendRedirect("cookie/resultlogin.jsp?"+System.currentTimeMillis());
  69. response.sendRedirect("cookie/index.jsp?"+System.currentTimeMillis());
  70. }
  71.  
  72. //logout
  73. public void logout(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException{
  74. Cookie accountCookie=new Cookie("account","");
  75. accountCookie.setMaxAge(0);
  76. Cookie md5AccountCookie=new Cookie("md5Account","");
  77. md5AccountCookie.setMaxAge(0);
  78. response.addCookie(accountCookie);
  79. response.addCookie(md5AccountCookie);
  80.  
  81. //将线程休眠一秒后在执行
  82. try {
  83. Thread.sleep(1000);
  84. } catch (InterruptedException e) {
  85. // TODO Auto-generated catch block
  86. e.printStackTrace();
  87. }
  88.  
  89. response.sendRedirect("cookie/index.jsp?"+System.currentTimeMillis());
  90. }
  91.  
  92. public void init() throws ServletException {
  93. // Put your code here
  94. }
  95.  
  96. }

src/comm/MakeMD5.java

  1. package comm;
  2.  
  3. import java.security.MessageDigest;
  4.  
  5. public class MakeMD5 {
  6. public final static String getMD5(String str){
  7. // 用来将字节转换成 16 进制表示的字符
  8. char hexDiagiArr[]={'0','1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f'};
  9. MessageDigest digest=null;
  10. try{
  11. digest=MessageDigest.getInstance("MD5"); //创建MD5算法摘要
  12. digest.update(str.getBytes()); //更新摘要
  13. byte mdBytes[]=digest.digest(); //加密,并返回字节数组
  14. //新建字符数组,长度为myBytes字节数组的2倍,用于保存加密后的值
  15. char newCArr[]=new char[mdBytes.length*2];
  16. int k=0;
  17. for(int i=0;i<mdBytes.length;i++){
  18. byte byte0=mdBytes[i];
  19. newCArr[k++]=hexDiagiArr[byte0>>>4&0x0f]; //取字节中高 4 位的数字转换,>>>为逻辑右移,将符号位一起右移
  20. newCArr[k++]=hexDiagiArr[byte0&0x0f]; //取字节中低 4 位的数字转换
  21. //针对字符0-9的,0-9的ascii码值为0x30,0x31,0x32 0x33 ...0x39,
  22. //因此与0x0f按位与后只保留个位上的书即0x0,0x1,。。。0x9
  23. // 0000 1010
  24. //& 0000 1111
  25. // 0000 1010
  26. }
  27. return String.valueOf(newCArr); //将转换后的字符转换为字符串
  28. }
  29. catch(Exception e){
  30. e.printStackTrace();
  31. }
  32. return null;
  33. }
  34. }

jsp------实现MD5加密的更多相关文章

  1. SpringSecurity 登录 - 以及Md5加密

    我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...

  2. 使用MD5加密的登陆demo

    最近接手了之前的一个项目,在看里面登陆模块的时候,遇到了一堆问题.现在记录下来. 这个登陆模块的逻辑是这样的 1 首先在登陆之前,调用后台的UserLoginAction类的getRandomKey方 ...

  3. Java实现对文本文件MD5加密并ftp传送到远程主机目录

    需求描述: 客户出完账之后需要把出账的数据以文本文件的方式传送给收入管理系统,客户以前是通过本地的一个工具软件上传的,由于安全监管的原因,不允许在本地使用工具上传,因此客户希望我们在已经上线使用的系统 ...

  4. JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册   显示错误信息到页面上的另一种方法: public ...

  5. MD5加密 及 防止重复提交

    1.JSP页面 <%@page import="cn.gs.ly.app2.MD5Util"%> <%@page import="java.util.U ...

  6. 关于CryptoJS中md5加密以及aes加密的随笔

    最近项目中用到了各种加密,其中就包括从没有接触过得aes加密,因此从网上各种查,官方的一种说法: 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学 ...

  7. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  8. android MD5加密

    public class MD5Uutils {    //MD5加密,32位    public static String MD5(String str) {        MessageDige ...

  9. IOS 杂笔-9 (MD5 加密)

    首先是一段对MD5的简介 *出自一位大牛之手* Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护 ...

  10. JS中使用MD5加密

    下载 MD5 使用MD5加密的方法:下载md5.js文件,在网页中引用该文件: < script type="text/javascript" src="md5.j ...

随机推荐

  1. C语言 百炼成钢13

    //题目37:将一个数组逆序输出.用第一个与最后一个交换. #include<stdio.h> #include<stdlib.h> #include<math.h> ...

  2. OAF页面隐藏右上角的全局按钮(主页,注销等)

    OAPageLayoutBean page = pageContext.getPageLayoutBean(); page.prepareForRendering(pageContext); page ...

  3. 待整理-coredump

    Linux下如何产生coredump(gdb调试用) 任务发生异常,需要记录遗言信息,利用gdb调试,因此需要记录coredump文件.设置查看:在root用户下执行sysctl -a | grep ...

  4. Caffe学习系列(18): 绘制网络模型

    python/draw_net.py, 这个文件,就是用来绘制网络模型的.也就是将网络模型由prototxt变成一张图片. 在绘制之前,需要先安装两个库 1.安装GraphViz # sudo apt ...

  5. 做leetcode的几点体会分享(转)

    1 大部分题目你都是可以自己做出来的.所以,第一遍尽量不要网上找答案: 2 写了的不管通过的,不通过的答案要保存下来.不通过的,也要记录下来哪儿没有通过.很有可能你这次错了,不知道怎么搞过了,下次还是 ...

  6. 信息安全系统设计基础实验一 20135210&20135218

    北京电子科技学院(BESTI) 实     验    报     告 课程: 密码系统设计基础                                                     ...

  7. IOS 应用生命周期

    *当第一次运行程序时候:(active)didFinishLaunchingWithOptions(加载完毕)->applicationDidBecomeActive(获取焦点)*当点击home ...

  8. ASP.NET MVC5 + EF6 入门教程 (6) View中的Razor使用

    文章来源: Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html 上一节:ASP.NET MVC ...

  9. WP&Win10开发: RichTextBlock实现富文本并处理换行

    思路:1.构建字典.2.在字符串中匹配字典的key,将匹配到的key转换成对应的value3.将替换后的字符串,转化成xaml形式,加载该xaml以实现富文本. 代码如下: private Parag ...

  10. Git.Framework 框架随手记--ORM查询返回实体对象

    使用ORM有一个优势,可以通过某种机制将数据库中的数据转化为自己想要的对象形式数据.本章记录一下如何使用Git.Framework返回实体对象 一. Git.Framework 中提供的方法 在Git ...