资料来源于: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