Jsp初学者必读

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Jsp 模型

Jsp 模型的两个目标:

1. 允许并鼓励Presentation层与java代码的分离

2. 使开发人员能以最大的能力和灵活性编写具有动态内容的web.

标准的servlet 扩展了java.servlet.HttpServlet

从jsp 转换的servlet都必须利用javax.servlet.jsp.JspPage接口

方法:

void jspInit()

void jspDestroy()

javax.servlet.jsp.HttpJspPage接口增加了

void _jspService(HttpServletRequest req,HttpServletResponse res)

过程如下:

1. 翻译页面(.jsp到.java)

2. 编译jsp(.java到.class)

3. 加载类

4. 创建实例

5. 在该页面第一次初始化时调用jspInit().

6. 为每个jsp 请求调用_jspDestroy( )

7. 在服务器销毁该jsp时调用_jspDestroy( ).

JSP元素

 隐含的注释:

jsp 语法 <%--comment--%>

&#61548; 声明: 可以访问的java变量和方法

jsp 语法 <%! Declaration; %>

xml 语法 <jsp:declaration>

declaration;

</jsp:declaration>

书写声明的规则:

1. 可以声明静态或实例变量、新的方法或是内部类。

2. 每个变量声明都必须以分号结束。

3. 可以通过import 语句使用的变量和方法在没有所需的额外声明的情况下也能使用。

4. 声明方法和变量后,以后的java代码都可用。

5. 它通常包含将超出servlet的_jspService(…) 方法之外的代码。

&#61548; 表达式

jsp 语法

<%=expression%>

xml 语法

<jsp:expression>

expression;

</jsp:expression>

表达式规则:

1. 通常不以分号结束。

2. 从左到右求值。

3. 可由多个部分或表达式组成

&#61548; Scriplet

Jsp 语法

<% code fragment %>

xml 语法

<jsp:scriptlet>

code fragment;

</jsp:scriptlet>

&#61548; 语句

处理花括号

&#61548; 指令

1. include指令 包含一个静态文件

jsp 语法:

<%@ include file = “relativeURL” %>

xml 语法:

<jsp:directive.include file=”relativeURL”/>

路径以“/”开始是相对于上下文。

路径起始于一个目录或文件名,那么该路径是相对于jsp页面的。

2. page 指令定义将应用于整个jsp页面的属性。

Jsp 语法 〈%@ page Attributes %〉

language\extends\import\session\buffer\autoFlush

\isThreadSafe\info\errorPage\isErrorPage\contentType

\pageEncoding

xml 语法

〈jsp:directive.page pageDirectiveAttribute〉

规则:

1) 在一个翻译单元可多次使用page

2) 除了import 外,一个翻译单元只能用一个page属性

3) page指令可放在jsp页面的任何地方。

3. taglib指令指定在jsp页面内使用的标志库和定制标志的前缀。

Jsp 语法:

<%@ taglib uri=”URIForLiabrary” prefix=”tagPrefix” %>

前缀是唯一的,且不能使用:jsp jspx java javax servlet sun sunw.

&#61548; 隐含对象

plication对象:

web.xml:

<context-param>

<param-name></>

<param-value></>

</>

可如下获取:

application.getInitParametr(“paraname”);

pageContext对象:

方法:

getOut( )

getException( )

getPage( )

getRequest( )

getResponse( )

getSession( )

getServletConfig( )

getServletContext( )

forward( )

include( )

handlePageException( )

它拥有页面作用域,这意味着只能通过_jspService( )方法访问该对象。

config 对象:

通过pageContext 的getAttribute(String name)访问config属性。

request对象:

即使使用了forward( ) include( ) 等,该请求也在作用域内。

response 对象:

被绑定到PageContext ,能够在_jspService(…)中访问。

如page指令的缓冲区没有设成none,http状态代码和标题能够在发送到客户端后在被更改。

session 对象:

被绑定到PageContext,getAttribute(String name)可访问数据。

out 对象:

属于javax.servlet.jsp.JspWriter 类,是java.io.PrintWriter的缓冲版本。

缓冲大小可设置〈%@ page buffer=”16kb” %〉

page对象:

相当于java中的this.

Exception对象:

是java.lang.Throwable的实例,如果使用page指令的errorPage属性,那么exception对象对该页面就不可用。例如:

〈%@page isErrorPage=”true” %〉

<pre>

<% exception.printStackTrace(new PrintWriter(out)); %>

表达式〈%= … %〉是在处理HTTP或HTTP服务器处理请求的时候求值的。

Scriptlet 〈% …%〉

处理请求时执行,被嵌入到_jspService(…)方法中

声明 〈%!…%〉

调用jsp的jspInit( )方法时初始化

指令<%@ …%>

是在翻译时调用的。

&#61548; 操作

jsp:include

<jsp:include page=”relativeURL”>

or

<jsp:include page=”relativeURL” flush=”true|false”>

<jsp:param name=”parameterName” value=”parameterValue”>

</jsp:inlcude>

page 指定目标资源的相对URL

param标志确定需要传递的参数值

flush标志等于true或false 默认为false 要求设为true

include 有两种使用方法:

1. 具有file属性的指令,包含一个静态文件

2. 使用操作将令一个文件的静态或动态的输出结合到响应中

jsp:forward:

不会处理jsp:forward模块后的任何代码。

jsp:plugin:

<jsp:plugin

type=”bean|applet”

code=”classFileName.class”

>

<jsp:params>

<jsp:param name=”pramName” value=”paramvalue”/>

</jsp:params>

<jsp:fallback> text message for user</jsp:fallback>

</jsp:plugin>

jsp:useBean

<jsp:useBean id=”beanInstanceName”

scope=”page|request|session|application”

{

class=”package.class”|

type=”package.class”|

class=”package.class” type=”package.class”|

beanName=”{package.class|<%=expression %>}”

type=”package.class”

}

/>|</jsp:useBean>

同时使用class和beanName是无效的

jsp:setProperty

jsp:getProperty

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航