JSP基础知识之JSP的构成元素
2012-03-13 00:51 java线程例子 阅读(337) 评论(0) 编辑 收藏 举报JSP注释
1).显示注释:<!--注释内容-->
2).隐式注释:<%--注释内容-->(在客户端的HTML源代码中看不到这些注释的内容)
JSP脚本
1、声明
<%! int i = 10; %> <%! String UserName = “cannel_2020”;%> 声明多个 <%! inti = 10; String UserName = “cannel_2020”; Ballb = new Ball(); %>
注意:
1).在页面中想要使用某些变量,需要先声明变量。
2).声明必须以“;”结尾。
3).一个声明仅在一个页面中有效,对于新建的页面,需要重新声明变量
4).<%@page%>中被包含进来的已经声明的变量和方法,不需要对它们重新进行声明
2、脚本程序
<% for(inti = 0; i < 10; i++){ %> 脚本程序 <% } %>
·脚本程序不能用于定义方法;只有声明可以用来定义方法。
·在declareation中声明的变量是JSP页面实现类的实例变量。这些变量对于该页面中其他代码语言或者方法是可见的。
·在脚本程序中声明的变量,对于JSP页面实现类中的方法是局部的。它们只在定义它们的代码块中可见。
3、表达式
<%= UserName %> 显示UserName的值。不需要用分号结尾。
注意:在JSP中%与=、@符号之间不能有空格。
JSP指令
1、page指令:用于设定页面的属性。
<%@ page contentType=”text/html; charset=gb2312” language=”java” import=”java.sql.*” errorPage=”” %>
1)、Page指令的作用范围是整个JSP文件和该文件用include指令或<jsp:include>包含进来的任何静态文件,整个JSP文件盒这些静态文件一起叫做一个“平移单元”。用户可以在一个“平移单元”使用多个Page指令,但是每一个属性只能使用一次,除了import。不论将Page指令放到JSP文件或被包含的文件的任何一个位置,它的作用范围都是整个“平移单元”。然而,一个好的编程风格是常常将它放到文件的顶部。
2)、常用页面指令属性:
属性 |
描述 |
import |
导入到页面的所有java包. |
session |
是否加入一个会话。有效值是true和false。默认值是true。 |
isThreadSafe |
容器是否向该页面并发的传递请求。有效值是true和false。默认值是true。 |
info |
提供页面的内容、目的、名字等信息 |
errorPage |
显示错误的Web页面的URL。如果你没有给出一个URL,容器会使用自己默认的URL。 |
isErrorPage |
当前页面是否是一个错误页。默认是false. |
contentType |
定义页面内容的类型。默认值是text/html |
pageEncoding |
当前页面的字符集。默认值是ISO-8859-1(拉丁脚本) |
language |
声明脚本语言的种类,暂时只能用”java”。 |
extends |
<%@ page extends=”package.classs”%>标明JSP编译时需要加入的Java class 的全名,但是要慎重地使用它,它会限制JSP的编译能力。 |
3)、注意:
·在些包在JSP编译时已经自动导入,不需要在页面import了:
java.lang.*
javax.servlet.*
javax. Servlet.jsp.*
javax. Servlet.http.*
·<%@ page session=”true/false”%设置是否需要HTTP session,session用来暂存信息,因为它的作用是一次会话时间,所以可以用session在页面间传值。
·Page指令不适用于任何动态的包含文件。
2、include指令:该指令用于包含一个文本或代码的文件。
<%@ pagecontentType="text.html;charset=gb2312"%> <html> <head><title>includetest</title></head> <body> 当前的时间是:<%@include file = "data.jsp" %> </body> </html>
data.jsp文件如下:
<%=newjava.util.Date().toLocaleString()%>
JSP操作元素
1、<jsp:forward>:将客户端的请求转交给一个HTML文件、JSP文件或脚本段处理。
注意:JSP引擎对主JSP页面<jsp:forward>下面的代码不再执行。如果JSP文件的输出被设置为缓冲输出(即使用默认的page指令值或直接设置缓冲去的buffer大小),则在请求被转交之前,缓冲区被清空。如果输出被设置为非缓冲输出(即用page指令设置buffer=none),而且输出区中已经有内容,则使用<jsp:forward>元素,将会导致非法例外。
2、<jsp:include>:在JSP文件中,包含一个静态或动态文件。
3、<jsp:useBean>:调用和创建一个指定名字和使用范围的Bean。如果这个Bean不存在,则创建该Bean。
属性 |
描述 |
id |
在页面中访问的bean的名称,该名称必须是唯一的。 |
scope |
bean的作用域。有效值:page、request、session或application。默认值是page。 |
class |
bean的完整的类名。 |
beanname |
bean的名称,传给java.beans.Beans类的instantiate()方法。通常我们使用的是class属性,而不是beanName. |
tyoe |
引用bean变量的类型。type可以是bean的类,或者是bean的任何父类,或者是这个bean或其父类实现的任何接口。 |
4、<jsp:setProperty>:设置Bean的一个或多个属性值。
属性 |
描述 |
name |
与useBean操作定义的Bean的id属性值相同。 |
property |
被赋值的属性名称。用property命名这个Bean的一个属性,它将调用这个属性的setXX()方法。当property=”*”,这样JSP将读取客户端浏览器发来的请求中的所有参数,然后bean中设置那么与请求(request)中的与参数同名的属性。 |
param |
浏览器请求中的参数名,这个参数用于设置属性。允许JSP匹配各个变量和参数。 |
value |
设置属性的值。 |
设置属性的值有3中方法:
1)、将用户请求中的所有值(这些值一般式客户表单中的元素的值,且作为参数存储在request对象中)和Bean中相匹配的属性赋值。此时,Bean中属性的名字必须和客户端表单中元素的名字一样。
<jsp:setProperty name=”beanInstanceName”property=”*”>
2)、用请求对象中一个特定的值和Bean中相匹配的属性赋值。当用表单中一个元素的值给Bean中一个属性赋值,而且元素名和属性名不一样时,则必须用param指定一个参数。
<jsp:setProperty name=” beanInstanceName” property =”propertyName”[param=”parameterName”]/>
3)、用字符串的值或表达式的值直接设置为Bean的属性。
<jsp:setProperty name=” beanInstanceName”value=”{String | <%=expression%>}”
5、<jsp:getProperty>:取Bean属性的值,以便在结果页面中显示。·
6、<jsp:plugin>、<jsp:params>、<jsp:fallback>:元素用于JSP页面,它们将生产的HTML页面中包含applet或者JavaBean。使用这些元素而不用手工编写HTML代码,这让服务器可以利用JSP标签创建浏览器相关的HTML。
7、<jsp:attrubute>、<jsp:body>:用于标准操作和定制操作。
8、<jsp:invoke>、<jsp:doBody>:只在标签库中有效。
9、<jsp:param> :用来以“名-值”对的形式为其他标签提供附加信息。在JSP页面中可也是用request对象的getParamter()和getParamterValues()方法来访问这些参数。它和<jsp:include>、<jsp:forward>、<jsp:plugin>一起使用。
PS:虽然我深知熬夜不好,我最近总是1点左右才睡,呵,谁叫我们是程序员呢。但是又想想,身体是革命的本钱,身体垮了,还怎么奋斗呢。所以,现在还是赶快去睡吧。明天还有早课(7:40)呢。估计又会逃课了。全世界晚安!