JSP复习

一、JSP隐含对象:

JSP隐含对象就是在JSP页面中不用声明就可以使用的对象。隐含对象是JSP引擎自动创建的Java类实例,它们能与Servlet环境交互。JSP规范中定义了9种隐含对象,它们是request、response、session、out、application、pageContext、page、config和exception,这些对象在服务器端和客户端交互过程中分别完成不同的功能,重点是request、response、session和application等。 

request:代表来自客户端的请求,通过它可以查看请求参数、客户端信息以及请求的HTTP头等。request对象的方法有很多,比较重要的方法是getParameter()、 getParameterValues()和getHeader()。 

response:代表对客户端的响应,通过response对象来组织发送到客户端的数据。response对象的方法也有很多,使用较多的方法是sendRedirect()和setHeader()。 

out:代表向客户端发送数据的对象,与response不同,通过out对象发送的内容是浏览器需要显示的内容,是文本一级的。在每个JSP页面中都用到out对象,它最常用的方法print()和 println()。 

session:通过session对象使服务器识别同一个客户。一个客户从打开浏览器连接到服务器开始,到关闭浏览器离开这个服务器结束,称为一个会话。session使用户在访问同一Web服务器的多个页面时共享信息,因此session最主要的应用场合是网上购物。session最重要的 

方法是getAttribute()和 setAttribute()。 

application:负责提供应用程序在服务器中运行时的一些全局信息。服务器启动时就创建一个application对象,当客户访问服务器上的JSP页面时,JSP容器就把这个application对象的引用给客户,客户在该服务器的各个页面之间链接时,application对象都是同一个。因为所有访问该服务器的客户共享同一个application对象,直到服务器关闭,因此application最

 主要的应用场合是构建留言板。application最重要的方法是getAttribute()和setAttribute()。 

二、JSP指令:

JSP指令是针对JSP容器的,它将一些特殊处理信息传送到JSP容器,告诉容器如何处理JSP页面。指令主要包括page指令、include指令和taglib指令。它们的语法形式可以统一为:

<%@指令名属性名1=”属性值1” 属性名2 =”属性值2”„属性名 n=”属性值n”%>

对应的XML语法形式为:

<jsp:directive.指令名 属性名1=”属性值1” 属性名2=”属性值2”...属性名n=”属性值n”/>

其特点是:指令不会直接产生任何看得见的输出。

(1) page指令用来定义和操作许多重要的页面属性,这些属性影响整个JSP文件(整个Servlet类文件)。在写JSP页面时,page指令的许多属性可以不去理会,因为常用到它们的默认值。在页面中经常要写的属性是contentType,它的默认值为”text/html; charset=ISO-8859-1”。我们要改成”text/html; charset=GBK” 或”text/html; charset=GB2312”。 

page指令可以在JSP页面的任何地方、以任何顺序出现,而且一个页面可以包含任意数量的page指令。但是任何的属性/值对只能出现一次(除import外)。几乎在所有JSP页面顶部都会看到page指令,尽管不是必需的。但是,为了程序的可读性及良好的编程习惯,建议把它放在JSP页面的顶部。 

(2) include指令的作用是在JSP页面中该指令出现的位置静态插入一个文件。这里的静态是指当前的JSP页面和被嵌入的文件合并成一个新的JSP页面,然后JSP容器将这个新页面转换成Servlet。这里的文件可以是HTML页面、文本文件或者JSP页面,并且这些文件应该和当前JSP页面在同一个Web应用中。 

include指令只有一个file属性。另外,在一个JSP页面中include指令的数量不限。 

(3) 在JSP页面中要使用用户自定义标记时,需要使用taglib指令,将标记库导入到JSP页面中。taglib指令包含两个属性:uri和prefix。其中uri是用户自定义标记所在的标记库描述文件的URI地址,prefix是标记库描述文件的前缀。具体便用见难点分析。 

动作 

JSP动作标记是JSP页面中使用的一种特殊标记,它利用XML语法格式来控制JSP容器完成某种功能。常用的JSP动作标记包括<jsp:include>、<jsp:forward>、<isp:plugin>、 

<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>。 

(1) <jsp:include>的作用是在JSP页面中动态包含一个文件。所谓动态是指当前页面与被包含文件的Servlet是彼此独立的,互不影响。这里的文件既可以是一个动态文件,也可以是一个静态文件。如果是静态文件就直接输出给客户端,由客户端的浏览器负责显示;如果是动态文件则由JSP容器负责执行,把运行结果显示在客户端。 

(2) <jsp:forward>的作用是将当前页面的执行过程终止,忽略它的输出并且把请求转向一个新的页面。<jsp:forward>标记只有一个属性page。page属性包含的是一个相对URL,要么是一个静态页面或者一个Servlet。 <jsp:forward>标记与上面的<jsp:include>标记的不同之处在于<jsp:include>标记是将被包含文件的内容或结果插入到当前页面的输出中,<jsp:forward>标记则停止当前页面的处理转 

向目标页面。 

(3) <jsp:plugin>的作用是在客户端浏览器中运行一个指定的applet或者JavaBean。 

(4) <jsp:useBean>的作用是在JSP页面中使用的JavaBean,它是JSP中功能最强大的动作标记,正是由于<jsp:useBean>标记,JSP页面才真正意义上实现了动态和静态的分开(具体见课文第5章)。 

