首页 > 编程语言 >javaweb-Cookie、Kaptcha、正则表达式

javaweb-Cookie、Kaptcha、正则表达式

时间:2023-03-21 17:15:55浏览次数:58  
标签:匹配 javaweb Kaptcha Cookie str kaptcha var reg

资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战) ,本人才疏学浅,记录笔记以供日后回顾
由于是多个视频内容混合在一起,因此只放了第一个链接
视频链接

知识点

1. Cookie
   1. 创建Cookie对象
   2. 在客户端保存Cookie
   3. 设置Cookie的有效时长
      cookie.setMaxAge(60)  , 设置cookie的有效时长是60秒
      cookie.setDomain(pattern);
      cookie.setPath(uri);
   4. Cookie的应用:
     4-1: 记住用户名和密码十天 setMaxAge(60 * 60 * 24 * 10)
     4-2: 十天免登录

2. Kaptcha
   1. 为什么需要验证码
   2. kaptcha如何使用:
      - 添加jar  本文使用的是 kaptcha-2.3.2.jar
      - 在web.xml文件中注册KaptchaServlet,并设置验证码图片的相关属性
      - 在html页面上编写一个img标签,然后设置src等于KaptchaServlet对应的url-pattern
   3. kaptcha验证码图片的各个属性在常量接口:Constants中
   4. KaptchaServlet在生成验证码图片时,会同时将验证码信息保存到session中
      因此,我们在注册请求时,首先将用户文本框中输入的验证码值和session中保存的值进行比较,相等,则进行注册

3. JS - Exp
   1)正则表达式的使用三步骤:
       1. 定义正则表达式对象
          正则表达式定义有两个方式:
          1) 对象形式
             var reg = new RegExp("abc")
          2) 直接量形式
             var reg = /abc/;
          3) 匹配模式:
           - g 全局匹配
           - i 忽略大小写匹配
           - m 多行匹配
           - gim这三个可以组合使用,不区分先后顺序
             例如: var reg = /abc/gim , var reg = new RegExp("abc","gim");
       2. 定义待校验的字符串
       3. 校验
   2)元字符
     . , \w , \W , \s , \S , \d , \D , \b , ^ , $
      | 代码 | 说明                                                         |
      | ---- | ------------------------------------------------------------ |
      | .    | 匹配除换行字符以外的任意字符。                               |
      | \w   | 匹配字母或数字或下划线等价于[a-zA-Z0-9_]                     |
      | \W   | 匹配任何非单词字符。等价于[^A-Za-z0-9_]                      |
      | \s   | 匹配任意的空白符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]。 |
      | \S   | 匹配任何非空白字符。等价于[^\f\n\r\t\v]。                    |
      | \d   | 匹配数字。等价于[0-9]。                                      |
      | \D   | 匹配一个非数字字符。等价于[^0-9]                             |
      | \b   | 匹配单词的开始或结束                                         |
      | ^    | 匹配字符串的开始,但在[]中使用表示取反                       |
      | $    | 匹配字符串的结束                                             |

   3)[]表示集合
     [abc] 表示 a或者b或者c
     [^abc] 表示取反,只要不是a不是b不是c就匹配
     [a-c] 表示a到c这个范围匹配

   4) 出现的次数
     * 表示多次 (0 ~ n )
     + 至少一次 ( >=1 )
     ? 最多一次 (0 ~ 1)
     {n} 出现n次
     {n,} 出现n次或者多次
     {n,m} 出现n到m次

cookie的测试代码

CookieServlet01 类

@WebServlet("/cookie01")
public class CookieServlet01 extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("uname", "Tom");
        response.addCookie(cookie);
        request.getRequestDispatcher("hello01.html").forward(request,response);
    }
}

使用KaptchaServlet类获取验证码的功能

感觉还挺有意思的呢
Tomcat启动后,先访问http://localhost:8080/pro26/hello02.html,可以看到验证码,再访问http://localhost:8080/pro26/kaptcha01,控制台会打印刚刚所看到的验证码。

web.xml文件

下面的文件中的参数可以根据文档,按需设置哦。此处设置是红色边框、只在abcdefg这几个字母中随机生成、无遮挡条纹

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    
    <servlet>
        <servlet-name>KaptchaServlet</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        <init-param>
            <param-name>kaptcha.border.color</param-name>
            <param-value>red</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.string</param-name>
            <param-value>abcdefg</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.noise.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.NoNoise</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>KaptchaServlet</servlet-name>
        <url-pattern>/kaptcha.jpg</url-pattern>
    </servlet-mapping>
