注释

<!-- 这里是注释 -->
这部分注释会直接从服务器传输到客户端中,不会直接表现在浏览器上;
可以通过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.jspBase
language 该文件的编程语言,一般是java或者c
improt 引入的包,如jiava.util.*

说到编码问题,会经常看到非英文文档在实际代码运行后出现乱码的情况。这种情况下多半是编码出现了问题。那么我们来看一下同样具有指定页面编码能力的三种形式:contentType,charset,encoding
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" errorPage="error.jsp" %>


jsp文件在收到来自客户端的请求后,它的编译过程如图所示:

  1. 用encoding指定的编码格式去将jsp文件转换成java文件
  2. 用UTF-8格式编码来将java编写为具体的类文件,具有实际某种功能
  3. 用contentType/charset指定的编码格式实际运行代码并得出结果,将之发送给客户端

在上述过程中,如果encoding和contentType只指定了其中的一个,另一个也会被默认改变为与另一个相同的编码格式,从而避免出现乱码;但是如果两个都不指定,则国内计算机大多数默认GBK格式编码,则在1阶段就会出现乱码。只要二者能够指定其中一个就不会出现乱码。

然后我们来看下面这个代码

这串代码,第一行的contentType/charset和encoding二者择其一保留,则最后的Error测试中的测试就不会乱码。与后者的meta标签中的UTF-8无关,不论meta标签有无,只要上面正确指定,则生成的Html文件就不会出现乱码。meta标签则纯HTML文件中会影响文件本身的编码,在JSP文件中,其作用是用来更好地被搜索引擎发现。对文件页面本身的编码无主导作用。

在web.xml文件下可以配置环境变量,找到listings选项并将下面的false改为true就可以直接浏览根目录下的文件。更方便实验

根目录页面如下:

根目录下,默认的该列表文件实际上是index文件,同样可以在web.xml中找到:

这一串代码表明index文件的优先级优先从:html到htm到jsp;如果没有则使用默认的index文件;如果有则会使用指定的index文件。换言之,只要在目录下人工生成一个index文件,就可以替换掉这个根目录页面。

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的区别:


除此之外还有一种方式:

该方式可以传递不同服务器之间的jsp文件数据,而include和forward只能传递同一个服务器之间的不同jsp文件。

静态包含和动态包含


静态包含: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>
<%}
%>

【WebServerProgramming】Ch.5 基本语法相关推荐

  1. ffmpeg 基本用法大全

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

  2. ffmpeg基本用法(转)

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

  3. java setcharat,Java StringBuffer setCharAt()方法

    Java StringBuffer setCharAt()方法 java.lang.StringBuffer.setCharAt()方法将指定index处的字符设置为ch . 该序列被改变以表示与旧字 ...

  4. ffmpeg基本用法

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

  5. C语言 第五章 选择结构 答案,c语言第五章 选择结构程序设计(习题册答案).doc

    第五章 选择结构程序设计 基础练习(A) 一.填空题 1.关系表达式的运算结果是 逻辑 值.C语言没有逻辑型数据,以 1 代表"真",以 0代表"假". 2.逻 ...

  6. ffmpeng编解码过程

    1  术语: 什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片.那电影的实质就是N多张图片的集合.那 每张图片和帧又有什么关系呢?事实上,如果 ...

  7. (转)FFmpeg 基本用法

    FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种格式? 5.如 ...

  8. FFMPEG进阶系列02-ffmpeg命令详解3

    ffmpeg 的封装转换 FFmpeg的封装转换部分,主要是通过libavformat这部分来完成的功能,通过libavformat库进行mux和demux操作,多媒体文件的格式有很多种,但是还是有好 ...

  9. 【转】FFmpeg 基本用法

    FFmpeg FFmpeg 基本用法 本课要解决的问题 1.FFmpeg的转码流程是什么? 2.常见的视频格式包含哪些内容吗? 3.如何把这些内容从视频文件中抽取出来? 4.如何从一种格式转换为另一种 ...

最新文章

  1. pytorch多gpu并行训练操作指南
  2. 数据库系统——B+树索引
  3. Kubernetes — 生产环境架构简述
  4. 【传智播客】Javaweb程序设计任务教程 黑马程序员 第三章 课后答案
  5. Eclipse 中修改android的Default debug keystore 搬家、备份后启动Android PANIC :Could not open D:\java2\android\and
  6. 闭包 —JavaScript面向对象高级
  7. C# 获取文件MD5值的方法
  8. 史蒂夫 乔布斯(Steve Jobs)在斯坦福大学2005年毕业典礼上的演讲
  9. 查看mysql错误日志定位mysql错误
  10. 接口与抽象类的应用(包括各自设计模式)
  11. Windows 7 系统的旧版IE浏览器升级到IE11
  12. 前程无忧网站大数据职位信息分析可视化(源码)
  13. 手机屏幕驱动板HDMI调光触摸旋转说明Fondar
  14. 2019 年中国搜索引擎市场份额排行榜
  15. js逆向学习路线指南
  16. 本周AI热点回顾:政府数据将开放共享、生命游戏发明者逝世、百度Apollo对外发布“ACE 交通引擎”
  17. 百万在线:大型游戏服务端开发
  18. 【练习】Accessing data with MySQL
  19. 李群SE(3)即欧式变换Euclidean transformation(刚性变换Rigid Transformation)
  20. 传智播客成都java培训老学员福利

热门文章

  1. JIRA 集成Devops\fisheye注意gn
  2. 网安技术与应用(2)——基于DTLS的安全服务器设计
  3. 记一次XtraBackup软件包下载地址
  4. 如何进行代码REVIEW
  5. 什么是可重入锁?为什么需要可重入锁?
  6. 软考A计划-试题模拟含答案解析-卷十一
  7. 车辆监控管理系统、GPS车辆监控系统、车辆监控管理系统技术方案 ,车辆监控管理系统设计,车载监控终端TBOX,车辆监控系统终端
  8. flash特效原理 图片滑动放大效果 2
  9. 【花雕体验】02 行空板简单使用
  10. 动力节点Dubbo学习笔记