您的位置:首页 > Web前端 > JavaScript

JSP学习笔记

2004-11-05 18:20 871 查看
2004-9-27 星期一 晴

JSP介绍

1. 概况

答:1) 以文本为基础能够返回动态内容到客户端;

2) Http是请求和响应的默认协议;

3) 一个页面可以混和html代码、Java代码以及JSP标答;

4) 允许访问组件;

2. JSP的好处

答:1) 通过组件使用支持组件模型和软件重用;

2) 源文件改变自动编译;

3) 用户自定义标签简化页面开发;

4) 能把Web内容, Java代码分开(针对Servlet而言);

5) 平台无关;

6) 性能和可扩展;

7) 可靠;

作为J2EE的一部分(Servlet、JSP以及EJB是J2EE的三大组件)。

创建、配置以及执行JSP

1. JSP环境

答:1) 开发环境

a. 浏览器:IE/Netscape

b. 开发工具:记事本、SunOne Studio、JBuilder、WSAD

2) 配置和执行环境

a. Tomcat

b. Weblogic

c. Websphere

d. SunONE Application Server

2. 第一个JSP页面

答:1) 脚本小程序(Scriptlet):

对应于Servlet中service方法中内容

<%...%>或<jsp:scriptlet></jsp:scriptlet>

2) 指令(Directives)

a. page

<%@page import="java.util.*"%>或<jsp:directive.page import="java.util.*"/>

b. include

<%@include file="footer.jsp"%>或<jsp:directive.include file="footer.jsp"/>

3) 声明(Declarations)

<%!String str="This is a string!";%>或<jsp:declaration>str="This is a

string!"</jsp:declaration>

4) 表达式(Expressions)

<%=str%>或<jsp:expression>str</jsp:expression>

2004-9-28 星期二 晴

1. 在JSP页面通过以下脚本元素可用以插入Java代码

答:1) 声明(Declarations):<%! %>或<jsp:declaration></jsp:declaration>

2) 脚本小程序(Scriptlet):<%...%>或<jsp:scriptlet></jsp:scriptlet>

3) 表达式(Expressions):<%=%>或<jsp:expression></jsp:expression>

4) 指令(Directives):<%@%>或<jsp:directive.type attribute />

2. 声明(Declarations)

答:1) 允许定义将插入到Servlet类的主体中(由service调用, 与Service()方法平级)的一些方法或域;

2) 语法:

<%! Java代码 %> 或

<jsp:declaration></jsp:declaration>

3) 示例:

a. 变量定义:

<%! int i=0;%>

b. 方法定义:

<%! public String f(int i){if(i<3) return("...");...}%>

4) 声明规则:

a. JSP中声明的变量和方法对应于Servlet中的实例方法和实例变量。这些将被同时请求该页面的所有用户

所共享;

b. 在使用变量或方法前须先定义(不是说声明变量的位置在页面中要处于使用变量的前面,而是指变量不声

明不能使用);

c. 声明的变量或方法的作用域为当前页面或包含的页面;

d. 语句间以分号分隔。

3. 脚本小程序(Scriptlet)

答:1) Java代码片断,能执行比标记语言更强的功能

2) 语法:

<%...%>或<jsp:scriptlet></jsp:scriptlet>

3) 脚本小程序规则:

a. 你使用的脚本语言决定了脚本小程序的规则;

b. 语句间以分号分隔;

c. 可以使用默认的对象、import进的类、declaration声明的方法和对象以及useBean tag中声明的对象。

4. 表达式(Expression)

答: 1) 用来将值直接插入到输出中

2) 语法:

<%=%>或<jsp:expression></jsp:expression>

3) 表达式规则:

a. 你使用的脚本语言决定了脚本小程序的规则;

b. 执行的顺序为从左到右;

c. 分号不能用于表达式。

5. 指令(Directive)

答:1) Page: 定义页面的全局属性

语法:<%@page ...%>或<jsp:directive.page .../>

2) Include: 插入一个静态页面内容

语法:<%@include file="header.jsp"%>或<jsp:directive.include file="header.jsp"/>

6. 操作(Actions)

答:1) forward操作:将请求指向一个特定的页面(类似于Servlet中的RequestDispatcher);

语法:<jsp:forward page="URL"/>

2) include操作:在页面插入动态的内容

语法:<jsp:include page="URL" flush="true"/>

3) plugin操作:在输出页面嵌入一个对象

语法:<jsp:plugin type="bean|applet" code="objectCode" codebase="objectCodebase">

<jsp:params>

...

</jsp:params>

</jsp:plugin>

7. 注释

答:JSP中有二种类型的注释:

1) 服务器端注释:不会送回客户端

<%--this is a comment--%>

2) 客户端注释:发送回客户端

<!--comments-->

8. JSP处理过程:

答:JSP源文件处理分成二个阶段:

1) JSP页面转换阶段:页面被编译成一个Java类,所有的HTML标记和JSP标记都被转换创建一个Servlet。这时

,脚本和表达式还没有被执行;

2) 请求处理阶段:发生在服务器将一个客户端请求指向JSP页面。一个请求对象创建、解析以及提交给编译好

的JSP对应的servlet。当这个servlet处理求求的时候它执行先前在JSP中定义的处理脚本小程序和表达式。

9. 使用脚本代码的缺点和指导方针

答:1) 缺点:

a. 过度使用脚本代码使用JSP页面混乱和难以维护;

b. 脚本代码降低JSP二个主要的优点:软件重用和代码分开

