首页IT科技jsp页面的功能(JSP的页面结构学习笔记)

jsp页面的功能(JSP的页面结构学习笔记)

时间2025-09-19 12:05:44分类IT科技浏览5813
导读:JSP页面的基本结构 在传统的html页面文件中加入Java程序片和JSP标记就构成了一个JSP页面,一个JSP页面可由...

JSP页面的基本结构

在传统的html页面文件中加入Java程序片和JSP标记就构成了一个JSP页面                ,一个JSP页面可由5种元素构成:

普通的HTML标记和JavaScript标记 JSP标记                         ,如指令标记                、动作标记 变量和方法的声明 Java程序片 Java表达式

执行过程

当Tomcat服务器上的一个JSP页面被第一次请求执行时         ,Tomcat服务器首先将JSP页面文件转译成一个Java文件                ,再将这个Java文件编译生成字节码文件                        ,然后通过执行字节码文件响应用户的请求                。

字节码文件的任务:

将JSP页面中的HTML标记和JavaScript标记交给用户端浏览器执行显示 JSP标记                         、方法的定义         、Java程序片由服务器处理和执行         ,将需要显示的结果发给用户端浏览器

声明变量和定义方法

在<%!和%>标记符号之间声明变量和定义方法                         。

书写位置

<%!和%>标记符号习惯上放在JSP页面指令之后        ,<HTML>之前                        ,也就是放在JSP页面的前面         。但是<%!和%>标记符号在整个JSP页面都有效                 ,与书写位置无关        ,因此也可以写在<HTML>和</HTML>之间                。

特性

<%!和%>标记符号之间声明的变量作为类的成员变量被每个用户线程共享                        ,因此任何一个用户对JSP页面成员变量的操作都会影响其他用户                        。

Java程序片

可以在<%和%>之间插入Java程序片                 ,一个JSP页面可以有多个Java程序片,这些程序片将被Tomcat按顺序执行                        ,程序片中定义的变量为JSP页面的局部变量         。

书写位置

可以写在<HTML>之前                         ,也可以写在<HTML>之间,也可以写在<HTML>之后        。

特性 操作成员变量:任何一个线程对JSP页面成员变量操作的结果                ,都会影响其他线程 操作局部变量:Java程序片运行在不同的线程中                         ,局部变量互不影响         ,程序片执行完毕即释放局部变量 synchronized修饰:当一个线程在执行Java程序片期间调用synchronized方法时                ,其他线程在调用这个synchronized方法就必须等待                        。(比如当操作成员变量的时候不希望其他用户同时操作成员变量                        ,例如计数器) Java程序片可以分割成几个程序片         ,然后再这些程序片之间插入其他标记元素

eg.

... <% int number = 7 + (int)(Math.random()*13); if(number <= 13){ %> <center><h2>显示小学生图片</h2> <% } else{ %> <center><h2>显示中学生图片</h2> <% } %> ...

Java表达式

可以在<%=和%>之间插入一个可求值的表达式

注意:不可插入语句

表达式的值由服务器负责计算        ,并将计算结果用字符串的形式发送到客户端显示                 。

书写位置

可以写在<HTML>之前                        ,也可以写在<HTML>之间                 ,也可以写在<HTML>之后        。

使用举例 <%= x>y %> <%= Math.sqrt(x-y) %>

JSP中的注释

注释可以增强JSP页面的可读性        ,使之更易于维护                        。

JSP页面中的注释分为两种:

HTML注释

在<!--和-->中加入注释内容

<!-- 注释内容 --> JSP注释

在标记符号<%--和%>之间加入注释内容

<%-- 注释内容 --%>

Tomcat服务器会在编译时忽略JSP注释                 。

另注

如果你想要在java代码片中添加注释                        ,那么需要按照java注释来写

JSP指令标记

page指令标记

page属性用来定义整个JSP页面的一些属性和这些属性的值                 ,属性值用单引号或双引号括起来。可以使用多个page指令分别为每个属性指定值:

<%@ page 属性1 = "属性1的值" %> <%@ page 属性2 = "属性2的值" %> <%@ page 属性n = "属性n的值" %>