三、JavaBean:

1.JavaBean规范。 

JavaBean就是Java中的可重用组件技术,可与任何应用程序集成。JavaBean其实就是一个类,其中封装了属性和方法。与一般Java类不同的是,JavaBean的书写应该符合Bean的规范,主要包括: 

(1)JavaBean是一个public的类。 

(2)类要实现Serializable接口,尽管不是必须要写。 

(3)要有一个默认构造函数,以便任何一个容器都可以创建JavaBean的实例。 

(4)存放属性的变量为protected或private特性。 

(5)设置和获取属性时使用setXXX()和getXXX()方法。其中,XXX是第一个字母转换 

为大写的属性名。这些方法的参数和返回值随属性类型的不同而不同。 

2.在JSP中使用JavaBean的方法。 

JSP规范对Bean提供的支持包含下述三种标准动作:<jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>。 

(1)<jsp:useBean>:声明、创建JavaBean实例和初始化Bean,<jsp:useBean>动作标记的完整语法形式如下: 

<jsp:useBean “id=Bean实例的引用”scope=”page|request|session|application” 

Class=”从\WEB-INF\classes\算起的包名.Bean的类名” 

type=Bean的类名、父类名或该类所实现的接口名” 

beanName=”包名.Bean的类名|<%=expression%>”> 

标记体 

</jsp:useBean> 

(2)<jsp:setProperty>:设置Bean属性值,<jsp:setProperty>动作标记的语法形式有两种形式,主要形式是: 

<jsp:setproperty name=”bean名字”propertydetails> 

其中,name属性指在<jsp:useBean>标记中使用的Bean的id; 

propertydetails可以为: 

· property=”*” 

· property=”Bean属性名” 

· property=”bean属性名”param=”参数名” 

(3)<jsp:getProperty>:用来获得指定Bean属性的值,将其转换成字符串,然后输出到客户端。<jsp:getProperty>动作的语法形式为: 

<jsp:getProperty name=”bean name” property=”property name”/> 

四、Servlet:

Servlet是使用Java Servlet API编写的、适合于B/S模式的、运行在Web服务器端的Java 类。Servlet对于Web服务器就好像Applet对于Web浏览器一样,如它们都有生命周期,生命周期都由所在的容器管理。所不同的是,Servlet运行在Web服务器中,而Applet在浏览器中执行。Servlet的工作原理如图8-1所示。 

图8-1 Servlet工作原理 

Servlet的主要优点: 

(1)可移植性。Servlet利用Java语言开发,具有Java的跨平台性,Servlet程序可以在任何操作系统上运行,这是ASP、PHP等所比不上的。 

(2)功能强大。Servlet能够运用JavaAPI的强大功能,包括网络和URL访问、通过JDBC 访问远程数据库、通过对象序列化使用Java Bean、通过JNDI使用EJB等。 

(3)性能优良。Servlet程序在加载执行之后,它的实例在一段时间内会一直驻留在服务器的内存中,若有请求,服务器会直接调用Servlet实例来服务。并且当多个客户请求一个Servlet时,服务器会为每个请求者启动一个线程来处理,所以效率高。 

(4)可靠性。Servlet有强类型检查功能,并且利用Java的垃圾回收机制避免内存管理上的问题。另外,Servlet能够安全地处理各种错误,不会因为发生程序上的逻辑错误而导致整体服务器系统的崩溃。 

Servlet的生命周期可以归纳为以下几点: 

(1)加载Servlet。 

(2)创建一个Servlet实例。 

(3)调用Servlet的init()方法完成初始化。 

(4)一个客户端的请求到达服务器。 

(5)激活Servlet的service()方法(也可能是doGet()或doPost()方法),并将请求和响应对象传给它,然后service()方法处理请求并将响应传回客户端。对于更多的客户端请求,服务器创建新的请求和响应对象,仍然激活service()方法响应请求,如此重复以上的循环,但无需再次调用init()方法。 

(6)当服务器不再需要Servlet或者当服务器关闭时,服务器将调用Servlet的destroy()方法。具体如下图所示:

Servlet运行于服务器上,它接受请求并响应客户端,它是JSP的基础。Servlet广泛使用HTTP协议,因此称为HTTP Servlet。HTTP Servlet接收HTTP请求并发送HTTP响应。Servlet API包含在两个包中,即javax.servlet和javax.servlet.http中。Servlet的生命周期包含三种方法,分别是init()、service()和destroy()。Servlet既可以扩展GenericServlet类,也可以扩展HttpServlet类。 

过滤器是Web服务端组件,它可以截获客户端输入的请求和Web资源输出的响应。Filter接口包含多个方法,如init()、doFilter()和destroy(),每次用户发送请求或Web资源发送响应时都会调用doFilter()方法。过滤器需要配置,其中,<filter>定义用于将过滤器名称与特定的类关联在一起,<filter-mapping>用于将过滤器映射至Web资源。FilterChain接口用于调用过滤器链中的下一个过滤器。在初始化过程中,Servlet使用FilterConfig将信息传递给过滤器。 

在开发Web应用程序时,Servlet和JSP一起使用是非常好的方法。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值