2) 指导方针:

只在组件功能无能为力或需要有限的脚本时使用。

2004-9-29 星期三 晴

1. JavaBeans

答:1) JavaBeans是一个轻便的、平台无关的、用Java写的组件模型,用以创建可重用的组件;

2) Beans能被组件创建健壮、跨平台的应用程序和小应用程序。

2. JSP和组件

答:1) 在需要的时候,JSP可以访问JavaBean和EJB;

2) JSP使用action标记来使用、修改以及创建服务器端对象(例如Beans);

3. JavaBean与一般Java类的区别

答:1) Bean类必须具有不带参数的构造函数;

2) Bean类应该没有任何公用实例变量(域);

3) 通过get和set方法应该获得一致的值。

4. Bean的基本用法

答:1) 调用Bean

语法:<jsp:useBean id="thread1" class="MyClass" type="Runnable"/>

通常可以认为等价于小脚本:

Runnable thread1 = new MyClass();

以上代码意味着仅当不存在具有相同id和scope的对象时实例化class所指定的类对象,并将其绑定到

由id指定名称的变量

2) 访问Bean的属性

语法:<jsp:getProperty name="book1" property="title"/> 或者

<%=book1.getTitle()%>

3) 设置Bean的属性

a. 简单情况

语法:<jsp:setProperty name="book1" property="title" value="Core Servlets and JavaServer

Page"/> 或者<%book1.setTitle("Core Servlets and JavaServer Page");%>

b. 使用JSP表达式作为value参数

语法:<jsp:setProperty

name="entry"

property="itemID"

value='<%=request.getParameter("itemID")%>'/>

c. 建立个别属性与输入参数之间的关联

语法:<jsp:setProperty

name="entry"

property="numItems"

param="numItems"/> //使用param指定输入参数,此参数值自动用作该属性值,并自动执行

简单的类型转换

d. 建立所有属性与输入参数之间的关联

语法:<jsp:setProperty

name="entry"

property="*"/>

需要注意:i : 当输入参数遗失时,不执行任何操作,系统不会提供null作为属性值;

ii: 无法完成值类型为double的属性的类型转换;

iV: 在使用自动类型转换时,需要考虑错误处理页面;

v : 属性名和输入参数必须完全匹配。

5. 共享Bean

答:1) scope作用域:

a. page : 默认值,表明Bean对象除了被绑定到局部变量,还将位于PageContext对象中;

b. application: 表明Bean对象除了被绑定到局部变量,还将位于ServletContext对象中;

c. session : 表明Bean对象除了被绑定到局部变量,还将位于当前请求相关的HttpSession对象中;

d. request : 表明Bean对象除了被绑定到局部变量,还将位于ServletRequest对象中;

2) 调用Bean的方式:

<jsp:useBean ...>

语句(仅当创建Bean而不是使用现有Bean时才被执行)

</jsp:useBean>

2004-9-30 星期四 晴

处理异常

1. 运行时异常

答:1) 一个程序运行时重获的错误;

2) 能被一固有的异常对象引用所使用;

3) 可以利用异常引用创建或产生一个JSP页面显示异常信息给用户。

2. 创建一个异常跟踪方案

答:1) 在每一个JSP页面,包含要创建的异常页面名称;

<%@page import="numberguess.NumberGuessBean" errorPage="error.jsp"%>

2) 创建一个异常页面;

<%@page isErrorPage="true"%>

3. JSP页面中的异常处理

答:1) <%=exception.toString()%> 打印异常名称;

2) <%exception.printStackTrace();%> 打印当前错误流中所有错误的列表;

3) <%=exception.getMessage()%> 打印错误的详细描述信息

更高级的主题

1. JSP中黙认的内在对象

答:名称 类型 注释和范围

request javax.servlet.http.HttpServletRequest request

response javax.servlet.http.HttpServletResponse response

pageContext javax.servlet.jsp.PageContext page

session javax.servlet.http.HttpSession session

application javax.servlet.ServletContext ServletContext

out javax.servlet.jsp.JspWriter output stream

config javax.servlet.ServletConfig ServletConfig

page javax.lang.Object page

Exception java.lang.Throwable page

2. 默认对象之请求(request)

答:封装了来自客户端的请求:

方法:1) getCookies: 取得Cookie数组;

2) getMethod: 返回请求形成的方式(GET/POST);

3) getParameterNames: 返回FORM中对象名称的枚举;

4) getParameter:返回指定名称的对象值;

5) getParametervalues: 返回指定名称的对象值数组;

6) setAttribute: 设置属性;

7) getAttribute: 返回属性值;

getAttributeNames: 返回属性名称的枚举

3. 默认对象之out

答:JSPWriter的一个实例, 用于发送响应给客户端

方法:1) print(String)/println(String)

2) print(int)/println(int)

3) flush()

4. 默认对象之exception

答:1) 用于异常对象的异常实例;

2) 异常页面在page指令中存在属性isErrorPage="true";

3) 方法:getMessage()/printStackTrace()/toString()

5. 默认对象之session

答:1) HttpSession的一个实例, 用于在一个session中保持状态

2) 方法:getAttribute()

setAttribute()

removeAttribute()

getAttributeNames()

6. 默认对象之application

答:1) ServletContext一个实例,用于保持application的状态

2) 方法:getAttribute()

setAttribute()

getInitParameter()

getServletInfo()

3) application的作用域比session大得多,一个session和一个client联系, 而application保持了用于所有客

户端的状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: