爱心技术专栏专题

Jsp初学者必读

摘录:java应用 来源:java应用 加入时间:2007年01月22日
摘要:
Jsp初学者必读

选择自 aaronsi 的 Blog
Jsp 模型


转载:转载请保留本信息,本文来自
http://www.51dibs.com
/html/2006/article/info7/a_5e6c7f74dcb743e9.htm

Jsp初学者必读

站点:爱心种子小博士 关键字:Jsp初学者必读

   
Jsp初学者必读
选择自 aaronsi 的 Blog
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

客户服务中心信箱:[email protected] [email protected] 网站地图

声明

合作伙伴: