当前位置: 首页 > 图文教程 > 网络编程 > JSP > JSP及语法概要

JSP
我认为JSP有问题(上)
我认为JSP有问题(下)
jsp“抓”网页代码的程序
关于在bean里面打印html的利弊看法
bean里面如何打印到html页面
jdbc3中的RowSet 接口规范
Apusic Application Server1.0中jsp源代码泄漏漏洞
Unify的eWave ServletExec拒绝服务漏洞
通过提交超长的GET请求导致IBM HTTP Server远程溢出
在HTTP请求中添加特殊字符导致暴露JSP源代码文件
Resin 1.2 重要源代码暴露漏洞
多中WEB服务器的通用JSp源代码暴露漏洞
Tomcat 暴露JSP文件内容
IBM WebSphere Application Server 暴露JSP文件内容
JRun 2.3.x 范例文件暴露站点安全信息
BEA WebLogic 暴露源代码漏洞
IBM WebSphere Application Server 3.0.2 存在暴露源代码漏洞
Tomcat 3.1 存在暴露网站路径问题
Sun Java Web Server 能让攻击者远程执行任意命令
Netscape 修复 JAVA 安全漏洞

JSP及语法概要


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-02   浏览: 39 ::
收藏到网摘: n/a

11.1 概述 
   
     JavaServer Pages(JSP)使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写,编写方式也和原来的一样;动态部分的代码放入特殊标记之内,大部分以“<%”开始,以“%>”结束。例如,下面是一个JSP页面的片断,如果我们用http://host/OrderConfirmation.jsp?title=Core+Web+Programming这个URL打开该页面,则结果显示“Thanks for ordering Core Web Programming”。 
  Thanks for ordering 
  <I><%= request.getParameter("title") %></I> 
   
 JSP页面文件通常以.jsp为扩展名,而且可以安装到任何能够存放普通Web页面的地方。虽然从代码编写来看,JSP页面更象普通Web页面而不象Servlet,但实际上,JSP最终会被转换成正规的Servlet,静态HTML直接输出到和Servlet service方法关联的输出流。 
   
     JSP到Servlet的转换过程一般在出现第一次页面请求时进行。因此,如果你希望第一个用户不会由于JSP页面转换成Servlet而等待太长的时间,希望确保Servlet已经正确地编译并装载,你可以在安装JSP页面之后自己请求一下这个页面。 
   
     另外也请注意,许多Web服务器允许定义别名,所以一个看起来指向HTML文件的URL实际上可能指向Servlet或JSP页面。 
   
     除了普通HTML代码之外,嵌入JSP页面的其他成分主要有如下三种:脚本元素(Scripting Element),指令(Directive),动作(Action)。脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP指令用来从整体上控制Servlet的结构;动作用来引入现有的组件或者控制JSP引擎的行为。为了简化脚本元素,JSP定义了一组可以直接使用的变量(预定义变量),比如前面代码片断中的request就是其中一例。 
   
     注意本文以JSP 1.0规范为基础。和0.92版相比,新版本的JSP作了许多重大的改动。虽然这些改动只会使JSP变得更好,但应注意1.0的JSP页面几乎和早期的JSP引擎完全不兼容。 
   
     11.2 JSP语法概要表 JSP元素 语法 说明 备注 
  JSP表达式 <%= expression %> 计算表达式并输出结果。 等价的XML表达是: 
  <jsp:expression> 
  expression 
  </jsp:expression> 
   
  可以使用的预定义变量包括:request,response,out,session,application,config,pageContext。这些预定义变量也可以在JSP Scriptlet中使用。 
   
  JSP Scriptlet <% code %> 插入到service方法的代码。 等价的XML表达是: 
  <jsp:scriptlet> 
  code 
  </jsp:scriptlet> 
   
  JSP声明 <%! code %> 代码被插入到Servlet类(在service方法之外)。 等价的XML表达是: 
  <jsp:declaration> 
  code 
  </jsp:declaration> 
   
  page指令 <%@ page att="val" %> 作用于Servlet引擎的全局性指令。 等价的XML表达是 
  <jsp:directive.page att="val"\>。 
   
  合法的属性如下表,其中粗体表示默认值: 
   
  import="package.class" 
  contentType="MIME-Type" 
  isThreadSafe="true|false" 
  session="true|false" 
  buffer="size kb|none" 
  autoflush="true|false" 
  extends="package.class" 
  info="message" 
  errorPage="url" 
  isErrorPage="true|false" 
  language="java" 
   
  include指令 <%@ include file="url" %> 当JSP转换成Servlet时,应当包含本地系统上的指定文件。 等价的XML表达是: 
   
  <jsp:directive.include