|
|
Jsp初学者必读 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
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--%>  声明: 可以访问的java变量和方法 jsp 语法 <%! Declaration; %> xml 语法 <jsp:declaration> declaration; </jsp:declaration> 书写声明的规则: 1. 可以声明静态或实例变量、新的方法或是内部类。 2. 每个变量声明都必须以分号结束。 3. 可以通过import 语句使用的变量和方法在没有所需的额外声明的情况下也能使用。 4. 声明方法和变量后,以后的java代码都可用。 5. 它通常包含将超出servlet的_jspService(…) 方法之外的代码。  表达式 jsp 语法 <%=expression%> xml 语法 <jsp:expression> expression; </jsp:expression> 表达式规则: 1. 通常不以分号结束。 2. 从左到右求值。 3. 可由多个部分或表达式组成  Scriplet Jsp 语法 <% code fragment %> xml 语法 <jsp:scriptlet> code fragment; </jsp:scriptlet>  语句 处理花括号  指令 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.
 隐含对象 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( )方法时初始化 指令<%@ …%> 是在翻译时调用的。  操作 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

|
|
相关文章:相关软件: |
|