??xml version="1.0" encoding="utf-8" standalone="yes"?>91亚洲va在线天线va天堂va国产
,亚洲欧洲在线播放,久久久久亚洲精品影视 http://m.tkk7.com/lanxin1020/category/38972.htmlzh-cn Fri, 22 May 2009 01:00:47 GMT Fri, 22 May 2009 01:00:47 GMT 60 tomcatcd载机?/title> http://m.tkk7.com/lanxin1020/archive/2009/05/21/274380.htmllanxin1020 lanxin1020 Thu, 21 May 2009 14:13:00 GMT http://m.tkk7.com/lanxin1020/archive/2009/05/21/274380.html http://m.tkk7.com/lanxin1020/comments/274380.html http://m.tkk7.com/lanxin1020/archive/2009/05/21/274380.html#Feedback 0 http://m.tkk7.com/lanxin1020/comments/commentRss/274380.html http://m.tkk7.com/lanxin1020/services/trackbacks/274380.html ]]> filterQ{Q?/title> http://m.tkk7.com/lanxin1020/archive/2009/05/10/269866.htmllanxin1020 lanxin1020 Sun, 10 May 2009 01:33:00 GMT http://m.tkk7.com/lanxin1020/archive/2009/05/10/269866.html http://m.tkk7.com/lanxin1020/comments/269866.html http://m.tkk7.com/lanxin1020/archive/2009/05/10/269866.html#Feedback 0 http://m.tkk7.com/lanxin1020/comments/commentRss/269866.html http://m.tkk7.com/lanxin1020/services/trackbacks/269866.html 1. 以常规的方式调用资源Q即Q调用servlet或JSP面Q?font color="#ff99cc">个h理解求通过qo执行其他的操?br />
2.利用修改q的h信息调用资源?font color="#ff99cc">对请求的信息加以修改Q然后l执?br />
3. 调用资源Q但在发送响应到客户机前对其q行修改
4. L该资源调用,代之以{到其他的资源Q返回一个特定的状态代码或生成替换输出?font color="#ff99cc">个h理解求被拦截时强制执行(跌{Q的操作
qo器提供了几个重要好处 Q?br />
首先Q它以一U模块化的或可重用的方式装公共的行为。你?0个不同的serlvet或JSP面Q需要压~它们的内容以减下载时间吗Q没问题Q构造一个压~过滤器Q然后将它应用到30个资源上卛_?/p>
其次Q利用它能够高U访问决{与表现代码相分R这对于JSP特别有h|其中一般希望将几乎整个面集中在表CQ而不是集中在业务逻辑上。例如,?望阻塞来自某些站点的讉K而不用修改各面Q这些页面受到访问限Ӟ吗?没问题:建立一个访问限制过滤器q把它应用到惌限制讉K的页面上卛_?/p>
最后,qo器你能够对许多不同的资源进行批量性的更改。你有许多现存资源,q些资源除了公司名要更改外其他的保持不变Q能办到么?没问题:构造一个串替换qo器,只要合适就使用它?/p>
但要注意Q过滤器只在与servlet规范2.3版兼容的服务器上有作用。如果你的Web应用需要支持旧版服务器Q就不能使用qo器?/p>
1Q?nbsp; 建立基本qo?/p>
建立一个过滤器涉及下列五个步骤Q?br />
1Q徏立一?font color="#ff00ff">实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy ?br />
doFilterҎ包含主要的过滤代码(见第2步)QinitҎ建立讄操作Q而destroyҎq行清楚?/p>
2Q在doFilterҎ中放入过滤行为。doFilterҎ的第一个参CؓServletRequest对象。此对象l过滤器提供了对q入的信?Q包括表单数据、cookie和HTTPh_的完全访问。第二个参数为ServletResponseQ通常在简单的qo器中忽略此参数。最后一个参 CؓFilterChainQ如下一步所qͼ此参数用来调用servlet或JSPc?/p>
3Q调用FilterChain对象的doFilterҎ。Filter接口的doFilterҎ取一个FilterChain对象作ؓ它的一个参 数。在调用此对象的doFilterҎӞȀzM一个相关的qo器。如果没有另一个过滤器与servlet或JSP面兌Q则servlet或JSP 面被激zR?/p>
4Q对相应的servlet和JSP面注册qo器。在部v描述W文Ӟweb.xmlQ中使用filter和filter-mapping元素?/p>
5Q禁用激zdservlet。防止用户利用缺省servlet URLl过qo器设|?/p>
1.1 建立一个实现Filter接口的类
所有过滤器都必d现javax.servlet.Filter 。这个接口包含三个方法,分别为doFilter、init和destroy?/p>
public void doFilter(ServletRequset request,
ServletResponse response,
FilterChain chain)
thows ServletException, IOException
每当调用一个过滤器Q即Q每ơ请求与此过滤器相关的servlet或JSP面Q时Q就执行其doFilterҎ。正是这个方法包含了大部分过滤逻辑?W一个参Cؓ与传入请求有关的ServletRequest。对于简单的qo器,大多数过滤逻辑是基于这个对象的。如果处理HTTPhQƈ且需要访问诸 如getHeader或getCookies{在ServletRequest中无法得到的ҎQ就要把此对象构造成 HttpServletRequest?/p>
W二个参CؓServletResponse。除了在两个情Ş下要使用它以外,通常忽略q个参数。首先,如果希望完全d对相关servlet或JSP?面的讉K。可调用response.getWriterq直接发送一个响应到客户机。其ơ,如果希望修改相关的servlet或JSP面的输出,可把?应包含在一个收集所有发送到它的输出的对象中。然后,在调用serlvet或JSP面后,qo器可查输出,如果合适就修改它,之后发送到客户机?/p>
DoFilter的最后一个参CؓFilterChain对象。对此对象调用doFilter以激zMservlet或JSP面相关的下一个过滤器。如果没有另一个相关的qo器,则对doFilter的调用激zservlet或JSP本n?/p>
public void init(FilterConfig config) thows ServletException
initҎ只在此过滤器W一ơ初始化时执行,不是每次调用qo器都执行它。对于简单的qo器,可提供此Ҏ的一个空体,但有两个原因需要用init?首先QFilterConfig对象提供对servlet环境及web.xml文g中指zqo器名的访问。因此,普遍的办法是利用init?FilterConfig对象存放在一个字D中Q以便doFilterҎ能够讉Kservlet环境或过滤器?其次QFilterConfig对象?有一个getInitParameterҎQ它能够讉K部v描述W文Ӟweb.xmlQ中分配的过滤器初始化参数?/p>
public void destroy( )
大多数过滤器单地为此Ҏ提供一个空体,不过Q可利用它来完成诸如关闭qo器用的文g或数据库q接池等清除d?/p>
1.2 过滤行为放入doFilterҎ
doFilterҎ为大多数qo器地关键部分。每当调用一个过滤器Ӟ都要执行doFilter。对于大多数qo器来_doFilter执行的步骤是 Z传入的信息的。因此,可能要利用作为doFilter的第一个参数提供的ServletRequest。这个对象常常构造ؓ HttpServletRequestcdQ以提供对该cȝ更特D方法的讉K?/p>
1.3 调用FilterChain对象的doFilterҎ
Filter接口的doFilterҎ以一个FilterChain对象作ؓ它的W三个参数。在调用该对象的doFilterҎӞȀzM一个相关的 qo器。这个过E一般持l到链中最后一个过滤器为止。在最后一个过滤器调用其FilterChain对象的doFilterҎӞȀzservlet?面自n?br />
但是Q链中的Lqo器都可以通过不调用其FilterChain的doFilterҎ中断q个q程。在q样的情况下Q不再调用JSP面的serlvetQƈ且中断此调用q程的过滤器负责输出提供给客户机?/p>
1.4 寚w当的servlet和JSP面注册qo?br />
部v描述W文件的2.3版本引入了两个用于过滤器的元素,分别是:filter和filter-mapping。filter元素向系l注册一个过滤对象,filter-mapping元素指定该过滤对象所应用的URL?/p>
1.filter元素
filter元素位于部v描述W文Ӟweb.xmlQ的前部Q所有filter-mapping、servlet或servlet-mapping元素之前。filter元素h如下六个可能的子元素Q?/p>
1?icon q是一个可选的元素Q它声明IDE能够使用的一个图象文件?br />
2、filter-name q是一个必需的元素,它给qo器分配一个选定的名字?br />
3、display-name q是一个可选的元素Q它l出IDE使用的短名称?br />
4?description q也是一个可选的元素Q它l出IDE的信息,提供文本文档?br />
5?filter-class q是一个必需的元素,它指定过滤器实现cȝ完全限定名?br />
6?init-param q是一个可选的元素Q它定义可利用FilterConfig的getInitParameterҎd的初始化参数。单个过滤器元素可包含多个init-param元素?/p>
h意,qo是在serlvet规范2.3版中初次引入的。因此,web.xml文g必须使用DTD?.3版本。下面介l一个简单的例子Q?/p>
<xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "
<web-app>
<filter>
<filter-name>MyFilterfilter-name>
<filter-class>myPackage.FilterClassfilter-class>
filter>
<filter-mapping>...filter-mapping>
<web-app>
2.filter-mapping元素
filter-mapping元素位于web.xml文g中filter元素之后serlvet元素之前。它包含如下三个可能的子元素Q?/p>
1?filter-name q个必需的元素必M用filter元素声明时给予过滤器的名U相匚w?/p>
2?url-pattern 此元素声明一个以斜杠Q?Q开始的模式Q它指定qo器应用的URL。所有filter-mapping元素中必L供url-pattern?servlet-name。但不能对单个filter-mapping元素提供多个url-pattern元素V如果希望过滤器适用于多个模式,可重?整个filter-mapping元素?/p>
3?servlet-name 此元素给Z个名Uͼ此名U必M利用servlet元素l予servlet或JSP面的名U相匚w。不能给单个filter-mapping元素提供 多个servlet-name元素V如果希望过滤器适合于多个servlet名,可重复这个filter-mapping元素?br />
下面举一个例子:
xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"
<web-app>
<filter>
<filter-name>MyFilterfilter-name>
<filter-class>myPackage.FilterClassfilter-class>
filter>
<filter-mapping>
<filter-name>MyFilterfilter-name>
<url-pattern>/someDirectory/SomePage.jspurl-pattern>
filter-mapping>
web-app>
1.5 用Ȁzdservlet
在对资源应用qo器时Q可通过指定要应用过滤器的URL模式或servlet名来完成。如果提供servlet名,则此名称必须与web.xml?servlet元素中给出的名称相匹配。如果用应用到一个serlvet的URL模式Q则此模式必M利用web.xml的元素servlet- mapping指定的模式相匚w。但是,多数服务器?#8220;Ȁzdservlet”为servlet体统一个缺省的URLQhttp: //host/WebAppPrefix/servlet/ServletName。需要保证用户不利用q个URL讉KservletQ这样会l过qo?讄Q?br />
例如Q假如利用filter和filter-mapping指示名ؓSomeFilter的过滤器应用到名为SomeServlet的servletQ则如下Q?/p>
<filter>
<filter-name>SomeFilterfilter-name>
<filter-class>somePackage.SomeFilterClassfilter-class>
<filter>
<filter-mapping>
<filter-name>SomeFilterfilter-name>
<servlet-name>SomeServletservlet-name>
<filter-mapping>
接着Q用servlet和servlet-mapping规定URL http://host/webAppPrefix/Blah 应该调用SomeSerlvetQ如下所C:
<filter>
<filter-name>SomeFilterfilter-name>
<filter-class>somePackage.SomeFilterClassfilter-class>
filter>
<filter-mapping>
<filter-name>SomeFilterfilter-name>
<servlet-name>/Blahservlet-name>
<filter-mapping>
现在Q在客户Z用URL http://host/webAppPrefix/Blah 时就会调用过滤器。过滤器不应用到
http://host/webAppPrefix/servlet/SomePackage.SomeServletClass ?br />
管有关闭激zd的服务器专用Ҏ。但是,可移植最强的Ҏ旉新映Web应用钟的/servlet模式Q这样所有包含此模式的请求被送到相同?servlet中。ؓ了重新映此模式Q首先应该徏立一个简单的servletQ它打印一条错误消息,或重定向用户到顶层页。然后,使用servlet?servlet-mapping元素发送包?servlet模式的请求到该servlet。程序清?-1l出了一个简短的例子?/p>
E序清单9-1 web.xmlQ重定向~省servlet URL的摘录)
xml version="1.0" encoding="ISO-8859-1"?>
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"
<web-app>
<servlet>
<servlet-name>Errorservlet-name>
<servlet-class>somePackage.ErrorServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>Errorservlet-name>
<url-pattern>/servlet/*url-pattern>
servlet-mapping>
<web-app>
本文参?http://www.javaeye.com/topic/140553
]]>jsp语法详解 http://m.tkk7.com/lanxin1020/archive/2009/05/09/269740.htmllanxin1020 lanxin1020 Sat, 09 May 2009 03:58:00 GMT http://m.tkk7.com/lanxin1020/archive/2009/05/09/269740.html http://m.tkk7.com/lanxin1020/comments/269740.html http://m.tkk7.com/lanxin1020/archive/2009/05/09/269740.html#Feedback 0 http://m.tkk7.com/lanxin1020/comments/commentRss/269740.html http://m.tkk7.com/lanxin1020/services/trackbacks/269740.html
在客L昄一个注?
JSP 语法
<!-- comment [ <%= expression %> ] -->
例子 1
<!-- This file displays the user login screen -->
在客L的HTML源代码中产生和上面一L数据Q?nbsp;
<!-- This file displays the user login screen -->
例子 2
<!-- This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
在客L的HTML源代码中昄?
<!-- This page was loaded on January 1, 2000 -->
描述
q种注释和HTML中很像,也就是它可以?查看源代?中看?
唯一有些不同的就是,你可以在q个注释中用表达式(例子2所C?.q个表达C是不定的,由页面不同而不同,你能够用各U表辑ּQ只要是合法的就行。更多的L表达?br />
隐藏注释
写在JSPE序中,但不是发l客戗?nbsp;
JSP 语法
<%-- comment --%>
例子Q?br />
<%@ page language="java" %> <html> <head><title>A Comment Test</title></head> <body> <h2>A Test of Comments</h2> <%-- This comment will not be visible in the page source --%> </body> </html>
描述
用隐藏注释标记的字符会在JSP~译时被忽略掉。这个注释在你希望隐藏或注释你的JSPE序时是很有用的。JSP~译器不是会?lt;%--and--%>之间的语句进行编译的Q它不会昄在客L览器中Q也不会在源代码中看?nbsp;
声明
在JSPE序中声明合法的变量和方?nbsp;
JSP 语法
<%! declaration; [ declaration; ]+ ... %>
例子
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
描述
声明你将要在JSPE序中用到的变量和方法。你也必这样做Q不然会出错.
你可以一ơ性声明多个变量和ҎQ只要以";"l尾pQ当然这些声明在Java中要是合法的?nbsp;
当你声明Ҏ或变量时Q请注意以下的一些规?
声明必须?;"l尾(Scriptlet有同L规则Q但?nbsp;表达式就不同?.
你可以直接用在<% @ page %>中被包含q来的已l声明的变量和方法,不需要对它们重新q行声明.
一个声明仅在一个页面中有效。如果你x个页面都用到一些声明,最好把它们写成一个单独的文gQ然后用<%@ include %>?lt;jsp:include >元素包含q来?nbsp;
表达?nbsp;
包含一个符合JSP语法的表辑ּ
JSP 语法
<%= expression %>
例子
<font color="blue"><%= map.size() %></font>
<b><%= numguess.getHint() %></b>.
描述
表达式元素表C的是一个在脚本语言中被定义的表辑ּQ在q行后被自动转化为字W串Q然后插入到q个表达C在JSP文g的位|显C。因个表辑ּ的值已l被转化为字W串Q所以你能在一行文本中插入q个表达式(形式和ASP完全一?.
当你在JSP中用表辑ּ时请C以下几点Q?nbsp;
你不能用一个分P"Q?Q来作ؓ表达式的l束W?但是同样的表辑ּ用在scriptlet中就需要以分号来结了Q查看Scriptlet
q个表达式元素能够包括Q何在Java Language Specification中有效的表达?
有时候表辑ּ也能做ؓ其它JSP元素的属性?一个表辑ּ能够变得很复杂,它可能由一个或多个表达式组成,q些表达式的序是从左到叟?nbsp;
[/b]Scriptlet [/b]
包含一个有效的E序D?
JSP 语法
<% code fragment %>
例子
<%
String name = null;
if (request.getParameter("name") == null) {
%>
<%@ include file="error.html" %>
<%
} else {
foo.setName(request.getParameter("name"));
if (foo.getName().equalsIgnoreCase("integra"))
name = "acura";
if (name.equalsIgnoreCase( "acura" )) {
%>
描述
一个scriptlet能够包含多个jsp语句Q方法,变量Q表辑ּ
因ؓscriptlet,我们便能做以下的?
声明要用到的变量或ҎQ参?nbsp;声明).
~写JSP表达式(参?nbsp;表达?.
使用M隐含的对象和M?lt;jsp:useBean>声明q的对象
~写JSP语句 (如果你在使用Java语言Q这些语句必遵从Java Language Specification,).
M文本QHTML标记QJSP元素必须在scriptlet之外
当JSP收到客户的请求时Qscriptlet׃被执行,如果scriptlet有显C的内容Q这些显C的内容p存在out对象中?nbsp;
Include 指o
在JSP中包含一个静态的文gQ同时解析这个文件中的JSP语句.
JSP 语法
<%@ include file="relativeURL" %>
例子
include.jsp:
<html> <head><title>An Include Test</title></head> <body bgcolor="white"> <font color="blue"> The current date and time are <%@ include file="date.jsp" %> </font> </body> </html>
date.jsp:
<%@ page import="java.util.*" %> <%= (new java.util.Date() ).toLocaleString() %>
Displays in the page:
The current date and time are
Aug 30, 1999 2:38:40
描述
<%@include %>指o会在JSP~译时插入一个包含文本或代码的文Ӟ当你使用<%@ include %>指命Ӟq个包含的过E就当是静态的。静态的包含是指这个被包含的文件将会被插入到JSP文g中去Q这个包含的文g可以是JSP文gQHTML文gQ文本文件。如果包含的是JSP文gQ这个包含的JSP的文件中代码会被执行?nbsp;
如果你仅仅只是用include 来包含一个静态文件。那么这个包含的文g所执行的结果将会插入到JSP文g中放<% @ include %>的地斏V一旦包含文件被执行Q那么主JSP文g的过E将会被恢复Ql执行下一?
q个被包含文件可以是html文gQjsp文gQ文本文Ӟ或者只是一DJava代码Q但是你得注意在q个包含文g中不能?lt;html>,</html>,<body>,</body>标记Q因会影响在原JSP文g中同L标记 Q这样做有时会导致错?
有一?lt;%@ include %>指命的行为是以特D的JSP~译条g为基Q比如:
q个被包含的文g必须Ҏ有客户都有开放且必须f有效Q或者它有安全限?nbsp;
如果q个包含文g被改变,包含此文件的JSP文g被重新~译
属?
file="relativeURL"
q个包含文g的\径名一般来说是指相对\径,不需要什么端口,协议Q和域名Q如?
"error.jsp""templates/onlinestore.html""/beans/calendar.jsp"
如果q个路径?/"开_那么q个路径主要是参照JSP应用的上下关p\径,如果路径是以文g名或目录名开_那么q个路径是正在使用的JSP文g的当前\?
Page 指o
定义JSP文g中的全局属?
JSP 语法
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ isErrorPage="true | false" ]
%>
例子
<%@ page import="java.util.*, java.lang.*" %>
<%@ page buffer="5kb" autoFlush="false" %>
<%@ page errorPage="error.jsp" %>
描述
<%@ page %>指o作用于整个JSP面Q同样包括静态的包含文g。但?lt;% @ page %>指o不能作用于动态的包含文gQ比?nbsp;<jsp:include>
你可以在一个页面中用上多个<% @ page %>指oQ但是其中的属性只能用一ơ,不过也有个例外,那就是import属性。因为import属性和Java中的import语句差不?参照Java Language)Q所以你p多用此属性几ơ了.
无论你把<% @ page %>指o攑֜JSP的文件的哪个地方Q它的作用范围都是整个JSP面。不q,ZJSPE序的可L,以及好的~程习惯Q最好还是把它放在JSP文g的顶?
属?br />
language="java"
声明脚本语言的种c,暂时只能?java"
extends="package.class"
标明JSP~译旉要加入的Java Class的全名,但是得慎重的使用它,它会限制JSP的编译能?
import="{package.class | package.* }, ..."
需要导入的Java包的列表Q这些包׃用于E序D,表达式,以及声明?nbsp;
下面的包在JSP~译时已l导入了Q所以你׃需要再指明?
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
session="true | false"
讑֮客户是否需要HTTP Session.Q学qASP的hQ应该对它不陌生)如果它ؓtrue,那么Session是有用的?nbsp;
如果它有false,那么你就不能使用session对象Q以及定义了scope=session?lt;jsp:useBean>元素。这L使用会导致错?
~省值是true.
buffer="none | 8kb | sizekb"
buffer的大被out对象用于处理执行后的JSP对客h览器的输出。缺省值是8kb
autoFlush="true | false"
讄如果buffer溢出Q是否需要强制输出,如果其D定义为true(~省?Q输出正常,如果它被讄为false,如果q个buffer溢出Q就会导致一个意外错误的发生.如果你把buffer讄为none,那么你就不能把autoFlush讄为false.
isThreadSafe="true | false"
讄Jsp文g是否能多U程使用。缺省值是true,也就是说QJSP能够同时处理多个用户的请求,如果讄为falseQ一个jsp只能一ơ处理一个请?nbsp;
info="text"
一个文本在执行JSP会被逐字加入JSP中,你能够用Servlet.getServletInfoҎ取回?nbsp;
errorPage="relativeURL"
讄处理异常事g的JSP文g?nbsp;
isErrorPage="true | false"
讄此页是否为出错页Q如果被讄为true,你就能用exception对象.
contentType="mimeType [ ;charset=characterSet ]" | "text/html;charset=ISO-8859-1"
讄MIMEcd 。缺省MIME cd? text/html, ~省字符集ؓ ISO-8859-1.
<jsp:forward>
重定向一个HTML文gQJSP文gQ或者是一个程序段.
JSP 语法
<jsp:forward page={"relativeURL" | "<%= expression %>"} />
or
<jsp:forward page={"relativeURL" | "<%= expression %>"} >
<jsp:param name="parameterName"
value="{parameterValue | <%= expression %>}" />+
</jsp:forward>
例子
<jsp:forward page="/servlet/login" />
<jsp:forward page="/servlet/login">
<jsp:param name="username" value="jsmith" />
</jsp:forward>
描述
<jsp:forward>标签从一个JSP文g向另一个文件传递一个包含用戯求的request对象.<jsp:forward>标签以下的代码,不能执?
你能够向目标文g传送参数和|在这个例子中我们传递的参数名ؓusername,gؓscott,如果你用了<jsp:param>标签的话Q目标文件必L一个动态的文gQ能够处理参?
如果你用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你?lt;jsp:forward>之前Qjsp文g已经有了数据Q那么文件执行就会出?
属?br />
page="{relativeURL | <%= expression %>}"
q里是一个表辑ּ或是一个字W串用于说明你将要定向的文g或URL.q个文g可以是JSP,E序D,或者其它能够处理request对象的文?如asp,cgi,php).
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+
向一个动态文件发送一个或多个参数Q这个文件一定是动态文?
如果你想传递多个参敎ͼ你可以在一个JSP文g中用多?lt;jsp:param>。name指定参数名,value指定参数?
<jsp:getProperty>
获取Bean的属性|用于昄在页面中
JSP 语法
<jsp:getProperty name="beanInstanceName" property="propertyName" />
例子
<jsp:useBean id="calendar" scope="page" class="employee.Calendar" />
<h2>
Calendar of <jsp:getProperty name="calendar" property="username" />
</h2>
描述
q个<jsp:getProperty>元素获得Bean的属性|q可以将其用或昄在JSP面?在你使用<jsp:getProperty>之前Q你必须?lt;jsp:useBean>创徏?
<jsp:getProperty>元素有一些限?
你不能?lt;jsp:getProperty>来检索一个已l被索引了的属?nbsp;
你能够和JavaBeanslg一起?lt;jsp:getProperty>,但是不能与Enterprise Bean一起用?nbsp;
属?br />
name="beanInstanceName"
bean的名??lt;jsp:useBean>指定
property="propertyName"
所指定的Bean的属性名?nbsp;
技?
在sun的JSP参考中提到Q如果你使用<jsp:getProperty>来检索的值是I|那么NullPointerException会出现Q同时如果用程序段或表辑ּ来检索其|那么在浏览器上出现的是nullQ空).
<jsp:include>
包含一个静态或动态文?
JSP 语法
<jsp:include page="{relativeURL | <%= expression%>}" flush="true" />
or
<jsp:include page="{relativeURL | <%= expression %>}" flush="true" >
<jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" />+
</jsp:include>
Examples
<jsp:include page="scripts/login.jsp" />
<jsp:include page="copyright.html" />
<jsp:include page="/index.html" />
<jsp:include page="scripts/login.jsp">
<jsp:param name="username" value="jsmith" />
</jsp:include>
描述
<jsp:include>元素允许你包含动态文件和静态,q两U包含文件的l果是不同的。如果文件仅是静态文Ӟ那么q种包含仅仅是把包含文g的内容加到jsp文g中去Q而如果这个文件动态的Q那么这个被包含文g也会被Jsp~译器执?q一切与asp怼)
你不能从文g名上判断一个文件是动态的q是静态的Q比如aspcn.asp 有可能只是包含一些信息而已Q而不需要执行?lt;jsp:include>能够同时处理q两U文Ӟ因此你就不需要包含时q要判断此文件是动态的q是静态的.
如果q个包含文g是动态的Q那么你q可以用<jsp:param>q传递参数名和参数倹{?nbsp;
属?br />
page="{relativeURL | <%= expression %>}"
参数Z相对路径Q或者是代表相对路径的表辑ּ.
flush="true"
q里你必M用flush="true",你不能用false?~省gؓfalse
<jsp:param name="parameterName" value="{parameterValue | <%= expression %> }" />+
<jsp:param>子句能让你传递一个或多个参数l动态文?nbsp;
你能在一个页面中使用多个<jsp:param>来传递多个参敎ͼ
<jsp:plugin>
执行一个applet或Bean,有可能的话还要下载一个Java插g用于执行?
JSP 语法
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
例子
<jsp:plugin type=applet code="Molecule.class" codebase="/html">
<jsp:params>
<jsp:param name="molecule" value="molecules/benzene.mol" />
</jsp:params>
<jsp:fallback>
<p>Unable to load applet</p>
</jsp:fallback>
</jsp:plugin>
描述
<jsp:plugin>元素用于在浏览器中播放或昄一个对象(典型的就是applet和Bean),而这U显C需要在览器的java插g?nbsp;
当Jsp文g被编译,送往览器时Q?lt;jsp:plugin>元素会Ҏ览器的版本替换?lt;object>或?lt;embed>元素。注意,<object>用于HTML 4.0 Q?lt;embed>用于HTML 3.2.
一般来_<jsp:plugin>元素会指定对象是Appletq是Bean,同样也会指定class的名字,q有位置Q另外还会指定将从哪里下载这个Java插g。具体如?
属?br />
type="bean | applet"
.被执行的插件对象的cdQ你必须得指定这个是Beanq是applet,因ؓq个属性没有缺省?
code="classFileName"
会被Java插g执行的Java Class的名字,必须?classl尾。这个文件必d在于codebase属性指定的目录?
codebase="classFileDirectoryName"
会被执行的Java Class文g的目录(或者是路径)Q如果你没有提供此属性,那么使用<jsp:plugin>的jsp文g的目录将会被使用.
name="instanceName"
q个Bean或applet实例的名字,它将会在Jsp其它的地方调?
archive="URIToArchive, ..."
一些由逗号分开的\径名Q这些\径名用于预装一些将要用的class,q会提高applet的性能.
align="bottom | top | middle | left | right"
囑ŞQ对象,Applet的位|?有以下?
bottom
top
middle
left
right
height="displayPixels" width="displayPixels"
Applet或Bean要昄的长宽的|此gؓ数字Q单位ؓ象素.
hspace="leftRightPixels" vspace="topBottomPixels"
Applet或Bean昄时在屏幕左右Q上下所需留下的空_单位?
jreversion="JREVersionNumber | 1.1"
Applet或Beanq行所需的Java Runtime Environment (JRE) 的版? ~省值是 1.1.
nspluginurl="URLToPlugin"
Netscape Navigator用户能够使用的JRE的下载地址Q此gؓ一个标准的URLQ如http://www.aspcn.com/jsp
iepluginurl="URLToPlugin"
IE用户能够使用的JRE的下载地址Q此gؓ一个标准的URLQ如http://www.aspcn.com/jsp
<jsp:params> [ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+ </jsp:params>
你需要向applet或Bean传送的参数或参数倹{?nbsp;
<jsp:fallback> text message for user </jsp:fallback>
一D|字用于Java 插g不能启动时显C给用户的,如果插g能够启动而applet或Bean不能Q那么浏览器会有一个出错信息弹?
<jsp:setProperty>
讄Bean中的属性?
JSP语法
<jsp:setProperty
name="beanInstanceName"
{
property= "*" |
property="propertyName" [ param="parameterName" ] |
property="propertyName" value="{string | <%= expression %>}"
}
/>
例子
<jsp:setProperty name="mybean" property="*" />
<jsp:setProperty name="mybean" property="username" />
<jsp:setProperty name="mybean" property="username" value="Steve" />
描述
<jsp:setProperty>元素使用Beanl定的setterҎQ在Bean中设|一个或多个属性倹{你在用这个元素之前必d使用<jsp:useBean>声明此Bean.因ؓQ?lt;jsp:useBean>?lt;jsp:setProperty>是联pd一LQ同时这他们使用的Bean实例的名字也应当相匹配(是_?lt;jsp:setProperty>中的name的值应当和<jsp:useBean>中id的值相?
你能使用多种Ҏ利用<jsp:setProperty>来设定属性?nbsp;:
通过用户输入的所有?被做为参数储存中request对象?来匹配Bean中的属?nbsp;
通过用户输入的指定的值来匚wBean中指定的属?nbsp;
在运行时使用一个表辑ּ来匹配Bean的属?nbsp;
每一U设定属性值的Ҏ都有其特定的语法Q下面我们会来讲?nbsp;
属性及其用?br />
name="beanInstanceName"
表示已经?lt;jsp:useBean>中创建的Bean实例的名?
property="*"
储存用户在Jsp输入的所有|用于匚wBean中的属性。在Bean中的属性的名字必须和request对象中的参数名一?
从客户传到服器上的参数g般都是字W类?nbsp;Q这些字W串Z能够在Bean中匹配就必须转换成其它的cdQ下面的表中列出了Bean属性的cd以及他们的{换方?
把字W串转化为其它类型的Ҏ. Property cd
Ҏ
boolean or Boolean
java.lang.Boolean.valueOf(String)
byte or Byte
java.lang.Byte.valueOf(String)
char or Character
java.lang.Character.valueOf(String)
double or Double
java.lang.Double.valueOf(String)
integer or Integer
java.lang.Integer.valueOf(String)
float or Float
java.lang.Float.valueOf(String)
long or Long
java.lang.Long.valueOf(String)
如果request对象的参数g有空|那么对应的Bean属性将不会讑֮M倹{同LQ如果Bean中有一个属性没有与之对应的Request参数|那么q个属性同样也不会讑֮.
property="propertyName" [ param="parameterName" ]
使用request中的一个参数值来指定Bean中的一个属性倹{在q个语法中,property指定Bean的属性名Qparam指定request中的参数?
如果bean属性和request参数的名字不同,那么你就必须得指定property和param Q如果他们同名,那么你就只需要指明propertyp?
如查参数gؓI(或未初始?,对应的Bean属性不被设?
property="propertyName" value="{string | <%= expression %>}"
使用指定的值来讑֮Bean属性。这个值可以是字符Ԍ也可以是表达式。如果这个字W串Q那么它׃被{换成Bean属性的cdQ查看上面的?.如果它是一个表辑ּQ那么它cd必d它将要设定的属性值的cd一致?nbsp;
如果参数gؓI,那么对应的属性g不会被设定。另外,你不能在一?lt;jsp:setProperty>中同时用param和value
技?br />
如果你用了property="*",那么Bean的属性没有必要按Html表单中的序排序
<jsp:useBean>
创徏一个Bean实例q指定它的名字和作用范围.
JSP 语法
<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"
}
{
/> |
> other elements </jsp:useBean>
}
例子
<jsp:useBean id="cart" scope="session" class="session.Carts" />
<jsp:setProperty name="cart" property="*" />
<jsp:useBean id="checking" scope="session" class="bank.Checking" >
<jsp:setProperty name="checking" property="balance" value="0.0" />
</jsp:useBean>
描述
<jsp:useBean>用于定位或示例一个JavaBeanslg?lt;jsp:useBean>首先会试囑֮位一个Bean实例Q如果这个Bean不存在,那么<jsp:useBean>׃从一个class或模版中q行CZ?nbsp;
Z定位或示例一个BeanQ?lt;jsp:useBean>会进行以下步聚,序如下:
通过l定名字和范围试囑֮位一个Bean.
对这个Bean对象引用变量以你指定的名字命?
如果发现了这个Bean,会在这个变量中储存q个引用。如果你也指定了cdQ那么这个Bean也设|ؓ相应的类?
如果没有发现q个Bean,会从你指定的class中示例,q将此引用储存到一个新的变量中厅R如果这个class的名字代表的是一个模版,那么q个Bean被java.beans.Beans.instantiateCZ.
如果<jsp:useBean>已经CZQ不是定位)了Bean,同时<jsp:useBean>?lt;/jsp:useBean>中有元素Q那么将会执行其中的代码.
<jsp:useBean>元素的主体通常包含?lt;jsp:setProperty>元素Q用于设|Bean的属性倹{正如上面第五步所说的Q?lt;jsp:useBean>的主体仅仅只有在<jsp:useBean>CZBean时才会被执行Q如果这个Bean已经存在Q?lt;jsp:useBean>能够定位它,那么M中的内容不会v作用
属性以及用?br />
id="beanInstanceName"
在你所定义的范围中认Bean的变量,你能在后面的E序中用此变量名来分L不同的Bean
q个变量名对大小写敏感,必须W合你所使用的脚本语a的规定,在Java Programming Language中,q个规定在Java Language 规范已经写明。如果这个Bean已经在别?lt;jsp:useBean>中创建,那么q个id的值必M原来的那个idg?
scope="page | request | session | application"
Bean存在的范围以及id变量名的有效范围。缺省值是page,以下是详l说明:
page - 你能在包?lt;jsp:useBean>元素的JSP文g以及此文件中的所有静态包含文件中使用Bean,直到面执行完毕向客L发回响应或{到另一个文件ؓ止?br />
request - 你在M执行相同h的Jsp文g中用Bean,直到面执行完毕向客L发回响应或{到另一个文件ؓ止。你能够使用Request对象讉KBean,比如request.getAttribute(beanInstanceName)
session - 从创建Bean开始,你就能在M使用相同session的Jsp文g中用Bean.q个Bean存在于整个Session生存周期内,M在分享此Session的Jsp文g都能使用同一Bean.注意在你创徏Bean的Jsp文g?lt;% @ page %>指o中必L定session=true
application - 从创建Bean开始,你就能在M使用相同application的Jsp文g中用Bean.q个Bean存在于整个application生存周期内,M在分享此application的Jsp文g都能使用同一Bean.
class="package.class"
使用new关键字以及class构造器从一个class中示例一个bean.q个class不能是抽象的Q必L一个公用的Q没有参数的构造器.q个package的名字区别大写?nbsp;
type="package.class"
如果q个Bean已经在指定的范围中存在,那么写这个Bean一个新的数据库cd 。如果你没有使用class或beanName指定typeQBean不会被CZ.package和class的名字,区分大小?
beanName="{package.class | <%= expression %>}" type="package.class"
使用java.beans.Beans.instantiateҎ来从一个class或连l模版中CZ一个Bean,同时指定Bean的类型?nbsp;
beanName可以是package和class也可以是表达?它的g传给Beans.instantiate.tupe的值可以和Bean相同?nbsp;
package ?nbsp;class 名字区分大小?
]]> Servlet生命周期Q{) http://m.tkk7.com/lanxin1020/archive/2009/04/04/263904.htmllanxin1020 lanxin1020 Sat, 04 Apr 2009 10:20:00 GMT http://m.tkk7.com/lanxin1020/archive/2009/04/04/263904.html http://m.tkk7.com/lanxin1020/comments/263904.html http://m.tkk7.com/lanxin1020/archive/2009/04/04/263904.html#Feedback 0 http://m.tkk7.com/lanxin1020/comments/commentRss/263904.html http://m.tkk7.com/lanxin1020/services/trackbacks/263904.html
Servlet的生命周期包含了下面4个阶D:
Q?Q加载和实例?/strong>
Servlet容器负责加蝲和实例化Servlet。当Servlet容器启动Ӟ或者在容器到需要这个Servlet来响应第一个请求时Q创建Servlet实例。当Servlet容器启动后,它必要知道所需的Servletcd什么位|,Servlet容器可以从本地文件系l、远E文件系l或者其他的|络服务中通过cd载器加蝲Servletc,成功加蝲后,容器创徏Servlet的实例。因为容器是通过Java的反API来创建Servlet实例Q调用的是Servlet的默认构造方法(即不带参数的构造方法)Q所以我们在~写Servletcȝ时候,不应该提供带参数的构造方法?
Q?Q初始化
在Servlet实例化之后,容器调用Servlet的init()Ҏ初始化这个对象。初始化的目的是Z让Servlet对象在处理客Lh前完成一些初始化的工作,如徏立数据库的连接,获取配置信息{。对于每一个Servlet实例Qinit()Ҏ只被调用一ơ。在初始化期_Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用E序的配|信息(在web.xml中配|)中获取初始化的参C息。在初始化期_如果发生错误QServlet实例可以抛出ServletException异常或者UnavailableException异常来通知容器。ServletException异常用于指明一般的初始化失败,例如没有扑ֈ初始化参敎ͼ而UnavailableException异常用于通知容器该Servlet实例不可用。例如,数据库服务器没有启动Q数据库q接无法建立QServlet可以抛出UnavailableException异常向容器指出它暂时或永久不可用?
Q?Q请求处?/strong>
Servlet容器调用Servlet的service()Ҏ对请求进行处理。要注意的是Q在service()Ҏ调用之前Qinit()Ҏ必须成功执行。在service()Ҏ中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对hq行处理后,调用ServletResponse对象的方法设|响应信息。在service()Ҏ执行期间Q如果发生错误,Servlet实例可以抛出ServletException异常或者UnavailableException异常。如果UnavailableException异常指示了该实例怹不可用,Servlet容器调用实例的destroy()ҎQ释放该实例。此后对该实例的MhQ都收到容器发送的HTTP 404Q请求的资源不可用)响应。如果UnavailableException异常指示了该实例暂时不可用,那么在暂时不可用的时间段内,对该实例的Q何请求,都将收到容器发送的HTTP 503Q服务器暂时忙,不能处理hQ响应?
Q?Q服务终?/strong>
当容器检到一个Servlet实例应该从服务中被移除的时候,容器׃调用实例的destroy()ҎQ以便让该实例可以释攑֮所使用的资源,保存数据到持久存储设备中。当需要释攑ֆ存或者容器关闭时Q容器就会调用Servlet实例的destroy()Ҏ。在destroy()Ҏ调用之后Q容器会释放q个Servlet实例Q该实例随后会被Java的垃圾收集器所回收。如果再ơ需要这个Servlet处理hQServlet容器会创Z个新的Servlet实例?
在整个Servlet的生命周期过E中Q创建Servlet实例、调用实例的init()和destroy()Ҏ都只q行一ơ,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()ҎQؓ接收到的h服务?
如果需要让Servlet容器在启动时卛_载ServletQ可以在web.xml文g中配|?lt;load-on-startup>元素?
]]>
վ֩ģ壺
Ʒþþþ |
պѲ |
ɫһƵ |
زѿ |
99Ѳ |
91Ƶѹۿ |
ëƬѹۿ |
ڵֻˬվ |
弦վ߲ѹۿ |
ؿˮƵwwwվ |
þþþþþþþѾƷ |
Ļ |
ھƷƵѡ߹ۿ |
ձѾþþþþþվ |
99Ƶѿ |
91Ʒ߹ۿ |
aëƬ |
þһ
|
Ƶ˹Ʒվ
|
Ʒר91 |
ۺ |
ɫƵwww |
Ʒa߹ۿ |
˾ҹƵ |
Ƭѹۿȫ |
Ʒվa |
߲ѲavƬ |
ƷëƬa |
պƷaӰԺ |
һ |
2020þþƷۺһ |
ɫվwwwվ
|
ۺһ |
ɫվwwwͬ |
عΰAëƬѿ |
AƬ߹ۿ |
鶹ƷƵ |
AëƬþð |
AV˿߹ۿ |
91˾þþƷ |
ۺϾþ |