知识大全 jsp Servlet中脚本元素、指令和预定义变量解析
Posted 指令
篇首语:人生如同故事。重要的并不在有多长,而是在有多好。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 jsp Servlet中脚本元素、指令和预定义变量解析相关的知识,希望对你有一定的参考价值。
jsp Servlet中脚本元素、指令和预定义变量解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JSP脚本元素 JSP脚本元素用来插入Java代码 这些Java代码将出现在由当前JSP页面生成的Servlet中 脚本元素有三种格式 表达式格式<%= expression %> 计算表达式并输出其结果 Scriptlet格式<% code %> 把代码插入到Servlet的service方法 声明格式<%! code %> 把声明加入到Servlet类(在任何方法之外) 下面我们详细说明它们的用法 JSP表达式 JSP表达式用来把Java数据直接插入到输出 其语法如下 <%= Java Expression %> 计算Java表达式得到的结果被转换成字符串 然后插入到页面 计算在运行时进行(页面被请求时) 因此可以访问和请求有关的全部信息 例如 下面的代码显示页面被请求的日期/时间 Current time: <%= new java util Date() %> 为简化这些表达式 JSP预定义了一组可以直接使用的对象变量 后面我们将详细介绍这些隐含声明的对象 但对于JSP表达式来说 最重要的几个对象及其类型如下 request HttpServletRequest; response HttpServletResponse; session 和request关联的HttpSession out PrintWriter(带缓冲的版本 JspWriter) 用来把输出发送到客户端 下面是一个例子 Your hostname: <%= request getRemoteHost() %> 最后 如果使用XML的话 JSP表达式也可以写成下面这种形式
<jsp:expression> Java Expression </jsp:expression>请记住XML元素和HTML不一样 XML是大小写敏感的 因此务必使用小写 有关XML语法的说明 请参见《XML教程 》 JSP Scriptlet 如果你要完成的任务比插入简单的表达式更加复杂 可以使用JSP Scriptlet JSP Scriptlet允许你把任意的Java代码插入Servlet JSP Scriptlet语法如下
<% Java Code %>和JSP表达式一样 Scriptlet也可以访问所有预定义的变量 例如 如果你要向结果页面输出内容 可以使用out变量
<% String queryData = request getQueryString(); out println("Attached GET data: " + queryData); %>注意Scriptlet中的代码将被照搬到Servlet内 而Scriptlet前面和后面的静态HTML(模板文本)将被转换成println语句 这就意味着 Scriptlet内的Java语句并非一定要是完整的 没有关闭的块将影响Scriptlet外的静态HTML 例如 下面的JSP片断混合了模板文本和Scriptlet
<% if (Math random() < ) %> Have a <B>nice</B> day! <% else %> Have a <B>lousy</B> day! <% %>上述JSP代码将被转换成如下Servlet代码
if (Math random() < ) out println("Have a <B>nice</B> day!"); else out println("Have a <B>lousy</B> day!");如果要在Scriptlet内部使用字符“%>” 必须写成“%\>” 另外 请注意<% code %>的XML等价表达是 <jsp:scriptlet> Code </jsp:scriptlet> JSP声明 JSP声明用来定义插入Servlet类的方法和成员变量 其语法如下
<%! Java Code %>由于声明不会有任何输出 因此它们往往和JSP表达式或Scriptlet结合在一起使用 例如 下面的JSP代码片断输出自从服务器启动(或Servlet类被改动并重新装载以来)当前页面被请求的次数
<%! private int accessCount = ; %>自从服务器启动以来页面访问次数为
<%= ++accessCount %>和Scriptlet一样 如果要使用字符串“%>” 必须使用“%\>”代替 最后 <%! code %>的XML等价表达方式为
<jsp:declaration> Code </jsp:declaration>JSP指令 JSP指令影响Servlet类的整体结构 它的语法一般如下
<%@ directive attribute="value" %>另外 也可以把同一指令的多个属性结合起来 例如
<%@ directive attribute ="value " attribute ="value " attributeN="valueN" %>JSP指令分为两种类型 第一是page指令 用来完成下面这类任务 导入指定的类 自定义Servlet的超类 等等 第二是include指令 用来在JSP文件转换成Servlet时引入其他文件 JSP规范也提到了taglib指令 其目的是让JSP开发者能够自己定义标记 但JSP 不支持该指令 有希望它将成为JSP 的主要改进之一 page指令 page指令的作用是定义下面一个或多个属性 这些属性大小写敏感 import="package class" 或者import="package class package classN" 用于指定导入哪些包 例如 <%@ page import="java util *" %> import是唯一允许出现一次以上的属性 contentType="MIME Type" 或contentType="MIME Type; charset=Character Set" 该属性指定输出的MIME类型 默认是text/ 例如 下面这个指令 <%@ page contentType="text/plain" %> 和下面的Scriptlet效果相同 <% response setContentType("text/plain"); %> isThreadSafe="true|false" 默认值true表明Servlet按照标准的方式处理 即假定开发者已经同步对实例变量的访问 由单个Servlet实例同时地处理多个请求 如果取值false 表明Servlet应该实现SingleThreadModel 请求或者是逐个进入 或者多个并行的请求分别由不同的Servlet实例处理 session="true|false" 默认值true表明预定义变量session(类型为HttpSession)应该绑定到已有的会话 如果不存在已有的会话 则新建一个并绑定session变量 如果取值false 表明不会用到会话 试图访问变量session将导致JSP转换成Servlet时出错 buffer="size kb|none" 该属性指定JspWrite out的缓存大小 默认值和服务器有关 但至少应该是 KB autoflush="true|false" 默认值true表明如果缓存已满则刷新它 autoflush很少取false值 false值表示如果缓存已满则抛出异常 如果buffer="none" autoflush不能取false值 extends="package class" 该属性指出将要生成的Servlet使用哪个超类 使用该属性应当十分小心 因为服务器可能已经在用自定义的超类 info="message" 该属性定义一个可以通过getServletInfo方法提取的字符串 errorPage="url" 该属性指定一个JSP页面 所有未被当前页面捕获的异常均由该页面处理 isErrorPage="true|false" 该属性指示当前页面是否可以作为另一JSP页面的错误处理页面 默认值false language="java" 该属性用来指示所使用的语言 目前没有必要关注这个属性 因为默认的Java是当前唯一可用的语言 定义指令的XML语法为
<jsp:directive directiveType attribute=value />例如 下面这个指令
<%@ page import="java util *" %>它的XML等价表达是
<jsp:directive page import="java util *" />include指令 include指令用于JSP页面转换成Servlet时引入其他文件 该指令语法如下
<%@ include file="relative url" %>这里所指定的URL是和发出引用指令的JSP页面相对的URL 然而 与通常意义上的相对URL一样 你可以利用以“/”开始的URL告诉系统把URL视为从Web服务器根目录开始 包含文件的内容也是JSP代码 即包含文件可以包含静态HTML 脚本元素 JSP指令和动作 例如 许多网站的每个页面都有一个小小的导航条 由于HTML框架存在不少问题 导航条往往用页面顶端或左边的一个表格制作 同一份HTML代码重复出现在整个网站的每个页面上 include指令是实现该功能的非常理想的方法 使用include指令 开发者不必再把导航HTML代码拷贝到每个文件中 从而可以更轻松地完成维护工作 由于include指令是在JSP转换成Servlet的时候引入文件 因此如果导航条改变了 所有使用该导航条的JSP页面都必须重新转换成Servlet 如果导航条改动不频繁 而且你希望包含操作具有尽可能好的效率 使用include指令是最好的选择 然而 如果导航条改动非常频繁 你可以使用jsp:include动作 jsp:include动作在出现对JSP页面请求的时候才会引用指定的文件 请参见本文后面的具体说明 实例 脚本元素和指令的应用 下面是一个使用JSP表达式 Scriptlet 声明 指令的简单例子
<!DOCTYPE HTML PUBLIC " //W C//DTD HTML Transitional//EN"> <HTML> <HEAD> <TITLE>JavaServer Pages</TITLE> </HEAD> <BODY BGCOLOR="#FDF E " TEXT="# " LINK="# EE" VLINK="# A B" ALINK="#FF "> <CENTER> <TABLE BORDER= BGCOLOR="#EF "> <TR><TH CLASS="TITLE"> JSP应用实例</TABLE> </CENTER> <P> 下面是一些利用各种JSP功能生成的动态内容: <UL> <LI><B>表达式 </B><BR> 你的主机名: <%= request getRemoteHost() %> <LI><B>JSP Scriptlet </B><BR> <% out println("查询字符串: " + request getQueryString()); %> <LI><B>声明(和表达式) </B><BR> <%! private int accessCount = ; %> 服务器启动以来访问次数: <%= ++accessCount %> <LI><B>指令(和表达式) </B><BR> <%@ page import = "java util *" %> 当前日期: <%= new Date() %> </UL> </BODY> </HTML> cha138/Article/program/Java/JSP/201311/20215相关参考
知识大全 JSP指令元素(page指令/include指令/taglib指令)复习整理
JSP指令元素(page指令/include指令/taglib指令)复习整理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让
在jsp和servlet的开发中今天自己做的一个小例子中出现了中文乱码问题用了许多方法发现还是解决不了最后我用了过滤器才算终结 此方法总结如下在jsp页面中使用<%@pagepageEnc
关于Servlet及JSP中遇到的多线程同步问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
JSP和Servlet配置详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 首先是下载工具
JSP和Servlet的性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在本文中带领你学
Servlet和JSP迈上新台阶 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 即将面世的JEE
知识大全 JSP中include指令和include动作区别详解
JSP中include指令和include动作区别详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
浅析Servlet和Jsp中的多国语言显示 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 因为一
知识大全 Tomcat下JSP、Servlet和JavaBean环境配置
Tomcat下JSP、Servlet和JavaBean环境配置 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
高性能、高弹性JSP和Servlet性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 你的