正则表达式

引言 正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 ‘a’ 和 任意个 ‘b’ ”,那么 ‘ab’, ‘abb’, ‘abbbbbbbbbb’ 都符合这个特征。 正则表达式可以用来: 验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。 用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。 用来替换,比普通的替换更强大。 正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。 一、 正则表达式规则 1.1 普通字符 字母、数字、汉字、下划线、以及后边章节中没有特殊定义的标点符号,都是"普通字符"。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。 1.2 简单的转义字符 一些不便书写的字符,采用在前面加 "\" 的方法。这些字符其实我们都已经熟知了。 表达式 可匹配 \r,\n 代表回车和换行符 \t 制表符 \\ 代表\本身 还有其他一些在后边章节中有特殊用处的标点符号,在前面加 "\" 后,就代表该符号本身。比如:^, $ 都有特殊意义,如果要想匹配字符串中 "^" 和 "$" 字符,则表达式就需要写成 "\^" 和 "\$"。 表达式 可匹配 \^ 匹配^符号本身 \$ 匹配$符号本身 \....

June 2, 2018 · 3 min · sunbufu

重定向与请求转发

一、请求转发与重定向 1. 重定向 客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问student_list.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求student_list.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。 浏览器->服务器:http请求 服务器->浏览器:接受请求并发送302状态码和新的url 浏览器->服务器:自动请求新的url 服务器->浏览器:寻找客户所需的资源响应到浏览器 2. 请求转发 客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的所有东西,在student_list中都能取出来,因此,student_list能把结果getAttribute()出来,getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。 浏览器->服务器:http请求 Note right of 服务器:服务器调用内部的一个方法在容器内完成请求处理和转发动作 服务器->浏览器:将客户所需资源发送到浏览器 二、请求转发与重定向在Java中的使用 servlet可以将发送给自己的某个请求转发给另外一个URL地址,这个地址可以是html、jsp、servlet或是其他的http地址。servlet的请求转发有三种方式: inclue(请求转发)方法,应用代码为 request.getRequestDispatcher("/url").include(request, response); 其中URL地址是某个http地址。include转发时,地址栏没有改变,是原来的地址,这个过程是在服务器端完成,Servlet和被包含的页面同时被输出。include() 方法执行玩后,下面的代码继续执行。 2. forward(请求转发)方法, request.getRequestDispatcher("/url").forward(request,response); 地址栏也不会改变,同样是在服务器端完成,但仅输出被转发的URL中的内容。forward()方法执行完后,它下面的代码将不再执行。 3. sendRedirect(重定向),只是客户重新发起一个请求,第二个请求指向其参数url。一般称做重定向,客户端的地址栏将改变为url值,是由客户端发起的第二次请求。参数中要写明具体的url地址,因为当客户端再次发送请求时,会直接请求web服务器根目录。要是要转发的一个html地址,它在WEB-INF文件夹下,那么要从servlet转发到这个 html地址,必须加上当前的web路劲名,这个路劲名可以通过request.getContextPath()获得,那么该转发代码可以为 response.sendRedirect(request.getContextPath()+"/login.html"); **注意:**重定向是浏览器向服务器重新发出请求,但转发相当于把request的范围扩大,例如: 在a界面有个连接<a href="b.jsp?id=1">,在b界面可以通过request.getAttribute("id")获得, 在b界面也有个连接<a href="c.jsp?name="123">,则在界面用request.getAttribute("id")就取不到值。这是每个连接就像一个重定向,相当于重新创建了一个request,当b->c时,a->b的request已经结束了。 接下来,在c的界面前加<jsp:forward page="d.jsp"/> ,那么变量name在c、d都有效,所以在d想取到参数name的值,不必要把参数值放到session里来扩大他的范围。

June 2, 2018 · 1 min · sunbufu

sql语句

一、SQL定义 SQL语言的全称是Structured Query Language,即结构化查询语言。 1、SQL分类 1)DQL(Data Query Language 数据查询语言) 查询语句只有一种,即SELECT语句。 2)DML(Data Manipulation Language 数据操作语言) 包括:INSERT、UPDATE、DELETE等常用语句。 3)DDL(Data Definition Language 数据定义语言) 包括:CREATE(创建),ALTER(修改),DROP(删除),RENAME(重命名),TRUNCAT(截断)等常用语句。 4)DCL(Data Control Language 数据控制语言) 包括:GRANT(权限分配),REVOKE(权限回收),TRANSACTION(事务处理)。 5)事务控制语句TRANSACTION(事务处理) 包括:COMMIT(提交)、ROLLBACK(回滚)等常用语句。 二、DQL(Data Query Language 数据查询语言) 1、列查询 1)单列查询 SELECT 字段 [AS] [别名] FROM 表名; --别名显示时,AS可以省略,例如: SELECT EMPNO AS "ID" FROM EMP;--"ID"双引号表示原样显示 2)多列查询 SELECT 字段 [AS] [别名], 字段2 [AS] [别名2] ... 字段n [AS] [别名n] FROM 表名; 3)所有列查询 SELECT * FROM 表名; 4)去重 关键字:DISTINCT(明显的,独特的) SELECT DISTINCT 字段 [AS] [别名] FROM 表名; 2、行查询(限制查询、条件查询) SELECT 字段, 组函数....

June 1, 2018 · 4 min · sunbufu