广东海洋大学 JSP程序设计 WEB开发技术 复习提纲

  • 格式:docx
  • 大小:52.65 KB
  • 文档页数:9

《JSP程序设计》一、概述1.3 JSP页面与Web服务目录1. 访问JSP页面的四种方式:(1)根目录:.\webapps\Root,直接通过http://127.0.0.1/JSP文件名访问(2)webapps下的Web服务目录:.\webapps\MyWeb,可通过http://127.0.0.1/MyWeb/JSP文件名访问,新建后不必重启Tomcat服务器;(3)新建Web服务目录:需要事先配置conf文件夹下的server.xml,添加:<Context path="虚拟路径" docBase="物理路径" debug="0" reloadable="true" />,修改后必须重启Tomcat服务器;(4)在已建立好的Web服务目录下新建路径,通过网址相对路径的方式也能访问文件。

1.4 JSP运行原理1.JSP页面的运行原理:(1)当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个java文件,并对该文件编译生成字节码(.class)文件,然后执行字节码文件响应用户的请求。

(2)当该JSP页面再次被请求执行时,JSP将直接执行字节码文件来响应用户,从而提高JSP页面的访问速度。

2.JSP页面的执行过程:(1)JSP引擎将JSP页面中的HTML标记发送到用户浏览器,由浏览器中的HTML解释器负责解释执行HTML标记;(2)JSP引擎处理JSP标记,并将有关的处理结果发送到用户浏览器上;(3)执行“<%%>”之间的Java程序片,把执行结果以字符串的形式交由用户浏览器显示;(4)当多个用户请求一个JSP页面时,Tomcat服务器为每个用户启动一个线程,负责执行字节码文件响应请求。

二、JSP页面与JSP标记2.1 JSP页面的基本结构(1)HTML标记(2)JSP标记(3)变量/方法的声明(4)Java程序片(5)Java表达式<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标记--> <%!int sum; // 数据声明public int getFactorSum(int n) { // 方法声明sum = n;return sum; }%><HTML><BODY bgcolor="cyan"> <!--html标记--><% out.println("<br>Hello World<br>"); // java程序片%><%=sum%> <!-- Java表达式--></FONT></BODY></HTML>2.2 变量和方法的声明<%! 变量/方法声明语句%>(1)在整个JSP页面内有效,与<%!、%>位置无关,习惯写在前面;(2)在<%!和%>中声明的变量成为JSP页面(类)的成员变量;(3)多用户访问JSP页面时,页面的成员变量在多个线程之间共享。

(4)避免用户在操作成员变量时变量被其他用户修改,有以下两种方法:① 合理配置变量作用域;② 对操作成员变量的方法使用synchronize关键字修饰。

2.3 Java程序片<% Java程序片%>(1)一个JSP页面可以有许多可分割的Java程序片,JSP引擎会按顺序执行它们;(2)Java程序片中声明的变量称为JSP页面的局部变量;(3)多用户访问JSP页面时,页面的Java程序片在多个线程中独立运行。

2.4 表达式<%=表达式%>(1)不能在表达式中插入语句,如<%=x=100%>是错误的;(2)<%和=之间不能有空格;(3)表达式的值交由服务器计算,计算结果以字符串的形式发送至用户端显示。

2.5 JSP中的注释(1)HTML注释:用户可通过浏览器查看HTML注释的内容;<!-- HTML注释-->(2)JSP注释:编译JSP页面时将忽略JSP注释,用户无法查看JSP注释的内容。

