评论

收藏

【WebServerProgramming】Ch.5 基本语法

网络安全 网络安全 发布于:2021-07-13 18:18 | 阅读数:270 | 评论:0

  注释
<!-- 这里是注释 -->
这部分注释会直接从服务器传输到客户端中,不会直接表现在浏览器上;
可以通过F12观察本页代码时,看到这部分注释,是HTML注释
<%-- JSP注释 --%>
这部分注释会是JSP页本身的代码,不会传输到客户端上;
F12观察传输到浏览器上的JSP页面也无法看到这部分注释;
只有开发者可以看到的注释
指示语法
page
<%@ page 属性名="属性值",…%>
属性名特征isErrorPage默认false;若设定为true则本HTML页面将被认定为错误响应页;当客户端与服务器交互过程中出现错误时,会返回错误,对应的返回错误会返回到对应的错误页面;可以在其他JSP页面中指定errorPage来跳转到本页面。errorPage指定一个目标页作为出现错误时,返回的错误页面;若页面无错误,则不该属性不生效session用来储存来自客户端的信息,默认为true,为来自不同服务器的信息开辟一个新的空间来专门存储这部分信息;若为false则不单独储存来自客户端的信息(直接存储到服务器本身)buffer默认8KB;服务器向客户端传输数据为了保持高效性并不是以bit为单位传输,会在buffer内存储到一定数量的数据后再进行传输autoFlush默认为true,如果缓存存满则自动将数据从服务器发送到客户端isThreadSafe默认为True,表示允许并发控制;基本没有设定为false的情况。假设这个值设为true,多个线程能同时访问一个JSP页面。假如这个值为false,对一个JSP页面,JSP引擎一次只能响应一个用户的请求。Info类注释,用任意方式来说明想说明的contentType指定本页内容的特性,如text/html;image/x-rgb等。是哪种类型的文件,哪种类型的编码格式等encoding与contentType有重叠的技能,用于表明本页的编码格式extends选择父类继承;默认使用javax.servlet.jsp; org.apache.jasper.runtime.jspBaselanguage该文件的编程语言,一般是java或者cimprot引入的包,如jiava.util.*  说到编码问题,会经常看到非英文文档在实际代码运行后出现乱码的情况。这种情况下多半是编码出现了问题。那么我们来看一下同样具有指定页面编码能力的三种形式:contentType,charset,encoding
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" %>
DSC0000.png
jsp文件在收到来自客户端的请求后,它的编译过程如图所示:


  • 用encoding指定的编码格式去将jsp文件转换成java文件
  • 用UTF-8格式编码来将java编写为具体的类文件,具有实际某种功能
  • 用contentType/charset指定的编码格式实际运行代码并得出结果,将之发送给客户端
  在上述过程中,如果encoding和contentType只指定了其中的一个,另一个也会被默认改变为与另一个相同的编码格式,从而避免出现乱码;但是如果两个都不指定,则国内计算机大多数默认GBK格式编码,则在1阶段就会出现乱码。只要二者能够指定其中一个就不会出现乱码。
  然后我们来看下面这个代码
DSC0001.png
这串代码,第一行的contentType/charset和encoding二者择其一保留,则最后的Error测试中的测试就不会乱码。与后者的meta标签中的UTF-8无关,不论meta标签有无,只要上面正确指定,则生成的Html文件就不会出现乱码。meta标签则纯HTML文件中会影响文件本身的编码,在JSP文件中,其作用是用来更好地被搜索引擎发现。对文件页面本身的编码无主导作用。
  在web.xml文件下可以配置环境变量,找到listings选项并将下面的false改为true就可以直接浏览根目录下的文件。更方便实验
DSC0002.png
根目录页面如下:
DSC0003.png
根目录下,默认的该列表文件实际上是index文件,同样可以在web.xml中找到:
DSC0004.png
这一串代码表明index文件的优先级优先从:html到htm到jsp;如果没有则使用默认的index文件;如果有则会使用指定的index文件。换言之,只要在目录下人工生成一个index文件,就可以替换掉这个根目录页面。
DSC0005.png

  include:语法格式:<%@ include file="relativeURL"%>;包含指定的文件,可以将某个jsp文件内容包含到本页面。
  taglib:相当于给HTML5中最简单的Tag附加上了具体的功能,后面会详细讲解。

Action
属性特征形式include将其他页的内容包含到当前页<jsp:include page=“xx.jsp”>forward设置一个链接,从本页面跳转到指定页面去执行<jsp:forward page=“xx.jsp”>useBean使用useBean类中的某些功能;在名为cls页内适用,调用MyBean类中名为xx的方法<jsp:useBean scope=“page” id=“cls” class=“xx.MyBean”>;scope可以为page,request,session,application。page表示只在某页适用,而request在整个请求过程中都可以调用setProperty;getProperty调用在useBean中声明的setxxx()和getxxx()方法<jsp:set/getProprety name=“cls” proprety=“xxx”>param添加一个临时变量<jsp:param name=“xx” value=“yy”>  include和forward的区别:
DSC0006.png
DSC0007.png
除此之外还有一种方式:
DSC0008.png
该方式可以传递不同服务器之间的jsp文件数据,而include和forward只能传递同一个服务器之间的不同jsp文件。
静态包含和动态包含
DSC0009.png
静态包含:JSP文件之间有包含关系,在程序运行时,在此基础上生成一个Servlet。
动态包含:JSP文件之间没有包含关系,但是他们各自运行生成的Servlet之间有包含关系。


URL&URI
  URL(Uniform Resource Locator):统一资源定位符
  顾名思义,URL就是一个表示资源位置的字符串,基本的URL格式为 “协议://IP地址/路径和文件名”。
  URL的概念很容易理解,但是URI和URN的概念就显得抽象了。
“A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源”,可以看出其和URL的目的是相同的,都是通过使用字符串来标示资源,这样看来,像开头加粗部分的字符串似乎并不能完整标识资源。
  “A Uniform Resource Name (URN)唯一标识一个实体的标识符”,但是不给出实体的位置,通过引用一个或多个URL来实现标识指针功能。现实中可见的使用:P2P下载中使用的磁力链接。
  现在可以下一个基本的结论,那就是URI包含URL or URI or (介于两者之间的模糊地带)。
  概念比较抽象,形象一点说明:
www.baidu.com的URI是百度,百度贴吧的URI是贴吧,QQ的URI是企鹅,URI是给定一个不具体的描述你能够即可联想到对应的个体,但是你想要访问他却不能直接访问(直接在地址栏键入企鹅是不会跳转到QQ官网的,键入贴吧也只是跳转到搜素引擎界面而非贴吧主页);而URL,一串神秘字符,你可能并不知道这串地址指向哪里,但是你一定可以通过他访问到某一个具体的对象。
URL是一个具体到地址的网络资源,而URI只是一个资源的代称或者说代号。给出一个URL你能够确切的找到这个资源的位置,给你一个URI你能够明白这个资源是什么,但是无法直接找到并访问。
Scriptlet
<%!   %>声明
<!%
 String str = "test";
 public boolean check() {
  return false;
 }
%>
<%=   %>调用/打印变量/字符串与四则运算结合等
 <%= calculator() %>
 <%= result %>
 <%= “i+2=“+(i+2)+"OK" %>
  scriptlet的应用:
以下二者同值
<%
for(int i=1;i<10;i++) {
out.println(i+"<BR>");
}
%>
=========================================================================
<%
for(int i=1;i<10;i++) {
%>
<%=i %> <BR>
<%
}
%>

  
关注下面的标签,发现更多相似文章