</web-app>

hello02.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <img src="kaptcha.jpg"/>
</body>
</html>

KaptchaServletDemo01类

@WebServlet("/kaptcha01")
public class KaptchaServletDemo01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession() ;
        Object obj = session.getAttribute("KAPTCHA_SESSION_KEY");
        System.out.println("obj = " + obj);
    }
}

正则表达式代码小示例

demo01.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script language="JavaScript">
        var reg = /abc/; //new RegExp("abc");
        var str = "abcdefg";
        var flag = reg.test(str);
        console.log(flag);
    </script>
</head>
<body>

</body>
</html>
<!--
正则表达式的使用三步骤:
1. 定义正则表达式对象
   正则表达式定义有两个方式:
   1) 对象形式
      var reg = new RegExp("abc")
   2) 直接量形式
      var reg = /abc/;
2. 定义待校验的字符串
3. 校验


-->

通过IDEA中显示的小图标,打开浏览器

右键浏览器,选择检查——控制台,就可以看到正则结果啦。

demo05.html

控制台结果为:
A>AAA|A
A?A
replace是个替换方法,将匹配到的结果用“A”来替代。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script language="JavaScript">
        var reg = /\w/gim ;        // \w表示匹配字母或数字或下划线
        var str = "a>b_c|d\nf?g";
        //var str = ">a|\n?";
        str = str.replace(reg,"A");
        console.log(str);
        /*
        var flag = reg.test(str);
        console.log(flag);
        */
    </script>
</head>
<body>

</body>
</html>

demo07.html

使用document.write(str)方法就可以直接在页面上显示str的值了。
此处结果为:AA5

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script language="JavaScript">
        //var reg = /\d/gim ;        // \d表示匹配数字, \D表示匹配非数字
        var reg = /\D/gim ;
        var str = "a>5";
        str = str.replace(reg,"A");
        document.write(str);
    </script>
</head>
<body>

</body>
</html>

标签:匹配,javaweb,Kaptcha,Cookie,str,kaptcha,var,reg
From: https://www.cnblogs.com/fgcs111/p/17240619.html

相关文章

  • Cookie 的属性-1与Cookie的属性-2
    Cookie的属性-1Cookie的名称(Name)和值(Value)最重要的两个属性,创建Cookie时必须填写,其它属性可以使用默认值Cookie的名称或值如果包含非英......
  • Javaweb学习-书城项目相关
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接本文参考价值不高,随便写写......
  • flask-cookie,session用法
    cookie用法cookie是存储在浏览器上的少量用户信息.```python.....```  session用法session可以加密后存在浏览器.也可以存储在服务器.使用session需要在配置中......
  • 关于JavaWeb中常见的Artifacts是什么东西?
    Artifacts其实就是包括了一些module打包的方式,Artifacts中文名为工件,如下图,当我们点击添加工件后,就会出现一些可以添加的类型,有jar、war等等,所以Artifacts自己并不是一种包......
  • Cookie的封装以及注意事项
    Cookie的封装1.Cookie 是浏览器存储数据的一种方式,存储在用户本地,而不是存储在服务器上,是本地存储2.作用场景网站的中英切换利用Cookie跟踪统计用户访问该网......
  • Cookie和Session
    cookie与session的简介网站的发展史刚开始的网站没有保存用户的功能的需求,所有用户访问返回的结果都是一样的(eg:新闻、博客、文章...)后来出现了一些需要保存用户信息的......
  • 爬虫:爬虫介绍、request模块介绍、request发送get请求、request携带参数、url的编码解
    目录一、爬虫介绍1、爬虫是什么?2、爬虫的基本流程:3、我们要学习的内容二、request模块介绍三、request发送get请求四、request携带参数五、url的编码解码六、请求携带请求......
  • 前端操作cookie的用法
    前端操作cookie的方法        +前端操作cookie的方法        +增删改查四个操作      设置cookie      ......
  • JavaWeb|01.环境配置
    环境搭建0x00概述ASP:微软的php:开发速度快,跨平台,代码简单;缺点是无法承载大访问量的访问JSP/Servlet:sun公司推出的B/S架构,可以承载三高问题(高并发,高性能,高可用)0x01t......
  • 爬虫 相关 requests模块介绍、requests发送get请求、requests携带参数、url编码解码、
    爬虫介绍爬虫是什么爬虫就是程序---》从互联网中,各个网站上,爬取数据[能浏览的页面才能爬],做数据清洗,入库爬虫的本质模拟方式http请求,获取数据---》入库......