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>