<%-- JSP注释--%>2.6 JSP指令标记(静态)2.6.1 page指令标记——定义JSP页面的属性及其取值<%@ page 属性="取值1","取值2",… %>page属性的取值:(1)language:脚本语言,目前只能取java(默认取值);(2)import:为JSP页面引入Java核心包中的类,如:<%@ page import="java.io.*" %>默认引入了ng.*, javax.servlet,javax.servlet.jsp.*和javax.servlet.http.*;(3)contentType:确定JSP页面响应的MIME类型(打开方式)及字符编码;如:<%@ page contentType="text/html;charset=GB2312" %><%@ page contentType="application/msword" %>contentType属性只能指定一个值,不允许指定多值;(4)session:是否需要使用内置的session对象(见4.3节),默认为true;(5)buffer:设置内置输出流out对象(见4.4节)的缓冲区大小,默认8KB,取值none 表示不使用缓冲区;(6)autoFlush:当out对象的缓冲区被填满时,缓冲区是否自动刷新,默认true;当取值false时,缓冲区满会出现缓存溢出异常;buffer取值none时该属性无法设置。

(7)isThreadSafe:设置JSP页面是否可多线程访问,默认true;(8)info:JSP页面设置一个常用且经常修改的字符串值,可通过getServletInfo()方法调用。

2.6.2 include指令标记——在该指令处静态插入一个文件<%@ include file="文件URL" %>插入的jsp文件中,page指令的contentType属性的值要与原文件保持一致。

2.7 JSP动作标记(动态)2.7.1 param动作标记——为其他标记以名值对的形式传递参数<jsp:param name="属性名" value="属性值" />不能单独使用,只能作为include、forward和plugin动作的子标记使用。

2.7.2 include动作标记——动态加载文件<jsp:include page="文件URL" /> 或<jsp:include page="文件URL">param子标记</jsp:include>[注]include指令标记与include动作标记的区别:include指令标记:编译时处理文件,依赖于当前JSP页面,执行速度快;include动作标记:运行时处理文件,可使用param子标记灵活处理,执行速度慢;2.7.3 forward动作标记——页面重定向<jsp:forward page="页面地址" /> 或<jsp:forward page="页面地址">param子标记</jsp:forward>地址不变,属于服务器端的跳转,可用param子标记向跳转页面传参;转向的文件可以使用request内置对象获取param子标记的name属性的值2.7.4 plugin动作标记——加载Java plugin插件,运行Java applet小程序<jsp:plugin type="applet" code="小程序的字节码文件" jreversion="JRE版本" width="小程序宽度" height="小程序高度"><jsp:fallback>提示用户浏览器是否支持插件下载的信息</jsp:fallback></jsp:plugin>2.7.5 useBean动作标记——创建、使用JavaBean(见第七章)习题二:T2:两次(Java程序片在多线程中独立运行)T3:不允许,允许(contentType属性只能指定一个值)T4:第一个用户显示sum的值为610,第二个用户显示sum的值为610+600=1210。

T6:见2.7.2[注]三、Tag文件与Tag标记使用Tag文件的优点:(1)代码复用(2)数据处理与数据显示分离,有利于页面维护;用户不能通过Web服务目录直接访问Tag文件。

3.1 Tag文件的结构(tag指令见3.4.1节)<%@ tag pageEncoding="Tag文件编码" %>[tag文件内容,要求同jsp文件]3.2 Tag文件的存储目录——Webapps目录\WEB-INF\tags3.3 Tag标记3.3.1 Tag标记与Tag文件—— JSP页面必须通过调用Tag标记调用Tag文件<前缀:Tag文件名[对象1="值1" 对象2="值2"...] /> 或<前缀:Tag文件名[对象1="值1" 对象2="值2"...]>标记体</前缀:Tag文件名> [注]此处“对象”指的是JSP文件向Tag文件传递的参数名3.3.2 Tag标记的使用使用Tag标记调用Tag文件前,需要使用taglib指令引入Web服务目录下的标记库:<%@ taglib tagdir="标记库目录" prefix="前缀" %>若干个Tag文件所对应的Tag标记组成一个标记库,标记库可以有若干个,引入标记库后,可以使用带前缀的Tag标记调用Tag文件。

[注](1)标记库必须以"/WEB-INF/tags"开头;(2)Tag文件<%!%>中声明的变量,会在Tag文件执行完毕后立即释放内存空间。