也可以用一个page属性指定多个属性的值:

<%@ page 属性1 = "属性1的值" 属性2 = "属性2的值"

eg.

<% @ page contentType="text/html" pageEncoding = "utf-8" %> 书写位置

对整个JSP界面都有效,与书写位置无关                        ,但习惯上写在最前面                        。

contentType属性

Tomcat服务器要通知用户的浏览器用怎样的方式来处理接收到的信息                         ,这就要求JSP页面必须设置响应的MIME类型,即设置contentType的值                         。

如果我们希望用户的浏览器启动HTML解析器来解析执行所接收到的信息                ,那么可以按照如下方式(如果不指定                         ,也是此默认值):

<% @ page contentType = "text/html" %>

如果希望用户的浏览器启动本地的MS-Word应用程序来解析执行所接收到的信息         ,那么可以按照如下方式:

<% @ page contentType = "application/msword" %>

但是注意                ,JSP不允许两次使用page指令给contentType属性指定不同的属性值                        ,例如以下做法是错误的:

<% @ page contentType = "text/html" %> <% @ page contentType = "application/msword" %>

用page指令为contentType指定一个值的同时         ,也可以为contentType的附加属性charset制定一个值(默认是iso-8859-1)        ,例如:

<% @ page contentType = "text/html;charset=gb2312" %>

charset的值是通知用户浏览器用怎样的编码解析收到的字符。

当JSP页面用page指定了JSP的页面本身的编码                        ,例如:

<% @ page pageEncoding="UTF-8" %>

此时                 ,charset编码与JSP页面编码保持一致        ,为utf-8                        ,因此一般不需要再指定charset的值                 ,使其和JSP页面编码保持一致即可                。

pageEncoding属性

pageEncoding属性的默认值是UTF-8                         。

需要注意的是,与contentType的附加属性charset的值意义不同                        ,pageEncoding属性值是定义JSP页面使用的编码                         ,是告诉Tomcat服务的解析器用怎样的编码解析JSP页面中的字符         。

保存JSP页面应当将编码选择为UTF-8,因为Tomcat服务器是根据UTF=8编码来解析JSP页面中的字符数据的                。

JSP页面使用page指令只能为pageEncoding指定一个值不允许两处使用page指令给pageEncoding指定相同或不同的值                        。

language属性

language属性定义JSP页面使用的脚本语言                ,该属性的值目前只能取java         。

<% @ page language = "java" %>

如果不写                         ,那么JSP也有默认上述指令        。

import属性

该属性的作用是为JSP引入java运行环境所提供的包中的类                        。

可以为该属性指定多个值         ,该属性的值可以是某包中的所有类或者一个具体的类                 。

<% @ page import = "java.io.*","java.time.LocalDate" %>

JSP页面默认import属性已经有如下的值:

"java.lang.*" "javax.servlet.*" "javax.servlet.jsp.*" "javax.servlet.http.*" session属性

session属性设置是否需要使用内置的session对象                ,属性值可以是true或者false                        ,默认值是true        。

buffer属性

buffer属性用来指定out设置的缓冲区大小或者不使用缓冲区                        。

<% @ page buffer = "24kb" %> autoFlush属性

autoFlush属性指定out的缓冲区被填满时         ,缓冲区是否自动刷新                 。属性值可以是true或者false        ,默认值是true。

当buffer的值是none时                        ,autoFlush的值就不能设置成false                        。

isThreadSafe属性

isThereadSafe属性用来设置访问JSP页面是否是线程安全的                         。属性值可以是true或者false                 ,默认值是true。

当值为true时        ,JSP页面可以同时响应多个用户的请求                        ,当值为false时                 ,JSP页面同一时刻只能响应一个用户的请求,其他用户须排队等待                。

info属性

info属性是一个字符串                        ,其目的是为JSP页面准备一个常用但可能要经常修改的字符串                         ,如:

<% page info = "we are students" %>

可以在JSP页面中使用方法:

getServletInfo() include指令标记

如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记:

<% @ include file = "文件的Url" %>

include指令标记的作用是在JSP页面出现该指令的位置处                ,静态嵌入一个文件                         。

该文件的编码必须与当前JSP页面一致         。 该文件必须是可以访问或者可以使用的                。

静态嵌入是指当前JSP页面与嵌入的文件合并成一个新的JSP页面                         ,然后Tomcat服务器再将这个新的JSP页面转译成Java文件                        。因此         ,嵌入文件后                ,必须保证新合并成的JSP页面符合JSP语法规则                        ,即能够成为一个新的JSP页面文件         。

eg.被嵌入文件是一个JSP文件         ,该JSP页面使用了page指令为contentType设置了值:

<% @ page contentType = "application/msword" %>

那么        ,合并后的JSP就两次使用page指令为contentType属性设置了不同的属性值                        ,导致语法错误        。

注意:允许被嵌入文件使用page指令指定contentType属性的值                 ,但指定的值必须与被嵌入页面JSP中指定的值相同

JSP动作标记

动作标记是一种特殊的标记        ,它影响JSP运行时的功能                        。

include动作标记 语法格式 <jsp:include page="文件的URL"/>

<jsp:include page="文件的URL"> param子标记 </jsp:include>

需要注意的是                        ,当include动作标记不需要param子标记时                 ,必须使用第一种形式                 。

include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入        。

include指令标记:静态包含                        ,先合并再编译                        。

include动作标记:动态包含                         ,生成Java文件时不合并,当JSP运行(Java文件的字节码文件被加载执行)时才被包含进来                 。如果包含的是文本文件就直接发到用户端                ,如果是JSP文件就先由Tomcat执行再将结果发到用户端。

对比 处理时间 执行速度 灵活性 include指令标记 编译阶段处理 快 被处理的文件逻辑和语法依赖当前JSP页面 include动作标记 JSP页面运行时处理 慢 被处理的文件逻辑和语法独立于当前JSP页面                         ,可以使用param子标记 param动作标记

param标记以名字-值对的形式为其他标记提供附加信息         ,不能独立使用                ,必须作为jsp:include                、jsp:forward标记的子标记来使用                        。

语法格式 <jsp:param name="参数" value="参数的值" />

当标记与jsp:include动作标记一起使用时                        ,可以将param标记中的参数的值传到include动作标记要加载的文件中去                         。被加载的JSP文件可以用Tomcat服务器所提供的的request内置对象获取参数的值。

eg.

<!-- exam1.jsp --> <jsp:include page = "exam2.jsp"> <jsp:param name="msg" value="Hello,world!"/> </jsp:include> <% -- exam2.jsp -- %> request.getParameter("msg"); forward动作标记 语法格式 <jsp:forward page = "要转向的页面" />

<jsp:forward page = "要转向的页面"> param子标记 </jsp:forward>

该指令的作用是         ,从该指令处停止当前页面的执行        ,而转向执行page属性指定的JSP页面                。

注意:当没有param子标记时必须采用第一种形式

forward标记可以使用param动作标记作为子标记向转向的页面传送信息                        ,接收方法同include也是利用request.getParameter()获取                         。

需要注意的是                 ,当前页面使用forward动作标记转向后        ,尽管看到的效果是转向后的页面效果                        ,但是浏览器地址栏显示的依然是转向前的JSP页面的URL地址         。因此                 ,如果刷新浏览器的显示,将再次执行当前浏览器地址栏中显示的JSP页面                。

比如                        ,当前页面是生成一个0-1随机数                         ,如果随机数的值为1那么则转向a.jsp,否则转向b.jsp                        。那么你在刷新这个页面的时候                ,地址栏显示都是此页面的url                         ,但是显示效果可能有时是a.jsp页面         ,有时是b.jsp页面         。

useBean

useBean标记用来创建并使用一个JavaBean                ,是非常重要的一个动作标记        。

Sun公司倡导JavaBean负责存储数据                        ,JSP页面显示JavaBean中的数据         ,servlet负责管理JavaBean中的数据                        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
wifi想使用本地项目钥匙串(Mac系统频繁弹出本地项目钥匙串提示怎么办?)