10.Java Web之Cookie、Kaptcha及正则表达式

1.Cookie

1)创建Cookie对象
2)在客户端保存Cookie
3)设置Cookie的有效时长
cookie.setMaxAge(60) ,设置cookie的有效时长为60秒
cookie.setDomain([attern);
cookie.setPath(uri);

4)Cookie的应用:
1、记住用户名和密码十天 setMaxAge(60 * 60 * 24 * 10);
2、十天面登录

1.1 Cookie实验

① 创建创建和使用Cookie

package com.example.cookies;

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("/cookie01")
public class CookieServlet01 extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建一个Cookie对象
        Cookie cookie = new Cookie("uname","jim");
        //2.将这个Cookie对象保存到浏览器端
        response.addCookie(cookie);
        request.getRequestDispatcher("hello01.html").forward(request,response);
    }
}

② 创建hello01.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Cookie 保存成功了</h1>
</body>
</html>

③ 启动容器,在浏览器中代开开发者工具(f12),然后访问:http://localhost:8080/cookie01
在request和response中可以找到cookie

2.Kaptcha

1、为什么需要验证码?
2、Kaptcha如何使用:
①添加jar包
②在web.xml中注册KaptchaServlet,并设置验证图片的相关属性
③在html页面上编写一个img标签,然后设置src等于KaptchaServlet对应的url-pattern

3.正则表达式

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匹配字母或数字或下划线等价于[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次

5)使用符号:|
a|d 表示a或者b

3.1 正则表达式实验

3.1.1 正则表达式的使用
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var reg = /abc/;//new RegExp("abc");
        var str = "abcdefg";
        var flag = reg.test(str);
        console.log(flag);//true
    </script>
</head>
<body>

</body>
</html>
<!--
正则表达式的使用三步骤:
1.定义正则表达式对象
    正则表达式定义有两个方式:
    1)对象形式
        var reg = new RegExp("abc");
    2)直接量形式
        var reg = /abc/;
2.定义待效验的字符串
3.效验
-->
3.1.2 匹配的模式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var reg = /o/;
        var str = "abcohijoklO";
        str = str.replace(reg,'_');
        console.log(str);//abc_hijoklO

        reg = /o/g; //g 表示匹配的模式,表示全文匹配
        str = "abcohijoklO";
        str = str.replace(reg,'_');
        console.log(str);//abc_hij_klO

        reg = /o/gi; //g 表示匹配的模式,表示全文匹配;i表示忽略大小写匹配
        str = "abcohijOklO";
        str = str.replace(reg,'_');
        console.log(str);//abc_hij_kl_

        reg = /hello$/; // m表示多行匹配
        str = "hello\nworld";
        flag = reg.test(str);
        console.log(flag);//false
    </script>
</head>
<body>

</body>
</html>
3.1.3 元字符
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
      <script type="text/javascript">
            var reg = /\w/gim;
            var str = "a>b_c|d\nf?g";
            str = str.replace(reg,'A');
            console.log(str);//A>AAA|A\nA?A

            var flag = reg.test(str);
            console.log(flag);//true ,这要有一个符合规则就返回true

            reg = /\s/gim; // \s 表示匹配空白符,例如匹配翰皇府、制表符...
            var str = "a>b_c|d\nf?g";
            str = str.replace(reg,'A');
            console.log(str);//a>b_c|dAf?g

            reg = /\d/gim; // \d表示匹配数字, \D表示匹配非数字
            var str = "a>5";
            str = str.replace(reg,'A');
            console.log(str);//a>A

            reg = /\D/gim; // \d表示匹配数字, \D表示匹配非数字
            var str = "a>5";
            str = str.replace(reg,'A');
            console.log(str);//AA5

            reg = /\b/gim; // \b表示匹配单词的开始和结束
            var str = "hello world";
            str = str.replace(reg,'A');
            console.log(str);//AhelloA AworldA

            reg = /^a/gim; // ^表示匹配开始 $表示匹配结束
            var str = "ahello worldb";
            str = str.replace(reg,'A');
            console.log(str);//Ahello worldb

            reg = /b$/gim; // ^表示匹配开始 $表示匹配结束
            var str = "ahello worldb";
            str = str.replace(reg,'A');
            console.log(str);//ahello worldA
      </script>
</head>
<body>

</body>
</html>
3.1.4 []集合
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var reg = /[abc]/gim; // []表示集合,表示只要有a或者有b或者有c都匹配,如果没有[]表示必须精确匹配abc
        var str = "abdsfcdefg";
        str = str.replace(reg,"A");
        console.log(str);//AAdsfAdefg

        reg = /[^abc]/gim; // [^] 中括号中的^表示取反
        str = "abdsfcdefg";
        str = str.replace(reg,"A");
        console.log(str);//abAAAcAAAA

        reg = /[a-g]/gim; // [ - ] 中括号中的-表示范围
        str = "abhiegdekfg";
        str = str.replace(reg,"A");
        console.log(str);//AAhiAAAAkAA
    </script>
</head>
<body>

</body>
</html>
3.1.5 出现次数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var reg = /[l]{2,4}/gim;
        var str = "ablllhellllloworldo";
        str = str.replace(reg,"_");
        console.log(str);//ab_he_loworldo
    </script>
</head>
<body>

</body>
</html>
3.1.6 |符号
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var reg = /a|d/gim;
        var str = "abcdefg";
        str = str.replace(reg,"_");
        console.log(str);//_bc_efg
    </script>
</head>
<body>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值