JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码
1、 自动登录
http://blog.csdn.net/xj626852095/article/details/16825659
2. 防止表单重复提交
表单Servlet
//负责产生表单
public class FormServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();String token = TokenProccessor.getInstance().makeToken();request.getSession().setAttribute("token", token); //在服务器端保存随机数out.println("<form action='/day07/servlet/DoFormServlet' method='post'>");out.write("<input type='hidden' name='token' value='"+token+"'>");out.println("用户名:<input type='text' name='username'>");out.println("<input type='submit' value='提交'>");out.println("</form>");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}
}class TokenProccessor{/**单态设计模式(保证类的对象在内存中只有一个)*1、把类的构造函数私有*2、自己创建一个类的对象*3、对外提供一个公共的方法,返回类的对象* */private TokenProccessor(){}private static final TokenProccessor instance = new TokenProccessor();public static TokenProccessor getInstance(){return instance;}public String makeToken(){ //checkException// 7346734837483 834u938493493849384 43434384String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + "";//数据指纹 128位长 16个字节 md5try {MessageDigest md = MessageDigest.getInstance("md5");byte md5[] = md.digest(token.getBytes());//base64编码--任意二进制编码明文字符 adfsdfsdfsfBASE64Encoder encoder = new BASE64Encoder();return encoder.encode(md5);} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}}
表单处理Servlet
public class DoFormServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {boolean b = isToken(request); //判断用户是否是重复提交if(b==true){System.out.println("请不要重复提交");return;}request.getSession().removeAttribute("token");System.out.println("处理用户提交请求!!");}private boolean isToken(HttpServletRequest request) {String client_token = request.getParameter("token");if(client_token==null){return true;}String server_token = (String) request.getSession().getAttribute("token");if(server_token==null){return true;}if(!client_token.equals(server_token)){return true;}return false;}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
转载于:https://www.cnblogs.com/xj626852095/p/3648071.html
JavaWeb -- Session实例 -- 自动登录 和 防止表单重复提交(令牌产生器) MD5码相关推荐
- Spring Boot中防表单重复提交以及拦截器登录检测
目录 理论 演示 源码 理论 在用户登录后,如果按F5刷新会出现表单重复提交的问题,解决这个问题后,如果没有拦截器登录检测,就会造成,任意用户可以登录后台界面,所以要有拦截器登录检测. 相关的逻辑步骤 ...
- struts2 防止表单重复提交--令牌机制
jsp: action: 配置文件: 转载于:https://www.cnblogs.com/hwgok/p/8324432.html
- 由防止表单重复提交引发的一系列问题--servletRequest的复制、body值的获取
@Time:2019年1月4日 16:19:19 @Author:QGuo 背景:最开始打算写个防止表单重复提交的拦截器:网上见到一种不错的方式,比较合适前后端分离,校验在后台实现: 我在此基础上,将 ...
- PHP通过session判断防止表单重复提交实例
PHP通过session判断防止表单重复提交实例 PHP通过session判断防止表单重复提交实例,当用户提交表单后,为防止重复操作,通过session来判断是否为初次提交,否则让他返回到之前表单页面 ...
- 登录和注销、基于Session的购物车案例、验证码的使用、防止表单重复提交
一:登录和注销: 登录login.jsp界面 <body><%//销毁sessionsession.invalidate();%> <h3>用户登录</h3& ...
- JavaWeb学习总结(十三)——使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JavaWeb学习总结(十三):使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JavaWeb -- Struts1 使用示例: 表单校验 防表单重复提交 表单数据封装到实体
1. struts 工作流程图 超链接 2. 入门案例 struts入门案例:1.写一个注册页面,把请求交给 struts处理<form action="${pageContext.r ...
- 七、SpringBoot——用户登录Demo(国际化、表单重复提交,登录拦截器)
一.CURD的Demo 1开发前准备工作 新建一个SpringBoot工程 引入starter-web maven依赖 引入html页面和assert文件夹里的样式文件等等 2 实现访问登录页面 方式 ...
最新文章
- UVA1660 电视网络 Cable TV Network(网络流,最小割)
- 获取邮箱通讯录,msn好友列表的C#源码
- 删除与剪切有何区别?
- Linux编程手册读书笔记第五章(20140408)
- 《面向数据科学的概率论》翻译活动期待大家的参与 | ApacheCN
- Mysql用户管理(远程连接、授权)
- Drupal的taxonomy_manager模块合并分类的方法
- VSFTP进阶使用---自用简记
- 51单片机的家居空气质量监测系统proteus仿真设计
- spss的独立样本T检验
- Premiere(pr)怎样剪裁视频画面大小呢
- 微软云存储中国事业部,热招!
- Windows10系统无法更改默认浏览器等默认设置
- EBS创建会计科目请求报错问题查询
- 基于Tofu的热红外、多波段目标识别跟踪系统
- Java 并发异步编程,原来十个接口的活现在只需要一个接口就搞定!
- 有道云笔记Markdown(一)
- 数据结构与算法A实验六图论---7-8判断是否有路径(并查集)
- golang同时使用命令行参数和配置文件
- 独角兽趋势一次一单,这款策略简直让人惊艳,做单准确率高的让人难以置信