- 浏览: 13931 次
- 性别:
- 来自: 深圳
最近访客 更多访客>>
最新评论
-
Aether:
Here is include a jsp file!
Thi ...
JSP拾遗(五)——jsp文件包含指令
第二节中,我们通过JSP编译成的java源文件对比出了<% %> <%! %>的区别。一个jsp文件会被解释编译成对应的java类,而<%!%>里面声明的变量或方法都将成为对应java类的成员方法,<% %>里面的代码段将会直接放置到jspService()方法中执行。因此,我们可以在<% %>的代码段中使用jspService()方法中预定义的几个常用对象,第三节我们专门介绍了这几个常用的对象。
除了<% %>和<%! %>标签外,jsp中还可以使用的元素有:<%= %>表达式、<%-- --%>注释和<%@ page %>、<%@include %>、 <%@taglib %>编译指令,以及jsp:useBean、jsp:setProperty 、jsp:getProperty 、jsp:include、jsp:forward、jsp:plugin、jsp:fallback等操作指令。本节及下节中详细介绍这些页面标签。
还记得我们的测试应用吗?它在tomcat的webapps目录下,对应目录结构是:
webapps / test
/MyJsp.jsp
/WEB-INF
/ web.xml
MyJsp.jsp将会被tomcat解释成MyJsp_jsp.java文件,并编译成MyJsp_java.class文件,放置在tomcat的work目录下,对应的路径是: work\Catalina\localhost\test\org\apache\jsp目录。我们将在MyJsp.jsp里面来验证上述jsp元素的作用。
<%= expression %>
在jsp中,输出expression 表达式的值。注意<%=必须写在一起,中间不能有空格。先看一下示例: 修改MyJsp.jsp内容如下:
<html> <body> This is my first JSP! Now time is: <%=new java.util.Date() %> </body> </html>
在TOMCAT的work目录找到对应的MyJsp_jsp.java文件,查看_jspService()方法对于的代码:
out.write("<html>\r\n"); out.write(" <body>\r\n"); out.write(" This is my first JSP! Now time is: "); out.print(new java.util.Date() ); out.write("\r\n"); out.write(" </body>\r\n"); out.write("</html>\r\n");
表达式new java.util.Date()直接被out对象的print()方法所输出。由于print()方法接受一切对象Object和基本类型,因此<%= %>里面可以是任意的取值表达式,甚至是一个方法的调用。
<%-- --%>
jsp隐藏注释。与html中的注释<!-- -->相比较,这里的注释内容将不会被显示到客户端的html中。
先看示例:
<html> <body> This is my first JSP! Now time is: <%=new java.util.Date() %> <!-- This is a html comment --> <%-- This is a jsp hidden comment --%> </body> </html>
对应的源代码:
out.write("<html>\r\n"); out.write(" <body>\r\n"); out.write(" This is my first JSP! Now time is: "); out.print(new java.util.Date() ); out.write("\r\n"); out.write(" <!-- This is a html comment -->\r\n"); out.write(" "); out.write("\r\n"); out.write(" </body>\r\n"); out.write("</html>");
从源码里可以看出,HTML的注释将被原样地打印到客户端HTML代码中去,而jsp注释则不会被输出。因此jsp注释里面你可以输入你任何想输入的处理流程,而不担心被别人通过客户端HTML源代码窥视,因为jsp注释只是为开发者服务。
<%@ page %>
page指令用来定义jsp的页面属性。具体可配置参数如:
<%@ page language="java" extends="className"" import=importList"" session="true|false" buffer=none|size"" autoFlush="true|false" isThreadSafe="true|false" info="infoText" errorPage="errorPageURL" isErrorPage="true|false" contentType=" " %>
language=”scriptingLanguage”: 设定描述语言,默认值是”java”,而且也是目前唯一有效的设定值。如果一个月前不是Oracle而是Miscrosoft收购了sun,这里可能还将会有个c#的选项。
extends=”className”:设定产生出来的class所以继承的类。前文的源码中科研看到,默认继承的类是HttpJspBase,除非你认为自己可以优化tomcat的源码,否则不要去指定它。
import=”importList” :导入jsp程序所要用到的类的列表。这是唯一可以多次指定的属性。很明显,这里import的类,转换为java源码后将成为类头的import语句。
session="true|false":定义页面是否要用到session。默认是true.当页面加上<%@ page session=”false” %>后,_jspService()方法里将会去除这里缺少了session的声明和赋值。在jsp代码段中直接调用session将会提示变量未声明的错误。因此,session=”false”的意思是禁用了session这个变量,但session技术并没有被禁用,你仍然可以使用request.getSession()来获取并使用session.
buffer="none|size": jsp所需缓存量的大小,单位是KB.默认不得小于8KB.
autoFlush="true":定义jsp所用的buffer满时,是否自动将内容输出到客户端,默认是true。如果指为false,当内容超出时,将会产生overflow的exception。特别要注意的是,当buffer设为none的时候,autoFlush不能被设成false。
isThreadSafe="true|false": 设置线程安全。默认为true,表示以多线程方式出来客户端的请求。当设置为false时,将以单线程方式执行客户的请求,这在页面请求量过多是将是一场灾难,因为必须在前一个请求处理完毕后才能处理后一个请求。
info="infoText":设置jsp程序说明,这个一般不会去设置。
errorPage="errorPageURL":设置发生异常时的转向页面。
isErrorPage="true|false":是否异常页面,默认是false。如果设定为true,则会在解释后的java类里面声明一个exception对象:
Throwable exception = (Throwable) request.getAttribute(“javax.servlet.jsp.jspException”);
因此在错误页面中可以直接使用exception对象。
contentType=”contentType” 设置jsp的文件及编码格式,如contentType=”text/html; charset=utf-8”,作用同response.setContentType(“contentType”),但必须在传回任何结果之前调用它。
发表评论
-
Hadoop从零开始(一)——环境准备
2012-07-12 23:17 1469一、Linux虚拟机安装 Hadoop要运行在Uni ... -
JSP拾遗(十四)——单点登录
2009-08-03 09:58 0todo -
JSP拾遗(十三)——文件上传
2009-08-01 19:53 0TODO -
JSP拾遗(十二)——分页查询
2009-08-01 19:52 0TODO -
JSP拾遗(十一)——注册验证
2009-08-01 19:52 0TODO -
JSP拾遗(十)——权限控制
2009-08-01 19:51 0TODO -
JSP拾遗(九)——中文乱码
2009-08-01 19:48 0TODO -
JSP拾遗(八)——Listener
2009-08-01 19:44 2006Javax.servlet中定义了三类监听器:ServletC ... -
JSP拾遗(七)——Filter
2009-08-01 18:48 983一个过滤器必须要实现javax.servlet.Filter, ... -
JSP拾遗(六)——Servlet
2009-08-01 18:42 936在典型的J2EE中,我们的应用是通过应用服务器(如TOMCAT ... -
JSP拾遗(五)——jsp文件包含指令
2009-07-12 19:36 2149<%@include file=”fileName” ... -
JSP拾遗(三)——jsp内置对象
2009-07-08 22:40 1195在看本章介绍的jsp ... -
JSP拾遗(二)——从jsp到servlet
2009-06-16 22:08 1763无代码无真相。这里我们来看看,一个简单的jsp页面, ... -
JSP拾遗(一)——初识JSP
2009-06-16 21:53 1141我的java编程学习,即是从jsp开始。 什么是jsp ...
相关推荐
JSP扩展——自定义标签JSP扩展——自定义标签JSP扩展——自定义标签JSP扩展——自定义标签JSP扩展——自定义标签
JSP核心技术——JSP引擎内幕(2010).pdf 内除了引擎外,还有jsp标签、线程安全
jsp毕业设计——jsp报名系统.zip
JSP技巧收集——超多超赞的JSP实用小技巧哦!
jsp网络编程——源文件(06——09)帮助
jsp网络编程——源文件(10——11)帮助
jsp网络编程——源文件(12——13),帮助
jsp网络编程——源文件(01——05),帮助
jsp毕业设计——jsp网上选课系统.zip
jsp网络编程——多媒体文件(7),对初学者很有帮助的
jsp毕业设计——jsp企业人事管理系统.zip
JSP网络编程——多媒体(1——3),对出学者很有帮助的。
jsp开发实例——购物车,是一个综合开发实例。比较有针对性。
jsp毕业设计——jsp商品进销存系统.zip
jsp毕业设计——jsp-企业人事管理系统.zip
Javaweb账号登陆 实现登录页面login.jsp,在其中输入用户名,密码,发送到登录验证页面loginCL.jsp,验证登录成功.
用JSP写的——企业人力资源系统,希望大家不要错过!经典啊,经典
JSP毕业设计——学生成绩管理系统(mysql),内涵结构框架,jsp页面代码,操作过程说明,mysql数据库构建源码。
JSP源码——分页 QQ菜单 jsp标签_noka3.9.zip
jsp网络编程——多媒体(chap02) 实用