-
2019-12-05 18:23:19
今天遇到
@java.io.IOException: java.io.FileNotFoundException: C:\Users\Administrator\AppData\Local\Temp\tomcat.3424444179474822115.80\work\Tomcat\localhost\ROOT"c:\images"\2019\12\05\7252660b-df45-40b9-bfbc-2c7789baae26.jpg (文件名、目录名或卷标语法不正确。)除此之外我的还有一个问题就是我的image.properties文件中语句中是不能加引号的,难受@_@
image.localDir=“c:/images”
image.httpUrl=“http://image.jt.com”原因是windows下的文件名格式和java的格式不正确,
例如:
在Windows下的路径为: C:\images\abc.jpg
而java可以读取的格式为: C:/images/abc.jpg所以需要先将Windows中的文件路径转换为java中可识别的路径.作如下处理:
String str="D:\\tfs\\235396.jpg"; String location=str.replace("\\\\", "/"); String[] strings=storageClient.upload_file(location, "jpg", null);
Windows 中文件夹命名规则是:
① 文件名或文件夹名可以由1~256个西文字符或128个汉字(包括空格)组成,不能多于256个字符。
② 文件名可以有扩展名,也可以没有。有些情况下系统会为文件自动添加扩展名。一般情况下,文件名与扩展名中间用符号“.”分隔。
③ 文件名和文件夹名可以由字母、数字、汉字或~、!、@、#、$、%、^、&、( )、_、-、{}、’等组合而成。
④ 可以有空格,可以有多于一个的圆点。
⑤ 文件名或文件夹名中不能出现以下字符:\、/、:、*、?、"、<、>、| 。
⑥ 不区分英文字母大小写。原文链接:https://blog.csdn.net/fengkungui/article/details/67637437
更多相关内容 -
HTTP网页URL链接的语法格式最详细的分析与介绍
2018-09-27 16:00:30锚部分也不是一个URL必须的部分,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到) 例子:下面的URL中,代表网页si.html的print位置,浏览器读取这个URL后,会自动将print位置滚动至可视区域,不需要用户...HTTP简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。
HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
主要特点
1、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
2、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
3.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
4.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
5、支持B/S及C/S模式。HTTP之URL
HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息
URL,全称是UniformResourceLocator, 中文叫统一资源定位符,是互联网上用来标识某一处资源的地址。以下面这个URL为例,介绍下普通URL的各部分组成:
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name
从上面的URL可以看出,一个完整的URL包括以下几部分:
1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符例子:file 资源是本地计算机上的文件。格式file:///,注意后边应是三个斜杠。
ftp 通过 FTP访问资源。格式 FTP://
gopher 通过 Gopher 协议访问该资源。
http 通过 HTTP 访问该资源。 格式 HTTP://
https 通过安全的 HTTPS 访问该资源。 格式 HTTPS://
mailto 资源为电子邮件地址,通过 SMTP 访问。 格式 mailto:
MMS 通过 支持MMS(流媒体)协议的播放该资源。(代表软件:Windows Media Player)格式 MMS://
ed2k 通过 支持ed2k(专用下载链接)协议的P2P软件访问该资源。(代表软件:电驴) 格式 ed2k://
Flashget 通过 支持Flashget:(专用下载链接)协议的P2P软件访问该资源。(代表软件:快车) 格式 Flashget://
thunder 通过 支持thunder(专用下载链接)协议的P2P软件访问该资源。(代表软件:迅雷) 格式 thunder://
news 通过 NNTP 访问该资源。
2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用,有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格式:username:password@hostname)
2.1用户名和密码:很多服务器都要求输入用户名和密码才会允许用户访问数据,如FTP服务器。
例子:ftp://joe:joepasswd@ftp.prep.edu/pub/name
joe是用户名、joepasswd是密码
3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口
例子:很多HTTP的默认端口号是80。比如,130.32.12.34:800,这里的IP地址是主机名,端口是800
4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。
例子:本例中的虚拟目录是“/news/”
5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。
例子:本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名index.htm
6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到)
例子:下面的URL中,代表网页si.html的print位置,浏览器读取这个URL后,会自动将print位置滚动至可视区域,不需要用户自己翻到该位置
http://www.cheng.cn/si.html#print
7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
例子:很多资源,比如数据库服务、搜索引擎,都可以通过提问题或进行查询来缩小请求资源的范围。或者为了向应用程序提供它们所需要的输入参数,以便正确地与服务器进行交互。
http://www.cheng.cn/si.html?name=csh&age=24
查询组件有两个名/值对:name=csh和age=24
URI和URL的区别
URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。
Web上可用的每种资源如HTML文档、图像、视频片段、程序等都是一个来URI来定位的
URI一般由三部组成:
①访问资源的命名机制
②存放资源的主机名
③资源自身的名称,由路径表示,着重强调于资源。URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。
采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。URL一般由三部组成:
①协议(或称为服务方式)
②存有该资源的主机IP地址(有时也包括端口号)
③主机资源的具体地址。如目录和文件名等URN,uniform resource name,统一资源命名,是通过名字来标识资源,比如mailto:java-net@java.sun.com。
URI是以一种抽象的,高层次概念定义统一资源标识,而URL和URN则是具体的资源标识的方式。URL和URN都是一种URI。笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。上面的 mailto、news 和 isbn URI 都是 URN 的示例。
在Java的URI中,一个URI实例可以代表绝对的,也可以是相对的,只要它符合URI的语法规则。而URL类则不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。
在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。
相反的是,URL类可以打开一个到达资源的流。HTTP之请求消息Request
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
Http请求消息结构.png
- 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本。
Get请求例子,使用Charles抓取的request:
GET /562f25980001b1b106000338.jpg HTTP/1.1
Host img.mukewang.com
User-Agent Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36
Accept image/webp,image/*,*/*;q=0.8
Referer http://www.imooc.com/
Accept-Encoding gzip, deflate, sdch
Accept-Language zh-CN,zh;q=0.8
第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本.
GET说明请求类型为GET,[/562f25980001b1b106000338.jpg]为要访问的资源,该行的最后一部分说明使用的是HTTP1.1版本。
第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息
从第二行起为请求头部,HOST将指出请求的目的地.User-Agent,服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等
第三部分:空行,请求头部后面的空行是必须的
即使第四部分的请求数据为空,也必须有空行。
第四部分:请求数据也叫主体,可以添加任意的其他数据。
这个例子的请求数据为空。
POST请求例子,使用Charles抓取的request:
POST / HTTP1.1
Host:www.wrox.com
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Content-Type:application/x-www-form-urlencoded
Content-Length:40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley
第一部分:请求行,第一行明了是post请求,以及http1.1版本。
第二部分:请求头部,第二行至第六行。
第三部分:空行,第七行的空行。
第四部分:请求数据,第八行。HTTP之响应消息Response
一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。
HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
http响应消息格式.jpg
例子
HTTP/1.1 200 OK
Date: Fri, 22 May 2009 06:07:21 GMT
Content-Type: text/html; charset=UTF-8
<html>
<head></head>
<body>
<!--body goes here-->
</body>
</html>
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。
第一行为状态行,(HTTP/1.1)表明HTTP版本为1.1版本,状态码为200,状态消息为(ok)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第二行和第三行为消息报头,
Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
HTTP之状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
常见状态码:
200 OK //客户端请求成功
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
更多状态码http://www.runoob.com/http/http-status-codes.html
HTTP请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。GET 请求指定的页面信息,并返回实体主体。
HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
HTTP工作原理
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:
1、浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
2、解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
3、浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
4、服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
5、释放 TCP连接;
6、浏览器将该 html 文本并显示内容;
GET和POST请求的区别
GET请求
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive
注意最后一行是空行
POST请求
POST / HTTP/1.1
Host: www.wrox.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
name=Professional%20Ajax&publisher=Wiley
1、GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。
POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据
因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变
2、传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。
而在实际开发中存在的限制主要有:
GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系 统的支持。
因此对于GET提交时,传输数据就会受到URL长度的 限制。
POST:由于不是通过URL传值,理论上数据不受 限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。
3、安全性
POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击
4、Http get,post,soap协议都是在http上运行的
(1)get:请求参数是作为一个key/value对的序列(查询字符串)附加到URL上的
查询字符串的长度受到web浏览器和web服务器的限制(如IE最多支持2048个字符),不适合传输大型数据集同时,它很不安全(2)post:请求参数是在http标题的一个不同部分(名为entity body)传输的,这一部分用来传输表单信息,因此必须将Content-type设置为:application/x-www-form- urlencoded。post设计用来支持web窗体上的用户字段,其参数也是作为key/value对传输。
但是:它不支持复杂数据类型,因为post没有定义传输数据结构的语义和规则。(3)soap:是http post的一个专用版本,遵循一种特殊的xml消息格式
Content-type设置为: text/xml 任何数据都可以xml化。Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.
我们看看GET和POST的区别
-
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
- GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
-
JSP基本语法
2020-05-29 18:03:09指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何输出到网页中的内容,也就是说指令标识对客户端浏览器是不可见的。 JSP指令标识的语法格式如下: <%@ 指令名1.JSP页面的基本构成
JSP页面是指拓展名为
.jsp
的文件。
在一个JSP页面中,可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。但这些内容并不是一个JSP页面所必需的。下面将通过一个简单的JSP页面说明JSP页面的构成。2.指令标识
指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何输出到网页中的内容,也就是说指令标识对客户端浏览器是不可见的。
JSP指令标识的语法格式如下:<%@ 指令名 属性1="属性值" 树形2="属性值"......%>
- 指令名:用于指定指令名称,在JSP中包含page,include和taglib3条指令。
- 属性:用于指定属性名称,不同的指令包含不同的属性。一个指令可以设置多个属性,各属性之间用分号隔离。
- 属性值:用于指定属性值。
1.page指令
这是JSP页面最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换为相应的Java程序代码。
page
指令的语法格式如下:<%@ page 属性1="属性值1" 属性2="属性值2"...%>
page指令提供了language、contentType、import、autoFlush、buffer、errorPage、extends、info、isELIgnored、isErrorSafe和session共13个属性。
下面对常用的属性进行介绍:属性 作用 language 设置JSP页面使用的语言 extends 设置JSP页面继承的Java类,所有JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servlet都可以继承制定的父类。 import 设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的类包。 pageEncoding 用于定义JSP页面的编码格式,也就是指定文件编码。JSP页面中的所有代码都使用该属性指定的字符集。 contentType 设置JSP页面的MIME类型和字符编码,浏览器会据此显示页面内容。 session 指定JSP页面是否使用HTTP的session会话对象。其属性值是boolean类型,可选值为true和false。 buffer 设置JSP的out输出对象使用的缓冲区大小,默认大小是8KB,且单位只能使用KB。 autoFlush 用于指定当缓冲区已满时,自动将缓冲区中的内容输出到客户端。该属性的默认值为true。如果设置成false,则当缓冲区已满时抛出 "JSP Buffer overflow"
异常。isErrorPage 该属性可以将当前JSP页面设置成错误处理页面来处理另一个JSP页面的错误,也就是异常处理,这意味着当前JSP页面业务的改变。 errorPage 指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true。errorPage属性的属性值是一个url字符串。 2.include指令
通过include指令可以在JSP页面中包含另一个JSP页面,不过该指令是静态包含指令,也就是说被被包含文件中的所有内容会被原样包含到该JSP页面中,即使被包含文件中有JSP代码,在包含时不会被编译执行。使用include指令最终将生成一个文件,所以在被包含和包含的文件中不能有相同名称的变量。
include指令的语法格式如下:<%@ include file="path"%>
该指令只有一个file属性,用于指定要包含文件的路径。该路径是相对路径,也可以是绝对路径,但不可以是通过<%=%>表达式所代表的文件。
3.taglib指令
在JSP文件中,可以通过taglib指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。在页面中引用标签库后,就可以通过前缀来引用标签库中的标签。taglib指令的语法格式如下:
<%@ taglib prefix="tagPrefix" uri="tagURI"%>
- prefix属性:用于指定标签的前缀。该前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw。
- uri属性:用于指定标签库文件的存放位置。
例:在页面中引用JSTL中的核心代码库,实例代码如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3.脚本标识
JSP中的脚本标识包括JSP表达式(Expression)、声明标识(Declaration)和脚本程序(Scriptlet)。通过这些标识,在JSP页面中可以像编写Java程序一样来声明变量、定义函数或进行各种表达式的运算。
1.JSP表达式
JSP表达式用于向页面中输出信息,其语法格式如下:
<% = 表达式%>
- 表达式:可以是任何Java语言的完整表达式。该表达式的最终运算结果将转换为字符串。
例:使用JSP表达式在页面中输出信息,示例代码如下:
<%String manager="mr"; %> <!--定义保存管理员名的变量--> 管理员:<%=manager %> <!--输出结果为:管理员: mr--> <%="管理员:"+manager %> <!--输出结果为:管理员: mr --> <%= 7+6 %> <!--输出结果为:13 --> <%String url="head01.jpg";%><!--定义保存文件名称的变量--> <img src="images/<%url %>"> <!--输出结果为:<img src="images/head01.jpg">-->
2.声明标识
声明表示用于在JSP页面中定义全局的变量或方法。通过声明表示定义的变量和方法可以被整个JSP页面访问,所以通常使用该标识定义整个JSP页面都需要引用的变量或方法。
声明标识的语法格式如下:<%! 声明变量或方法的代码 %>
例:通过声明标识声明一个全局变量和全局方法:
<%! int number = 0;//声明全局变量 int count(){//声明全局方法 number++;//累加number return number;//返回number的值 } %>
3.代码片段
所谓代码片段就是在JSP页面中嵌入的Java代码或脚本代码。代码片段将在页面请求的处理期间被执行,通过Java代码可以定义变量或流程控制语句等;而通过脚本代码可以应用JSP的内置对象在页面输出内容、请求处理和响应、访问session会话等。代码片段的语法格式如下:
<% Java代码或脚本代码 %>
代码片段的使用比较灵活,他所实现的功能是JSP表达式无法实现的。
例:通过代码片段和JSP表达式在JSP页面上输出九九乘法表。<body> <% String str=""; for(int i=0;i<=9;i++){ for(int j=0;j<=9;j++) { str+=j+"x"+i+"="+j*i; str+=" "; } str+=<"br">; } %> <div> <ul> <li id="title">九九乘法表</li> <li><%=str%><!--输出九九乘法表--></li> <ul> </div> </body>
4.注释
1.HTML中的注释
HTML中的注释不会被显示在网页中,但是在浏览器中选择查看网页源代码时还能够看到注释信息的。
HTML中注释的语法格式如下:<!--注释文本-->
2.隐藏注释
在文档中添加的HTML注释虽然在浏览器中不显示,但是用户可以通过查看源代码看到这些注释信息,所以严格来说,这种注视是不安全的。不过JSP还提供了一种隐藏注释,这种注释不仅在浏览器中看不到,而且在查看HTML源代码时也看不到,所以这种注释的安全性比较高。
隐藏注释的语法格式如下:<%-- 注释内容 --%>
3.动态注释
由于HTML注释对JSP嵌入的代码不起作用,因此可以利用他们的组合构成动态的HTML注释文本。
例如:在JSP页面中添加动态注释,代码如下:<!--<%=new Date()%>-->
4.代码片段中的注释
// 注释内容 //1.单行注释 /* 注释内容*/ //2.多行注释 /** 提示信息 */ //3.提示文档注释
动作标识
JSP动作标识是在请求处理阶段按照在页面中出现的顺序被执行的,用于实现某些特殊用途(如操作JavaBean、包含其他文件、执行请求转发等)的标识。
1.操作JavaBean的动作标识
操作JavaBean实例并设置JavaBean各属性值,有以下两种语法格式。
- 不存在Body的语法格式
<jsp::useBean id="实例名" scope="范围" class="完整类名" beanName="完整类名" type="数据类型"/> <jsp::setProperty name="JavaBean实例名" property="属性名" value="属性值" param="请求参数"/> ...<!--多个字动作标识<jsp::setProperty>-->
- 存在Body的语法格式
<jsp::useBean id="实例名" scope="范围" class="完整类名" beanName="完整类名" type="数据类型"/> <jsp::setProperty name="JavaBean实例名" property="属性名" value="属性值" param="请求参数"/> ...<!--多个字动作标识<jsp::setProperty>--> </jsp::useBean>
这两种语法格式的区别是:在页面中应用
<jsp::useBean>
标识创建一个JavaBean实例时,如果该JavaBean是第一次被实例化,那么对于第二种语法格式,标识体内的内容会被执行,若已经存在指定的JavaBean实例,则标识体内的内容就不再被执行了。而对于第一种语法格式,无论在指定的范围内是否已经存在一个指定的JavaBean实例,<jsp::useBean>
标识后边的<jsp::setProperty>
子标识都会被执行。<jsp::useBean>
标识的属性如下表:
属性名称 功能描述 id 用于指定创建的JavaBean实例的实例名,其属性值为合法的Java标识符 scope 用于指定JavaBean实例的有效范围,其值可以是page(当前页面)、request(当前请求)、session(当前会话)和application(当前应用)4个,默认值是page。 class 可选属性,用于指定一个完整的类名,包括该类所存在的路径。 type 用于指定所创建的JavaBean实例的类型,可以与class属性或beanName属性的值完全相同 beanName 可选属性,用于指定一个完整的类名,该类名中包括完整的包名。该属性与type属性一起使用。 - scope属性的可选值
|值| 说明 |
|–|--|
| page | 指定所创建的JavaBean实例只能在当前的JSP文件中使用,包括通过include指令静态包含的页面 |
|request|指定所创建的JavaBean实例可以在请求范围内进行存取。一个请求的生命周期是从客户端向服务器发出一个请求到服务端响应这个请求给用户结束,所以请求结束后,存储在其中的JavaBean实例也就失效了|
|session|指定所创建的JavaBean实例的有效范围为session。session是当前用户访问web应用时,服务器为用户创建的一个对象服务器通过session的ID值来区分用户。针对某一个用户而言,该范围的对象可被多个页面共享。|
|qpplication|指定所创建的JavaBean实例的有效范围从服务器启动开始到服务器关闭结束。application对象是在服务器启动时创建,被多个用户所共享,所以该application对象的所有用户都可以访问该JavaBean实例。| <jsp::setProperty>
子标识的常用属性
属性名称 功能描述 name 必要属性,用于指定一个JSP范围内的JavaBean实例名,该属性的值常与 <jsp::useBean>
的id属性相同。指定实例化后,<jsp::setProperty>
标识将会按照page、request、session和application的顺序来查找这个JavaBean实例,直到第一个实例被找到。若任何范围不存在这个JavaBean实例,则会抛异常property 必要属性,用于指定JavaBean中的属性,其值可以是" * “或指定JavaBean中的属性。当取值为” * "时,则request请求中的所有参数的值将被一一赋给JavaBean中与参数具有相同名字的属性;若取值为JavaBean中的属性,则会将request请求终于该属性同名的一个参数的值赋给这个JavaBean属性,若此时指定了param属性,那么请求中参数的名称和JavaBean属性名可以不同 value 用于指定具体的属性值,通常与property属性一起使用,但是该属性不能与param属性一起使用 parma 用于指定一个request请求中的参数。通过该参数,可以允许将请求中的参数赋值与JavaBean属性不同名的属性。 2.获取JavaBean实例各属性的值
获取JavaBean实例各属性的值可以通过jsp::getProperty标识实现。其语法格式如下:
<jsp:getProperty name="JavaBean实例名" property="属性名"/>
- name属性:必要属性,用于指定一个JSP范围内的JavaBean实例名,该属性的值通常与
<jsp:useBean>
的id属性相同。指定实例后,<jsp:getProperty>
标识将按照page、request、session和application的顺序来查找这个JavaBean实例,直到第一个实例被找到。若任何范围内都不存在这个JavaBean实例,将会抛出异常。 - property属性:必要属性,用于指定要获取其属性值的JavaBean的属性。如果指定的属性为name,那么在JavaBean中必须存在一个getName()方法,否则会抛出下边的异常。
Cannot find any information on property 'name' in a bean of type 'com.wgh.UserInfo'
2.包含外部文件的动作标识
<jsp:include>
通过JSP动作标识jsp:include,可以向当前页面中包含其他的文件。被包含的文件可以是动态文件,也可以是静态文件。
jsp:include动作标识的语法格式如下:<jsp:include page="url" flush="false/true"/> 或 <jsp:include page="url" flush="false/true"> 子动作标识<jsp:param> </jsp:include>
- page属性:用于指定被包含文件的相对路径。
- flush属性:可选属性,用于设置是否刷新缓冲区,默认值为false。如果设置为true,则在当前页面输出使用了缓冲区的情况下先刷新缓冲区,然后再执行包含文件。
- 子动作标识jsp:param:用于向被包含的动态页面中传递参数。
3.执行请求转发的动作标识
<jsp:forward>
通过jsp:forward动作标识可以将请求转发到其他的Web资源,例如另一个JSP页面,HTML页面、Servlet等。执行请求转发后,当前页面将不再执行,而是去执行该标识指定的目标页面。
<jsp:forward>
动作标识的语法格式如下:<jsp:forward page="url"/> 或 <jsp:forward page="url"> 子动作标识<jsp:param> </jsp:forward>
- page属性:用于指定请求转发的目标页面。该属性可以是一个指定文件路径的字符串,也可以是表示文件路径的JSP表达式,但是请求被转向的目标文件必须是内部的资源,即当前应用中的资源。
- 子动作标识jsp:param:用于向转向的目标文件中传递参数。
设置参数的子动作标识
<jsp:param>
JSP的动作标识jsp:param可以作为其他标识的子标识,用于为其他标识传递参数。语法格式如下:
<jsp:param name="参数名" value="参数值"/>
- name属性:用于指定参数名称。
- value属性:用于设置对应的参数值。
例如:通过jsp:param标识为jsp:forward标识指定参数,可以使用下面的代码:
<jsp:forward page="modify.jsp"> <jsp:param name="userId" value="7"/> </jsp:forward>
上边的代码实现了将请求转到
modify.jsp
页面的同时传递了参数userId,其参数为7. -
百度高级搜索语法
2021-01-30 16:06:41采用高级语法进行搜索。具体语法如下: intitle:搜索范围限定在网页标题 网页标题通常是对网页内容提纲挈领式的归纳。把查询内容范围限定在网页标题中,有时能获得良好的效果。 语法结构: 内容 intitle:标题中要...方法一
嫌麻烦或记不住的话可以采用这种方法。在百度首页直接点击右上角的
设置
→高级搜索
,在弹出的对话框中按提示填入搜索信息。方法二
采用高级语法进行搜索。具体语法如下:
intitle:搜索范围限定在网页标题
网页标题通常是对网页内容提纲挈领式的归纳。把查询内容范围限定在网页标题中,有时能获得良好的效果。
语法结构:
内容 intitle:标题中要包含的内容
例如:
web学习 intitle:安全
注意:
intitle:
和后面的关键词之间不要有空格,下同。
site:搜索范围限定在特定站点中
如果知道某个站点中有自己需要找的东西,就可以把搜索范围限定在这个站点中,提高查询效率。
语法结构:
你要查找的信息 site:网站地址
例如:
百度知道 site:www.y80s.com
注意:
-
site:
后面跟的站点域名,不要带http://
。 -
site:
和站点名之间,不要带空格。
inurl:搜索范围限定在url链接中
网页 URL 中的某些信息,常常有某种有价值的含义。您如果对搜索结果的 URL 做某种限定,可以获得良好的效果。
语法结构:
你要查找的信息 inurl:相关信息(必须是字母)
例如:
PS视频教程 inurl:video
注意:
- 查询词
PS视频教程
是可以出现在网页的任何位置,而video
则必须出现在网页包含的url链接中。
双引号“”和书名号《》:精确匹配
双引号
查询词加上双引号“”则表示查询词不能被拆分,在搜索结果中必需完整出现,可以对查询词精确匹配。如果不加双引号“”经过百度分析后可能会拆分。
书名号
书名号是百度独有的一个特殊查询语法。在其他搜索引擎中,书名号会被忽略,而在百度,中文书名号是可被查询的。
加上书名号的查询词,有两层特殊功能,一是书名号会出现在搜索结果中;二是被书名号扩起来的内容,不会被拆分。
书名号在某些情况下特别有效果,例如查名字很通俗和常用的那些电影或者小说。比如,查电影“手机”,如果不加书名号,很多情况下出来的是通讯工具——手机,而加上书名号后,《手机》结果就都是关于电影方面的了。
filetype:指定文件类型
用这个语法来对搜索对象做限制,冒号后是文档格式,如PDF、DOC、XLS等。例:
霍金 黑洞 filetype:pdf
“-”:去除所有包含特定关键词的网页
语法结构:
要查找的信息 -你要去掉的信息
例:
神雕侠侣 -电视剧
比如说查找神雕侠侣武侠小说方面的内容,却发现有很多关于电视剧的网页,可以使用这个语法去掉电视剧方面的信息。
注意:
-
前一个关键词,和减号之间必须有空格,否则,减号会被当成连字符处理,而失去减号语法功能。
-
减号和后一个关键词之间,有无空格均可。
intext:只在网页正文搜索
语法结构:
intext:关键词
也就是忽略了在标题、URL 等之中的文字。
注意:
- 只在网页正文搜索不等于标题和 URL 中一定不会出现你搜索的关键词,只不过搜索引擎不对标题和 URL 进行搜索而已。
folder:指定文件夹搜索
好像是百度硬盘搜索1.1.1的 folder 语法。
语法结构:
关键词 folder:文件所在路径
硬盘搜索就会自动搜索指定文件所在路径里面所有和关键词相关的搜索结果。
比如输入:
九寨沟 folder:C:\旅游照片
所有C盘“旅游照片”文件夹中的九寨沟图片都被显示出来。
“|”:扩大检索范围
语法结构:
文字 (正在连接 | 开始连接)
这里的符号“|”表示两者任意一个出现即可,是布尔语法中“逻辑或”的表现方式。
文字 (正在连接 | 开始连接)
的检索效果,相当于文字 正在连接
加上文字 开始连接
。如果你想用多种说法来搜索内容,可以使用“|”来扩大检索范围。
例:
(速度与激情4 | 速度与激情IV) (速度与激情2 | 速度与激情II) 电影
还可以使用双引号,精确匹配:
("速度与激情" | "速度与激情I") 电影
“+”:包含特定查询词
用加号“+”语法可以帮您在搜索结果中必须包含特定的关键词所有网页。
例子:
电影 +qvod
查询词“电影”的搜索结果中必须包含“qvod”。
邮件搜索语法:subject、to、from
对于每天要处理很多邮件的用户,有了百度硬盘搜索1.1.1提供的邮件搜索语法:subject、to、from无异于如虎添翼。
只要输入“subject:文字”即可找到主题中含有“文字”的电子邮件,例如输入:
subject:头 from:claire@email.com
就可以找到Claire发的、主题中含有“头”的email。
输入
工作报告 to:peter@company.com
就可以找到发给Peter的所有工作报告邮件了。
参考链接
-
一份详细的Google hacking语法(Google搜索语法)
2019-11-01 16:00:03Google Hacking语法 Google hacker (Google黑客)是利用GOOGLE提供的搜索功能查找黑客们想找到的信息.一般是查找网站后台,网管的个人信息,也可以用来查找某人在网络上的活动. Google hacker 一般是做为黑客在入侵时... -
【网络通信与信息安全】之深入解析从输入一个URL到页面加载完成的过程
2022-03-24 16:08:17从输入一个 URL,然后按下回车到显示页面,中间发生了什么?这是一道经典的面试题,不光前端面试会问到,后端面试也会被问到。这道题没有一个标准的答案,它涉及很多的知识点,面试官会通过这道题了解你对哪一方面的... -
google搜索语法与技巧
2018-09-20 18:43:13将“+”后面的关键词强制包含到搜索结果中 2、-减号——排除关键词或者网站 在某个字词或网站网址前添加短横 (-) 可排除所有包含该字词的搜索结果。在搜索“汽车品牌美洲虎”和“动物美洲虎”这类同义词时,此功能... -
【一点资讯】python后端开发工程师考证试题 www.yidianzixun.com
2020-12-10 10:42:38python开发工程师考证试题选择题题目关于 Python 程序格式框架的描述,以下选项中错误的是 ( A )A: Python 语言不采用严格的“缩进”来表明程序的格式框架B: Python 单层缩进代码属于之前最邻近的一行非缩进代码,... -
详解搜索引擎的高级搜索语法指令
2018-12-18 21:49:20用好搜索引擎是每个程序员的必修课,这里介绍一些常用的搜索引擎高级搜索语法指令。 1、site: site:是SEO最熟悉的高级搜索指令(例如:site:www.mahaixiang.cn),用来搜索某个域名下的所有被搜索引擎收录的文件,... -
URL中参数中的加号
2017-01-06 19:19:39问题:当URL中参数值中有加号时,java后台获取该参数后,加号消失解决方法:在js中,拼接URL地址时,用encodeURIComponent对该参数进行编码;后台直接用request.getParameter获取,无需解码!!参考文章: ... -
[Python从零到壹] 一.为什么我们要学Python及基础语法详解
2020-08-23 14:59:49所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。在这个喧嚣的时代,很多技术或概念会不断兴起,我希望你能沉下心来去学习,不要... -
URL详解
2017-04-05 20:07:36一:URL举例 就以下面这个URL为例,介绍下普通URL的各部分组成 ...从上面的URL可以看出,一个完整的URL包括以下几部分: 1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。 -
Thymeleaf 标准表达式语法
2017-05-26 13:57:21URL是Web应用程序模板中的一等公民,Thymeleaf标准方言有一个特殊的语法,@语法:@{…}。 有不同类型的URL,分别如下: 绝对 URL: http://www.thymeleaf.org 相对 URL 相对于页面的:user/login.... -
[Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
2020-11-08 20:23:07所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习... -
github ReadMe语法
2018-07-13 17:49:40GitHub的markdown语法在标准的markdown语法基础上做了扩充,称之为GitHub Flavored Markdown。简称GFM,GFM在GitHub上有广泛应用,除了README文件外,issues和wiki均支持markdown语法。 Author:果冻虾仁 .... -
Markdown 入门及语法详细指南 ★
2021-08-01 14:35:19独立软件类:下载到自己机器上使用的独立产品,可以编辑本地文件,比如 Mou、Typora 等(以下的 Markdown语法示例截图中 使用的是 MarkdownPad、Typora及CSDN 编辑器显示效果)。 插件类:它自己本身是不能独立使用... -
urlib常见异常处理与url解析
2018-10-17 09:40:43通常引起URLError的原因是:无网络连接(没有到目标服务器的路由)、访问的目标服务器不存在。在这种情况下,异常对象会有reason属性(是一个(错误码、错误原因)的元组) 1)访问成功时: from urllib import ... -
五大常用百度高级搜索语法
2016-09-22 14:36:42经常使用百度搜索查找内容的朋友现在有福音了,“高级搜索语法”可以帮大家迅速找到...小编今天为大家介绍五种常用的百度高级搜索语法,即把搜索范围限定在网页标题中、特定站点中、URL链接中、精确匹配和不包括特定词。 -
Java 正则表达式:语法讲解和常用表达式汇总
2019-03-14 15:34:16正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 -
Vue知识(一)Vue基础语法
2021-05-03 16:16:46模板template 二、Vue基础语法 mustache语法中,不仅仅可以直接写变量,也可以写简单的表达式。 Vue.js的指令是以v-开头的,它们作用于HTML元素,指令提供了一些特殊的特性,将指令绑定在元素上时,指令会为绑定的... -
JSX语法使用详解——终极版
2018-09-14 17:11:20一、基础 1、JSX是什么 JSX是一种像下面这样的...它是一种JavaScript语法扩展,在React中可以方便地用来描述UI。 本质上,JSX为我们提供了创建React元素方法(React.createElement(component, props, ...childre... -
前端基础——URL详解
2020-11-23 21:55:19从上面的URL可以看出,一个完整的URL包括以下几部分: 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"... -
Kibana查询语法详解
2018-03-31 17:33:47注意:Lucene查询语法不适合在程序中使用,程序中使用可以调用Lucene-API,API提供了丰富功能来组合定制你所需要的查询器,查询语法是为手工输入高级查询设计的,而不是为程序拼接语法串而设计的。 1. 简单说明 ... -
PySpark SQL常用语法
2019-05-28 11:41:32from https://www.jianshu.com/p/177cbcb1cb6f PySpark SQL常用语法 <!-- 作者区域 --> <div class="author"> <a class="avatar" href="/u/fc7499020f49"> <img s... -
Google高级搜索技巧之高级语法查询指令
2018-07-15 13:27:05Google高级搜索技巧之高级语法查询指令 [ intitle: ] 按标题搜索帮助google限定了你搜索的结果,只有那些标题含有你指定的关键词的页面会返回给你。例如“intitle: login password” 会返回标题含有login,而... -
postgresql同oracle语法差异
2016-09-02 11:16:47很多内容是网上查的资料,我只是整理下,...用这个工具可以将一些oracle与pgsql的语法差异自动处理下,但不是全部,剩下的需要手工修改。 ORACLE语法 → PostgreSQL语法 1、VARCHAR2 → varchar 2、DATE → -
iOS URL Schemes 使用详解 什么是 URL Schemes
2017-01-04 10:35:32URL Schemes 使用详解 -
Protobuf 语法指南简析(proto3)
2019-08-21 10:34:00Protobuf 语法指南简析(proto3) 前言 参考官方Language Guide (proto3)文档,主要是对官方文档的翻译。 本文介绍如何使用 protocol buffer 语法来构造 protocol buffer 数据,包括.proto文件语法,以及如何从... -
url 编码(percentcode 百分号编码)
2015-11-18 08:41:23 ... ...本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码、为什么需要编码做了详细的说明,并对比分析了Javascrip -
Solr查询语法示例
2017-02-12 10:47:46在这个Solr查询语法示例中,我们将讨论Solr中不同的查询格式。 对于我们的讨论,我们将使用Solr安装附带的一个集合示例( 技术产品 )。 我们将向您展示如何使用Solr公开的基于REST的API,并向您展示如何使用各种...