[T1] Jsp应用:javaBean
(1) Javabean是一个可重复使用的 软件组件。实际上javabean是java的一种类,通过封装属性和方法成为具有某种功能或者处理摸个业务的对象。简称bean ,由于JavaBean是基于java的一种语言。
可实现代码的可重复利用。
易编写、易维护、易使用。
在Jsp界面调用bean时,可有效地将动态和静态工作部分分开。减少服务器的压力。
Javabean分为可视化组件和非可视化组件。编写一个Javabean就相当编写一个java类。那么这个类创建的一个对象称作bean。即,在Javabean中编写属性时,封装也是用
Set….
Get….
那么只需将已编译的java.Class文件放到WEB-INF下即可。
1、useBean
<jsp:useBean id=”给bean起名字” class=”创建bean的类(包名+类名)” scope=”bean有效范围”>
</jsp:useBean>或者
<jsp:useBean id=”给bean起名字” class=”创建bean的类(包名+类名)” scope=”bean有效范围” />
当服务器上含有useBean动作标签的jsp页面被加载执行时,jsp引擎将根据ID的名字,在一同步块中,查找jsp内置的pageContent对象是否含有名字ID和作用域scope的对象。如果此对象存在,就分配给一个这样的对象给客户,如果pageContent没有查找到指定作用域,就根据 “. Class文件指定的类创建一个名字是id的对象,”并添加到pageContent内置对象。
Scope 尽管每个客户bean功能都相同,但他们分配的空间不同。当客户关掉浏览器时,Bean的空间将会被jsp引擎自动释放。(page、request、session、application)
(2)Scope有两种取值范围:
Session:如果是session则是从创建bean开始,就可以在session有效范围内使用这个bean,对于jsp来说这是共享的。
Page: 这里scope的值是page,引擎分配给bean的空间名是不同的,当客户离开该页面的时候,引擎会取消分配给bean 空间。(共享数据适用于请求jsp 页面)page jsp引擎分配给每个客户的bean都是互不相同的。Bean的有效范围是客户的会话期间。也就是说如果每个界面都有一个useBean那么bean的id值都是相同的。并且scope值都是session
Request 范围内共享的数据实际上也就是存放在httpServletrequest对象中。
Application 共享数据实际上是放在serveltContext中的
动作标签————》》
获取和修改bean的属性值可以通过getProperty和setProperty:
2、getProperty:
(1)、<jsp:getProperty name=”bean的名字” property =”bean的属性”></jsp:getProperty>
或者
<jsp:getProperty name=”bean的名字” property =”bean的属性” />
例如:
<jsp:useBean id="apple" class="cat.dog.Circle2" scope="page"></jsp:useBean>
<p>圆的半径是:
<jsp:getProperty name="apple" property="radius"/>
<p>圆的面积是:
<jsp:getProperty name="apple" property="circleArea"/>
<p>圆的周长是:
<jsp:getProperty name="apple" property="circleLength"/>
(2)、setProperty:
例如:
<% int answer=(int)(Math.random()*100)+1; %>
<jsp:useBean id="guess" class="com.jiafei.GuessNumber" scope="session">
</jsp:useBean>
<jsp:setProperty name="guess" property="answer" value="<%=answer %>"/>
<p>随机给你一个1到100的数字,猜猜这个数字是多少
<% String str=response.encodeRedirectURL("guess.jsp"); %>
<form action="<%=str %>" method="post">
<p>输入你的猜测
<input name="guessNumber" type="text">
<input type="submit" value="提交">
</form>
1>、当然以上的写法在成熟以后就可以简化了。例如property=”*”时,这是bean的一种快捷方式。在bean中,属性的名字、类型必须和request对象中的参数名相匹配。由于表单中传递过来的都是string类型的。Jsp内在机制会把这些参数转化成bean属性对应的类型。另外bean的属性也就没有必要对html表单进行排序了。
2>、
原输入框<input name=”userName” type=”text” value=””>
....
<jsp:useBean id=”user” scope=”page” class=”com.jsp.test”>
<jsp:setPropterty name=”user” property=”*”>
<jsp:getPropterty name=”user” property=”userName”>
<jsp:getPropterty name="user" property="pasword">
<jsp:getPropterty name="user" property="age">
注释:以上获取bean中的属性和脚本效果相同于<%=user.getUserName%>
3、几种试验方法:(检验2>)
<jsp:useBean id="user" class="com.jsp.test" scope="session"/>
(1)如果将<input name=”userName” type=”text”>name改为 UserName的话,这时如果还是使用<jsp:getPropterty name=”user” property=”*”>结果会返回空值,原因是应为UserName的改变。
(2)有效地解决办法是<jsp:getPropterty name=”user” property=”userName”
param=”UserName”>这样可以将bean中的属性值重新映射。
(3)以上方法还可以通过<jsp:getPropterty name=”userName” property=”userName”
Value=”UserName”>他标记ID是user,名称是userName ,属性值是UserName。
实例:
<jsp:useBean id="userInfo" class=" " scope="page">
<jsp:setProperty name ="userInfo" property="*"/>
</jsp:useBean>
<jsp:useBean id ="regist" class="" scope="page">
......
<%
regist.setUserInfo(userInfo);
regist.regist();
out.print("注册成功"); %>
4、<jsp:plugin>
用来插入applet和JavaBean 。当jsp文件被编译结果发送到浏览器时,<jsp:plugin>根据浏览器版本不同替换<object>用于html 4.0 <embed>用于html 3.2
<body>
<jsp:plugin code="classFileName"
codebase="classFileDirectoryName"
type="bean|applet">
[name="instanceName"]
[archive="URIToArchive"]
[align="bottom|top|middle|left|right"]
[height="displayPxl"]
[width="displayPxl"]
[hspace="leftRightPxl"]
[vspace="JREVersionNumber|1.1"]
[nspluginurl="URLToPlugin"]
[iepluginurl="URLToPlugin"]
[<jsp:params>
[<jsp:param name="" value="{parameterValue|<%=experssion %>}"/>]+
</jsp:params>]
name="parameterName" //这里表示参数名
<jsp:fallback>text message for user </jsp:fallback> //回滚参数
</jsp:plugin>
</body>
------------------------------------------>>>>>>>>>>><jsp:forward>和<jsp:param>
<jsp:forward page="success.jsp">
<jsp:param name="user" value="<%=name%>"
<jsp:forward/>
Code: 这是将被执行的java类文件名称。
CodeBase: 这包含插件运行的java类目录。
Hspace: 这是applet或bean显示在屏幕中,所余留的空间(pxl)。
Nspluginurl:这是Netscape Navigator用户能够使用的JRE的下载地址,此值为一个标准的URL地址。如:www.sun.com
Iepluginurl:这是Internet Explorer用户能够使用的JRE的下载地址,如:http://java.sun.com/products/plugin/index.html#download
[T2] 1、九大内置对象:
Request/Response/Application/Out/Config/Session/PageContext/Page/
Exception/
其中要注意的是request.getCookies()返回客户端所有的对象,结果是一个Cookie数组。
Request:
【getInputStream() 返回请求的输入流,用于或的请求中的数据。
getMethod() 获取客户端详服务器传送数据的方法。
GetRequestURI() 获取发出请求字符串的客户端地址。
getServerPort() 获取服务器端口号。 getCoookies()/getHeader()getRemoteAddr()
getRemoteHost()】
Response的认识:
【addCookie 添加一个Cookie对象,用来保存客户端的用户信息。
containsHeader 判断制定名字的HTTP文件头是否已经处在,然后返回真假bool值。
encodeURL() 使用sessionID封装URL。如果没有必要封装URL,返回原值。
flushBuffer() 强制把当前缓冲区的内容发送到客户端
getBufferSize() 返回缓冲区的大小】
2、session对象的主要方法:
【getAttribute()
setAttribute()
getAttributeName()
getCreationTiem() session的创建时间
getMaxInactiveInterval() session的生命周期,为负值时session永远不会消失。
Invalidate() 销毁这个session对象,使它绑定的对象都失效。
removeAttribute() 移除session的属性值。
】
3、 下面来说说Cookie的创建-------------------------->>>>>>>Cookie的创建
Cookie myCookie =new Cookie("color1",red);
myCookie.setMaxAge(30); //Cookie的生命周期
response.addCookie(myCookie);
注释:如果没有设置Cookie的生命周期,那么Cookie将不会被保存到客户端.
(1)读取Cookie:
Cookie [] allCookies =request.getCookie();
For(int i=0;i<allCookie.length;i++){
Cookie temp=allCookies[i];
If (temp.getName().equals("color1")){
String val=temp.getValue();
break;
}
}
(2)删除Cookie只需将读取Cookie时的 String val=temp.getValue(); 改为temp.setMaxAge(0);
注释:A Zero value causes the "cookie" to be deleted—>>setMaxAge方法。
4、pageContext应用: ------------------
pageContext:对象被封装成javax.servlet.jsp.pageContext接口。管理对jsp中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。那么它的属性和方法也和session极为相似。
以下是一些总结:
pageContext属性默认在当前页面是共享的。
Cookie首先它的位置是在客户端。客户端向服务器发送请求后,服务器回写到客户端的一种用于保存客户信息的一种记录方式。
Session它的位置是在服务器端。是把客户端的信息存放到服务器的内存空间里。
ServeletContext:首先它的位置是在服务器端。ServeletContext对象中的属性对所有的页面都是共享的。
这里需要补充的方法是:
getServletSession()返回ServeletContext对象。这个对象对所有的页面都是共享的。
getServletConfig()返回当前页面ServletConfig对象。
Application:方法的应用:----------------->>>>>>>>>
Application 对象为多个应用程序保存信息。它是一个容器,每个用户都共同使用一个 application对象,服务器启动后,就会自动创建application对象,这个对象一直保存,直到服务器关闭为止。
getAttribute(String name); /setAttribute(String name,Object)
getAttributeNames() 返回所有的application对象的属性的名字,其结果是一个枚举的实例。
getInitParameter(String name) 返回由name指定名字的application对象的某个属性的初始值。
getServletInfo() 返回Servlet编译器的当前版本的信息。
例如:
index.jsp
int count = 0;
String counter_name =request.getParameter("counter_name");
Try
{ Count=Integer.parseInt((application .getAttribute(counter_name).toString()));
} catch (Exception ex) {
}
out.println("自从应用服务器启动后,此页面已经访问了" + count + "次");
count++;
test_application.jsp:
application.setAttribute(counter_name, new Integer(count));
<jsp:include page=index.jsp>
<jsp:param name="counter_name" value="test_application.jsp">
// "value" 重新映射
</jsp:include>
注意:有一点不足,当服务器重新启动时,计数器显示从零开始!
Config对象:------------------
Config对象被封装成javax.servlet.ServletConfig接口它表示servlet的配置。
当一个Servlet初始化时,容器把某些信息通过此对象传递给Servlet。
Config对象常用方法:--------------------
getServletContext(); 返回执行者的Servlet上下文。
getServletName(); 返回Servelt的名字。
getInitParameter(String name) 返回名字为name的初始参数的值。
getInitParameterName() 返回这个jsp的所有的初始参数的名字。
注:Config对象能很好的改善计数器“归零”问题。思路如下:首先获取‘初始参数的值’如:
int count=Integer.parseInt((request.getInitParameter("counter")));然后通过application获取对象的属性值,再通过application给对象的属性赋值。
Page ——jsp实现类对象的句柄。
Exception ——exception是java.lang.Throwable类的一个实例。它指的是运行是异常。其结果也就是错误页面。当页面出现问题时,可以是用指令errorPage="...jsp"
,在处理异常的页面导入指令isErrorPage="true"
<%=exception.getMessage()%>。
<<<<<-------------------------------XML文件------------------------------->>>>>
[T3] XML和文件IO:(两者都是可扩展性标记语言。)
数据存储、数据交换、数据配置
1、Xhtml中的标签都使用的是标准标签,而xml使用的标签是自定义标签。
2、Xhtml主要用于显示数据和页面排版,xml是用来存储和交换数据。
Xml 分为两种方式:
DTD和XSD
Xml DTD
DTD 定义了XML文档中可用的合法元素。
例如:
Pet.dtd文件
<!DOCTYPE pets [
<!ELEMENT pets (dogs,penguins)>
<!ELEMENT dogs (dog*)>
<!ELEMENT penguins (penguin+)> //此元素至少出现一次
<!ELEMENT dog (name,health,love,strain?)> //表示strain元素出现0-1次
<!ATTLIST dog id CDATA #REQUIRED> //dog元素有id属性,是CDATA类型,必须出现。
<!ELEMENT penguin (name,health,love,sex)>
<!ATTLIST penguin id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)> //name元素的类型为#PCDATA。
<!ELEMENT haalth (#PCDATA)>
<!ELEMENT love (#PCDATA)>
<!ELEMENT strain (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
多个xml文件使用时是可通过<!DOCTYPE pets SYSTEM "pet.dtd">。另外dtd文件也可直接写在xml文件中。
xml文件也可以和css文件配合使用<?xml-stylesheet type="text/css"?>
XML属性:
<file type="gif">computer.gif</file>
属性值必须用引号引着,单/双引号都可。例如:<person sex="female"></person>,特殊情况下使用<gangster name='dfdfd "zsdfj" sdfsd'></gangster>
使用XSL来显示XML文档:
XSL(全称是:可扩展的样式语言,the eXtensible Stylesheet Language)比起CSS样式来说功能更为强大。XSL的一个主要的用途就是将XML文档转换成HTML格式的文件,然后再交付给浏览器,由浏览器显示转换的结果: 使用时的差别 <?xml-stylesheet type="text/xsl" href=" ">
使用XML文档解析器:
如果浏览器使用JavaScript作为脚本语言,那么利用下面的代码可以创建XML文档对象:
<javascript>
Var xmlDoc= new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("note.xml"); //载入文档
</javascript>
把XML文档由字符载入解析器:
<script type="text/javascript">var text="<note>"text=text+"<to>Tove</to><from>Jani</from>"
text=text+"<heading>Reminder</heading>"text=text+"<body>Don't forget me this weekend!</body>"
text=text+"</note>"var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"
xmlDoc.loadXML(text) //载入字符串</script>
解决命名冲突:
为了避免命名冲突可以采用以下方法解决:
<h:table></h:table>.......
<f:table></f:table>........
第二种方法:
<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/xsl">
<xsl:template match="/"><html><body><table border="2" bgcolor="yellow"><tr><th>Title</th><th>Artist</th></tr>
<xsl:for-each select="CATALOG/CD">
//XSL
实例:
<html><head><script type="text/javascript"for="window" event="onload">
var xmlDoc=new ActiveXObject("Microsoft.XMLDOM")xmlDoc.async="false"xmlDoc.load("xml_note.xml")
nodes=xmlDoc.documentElement.childNodesto.innerText= nodes.item(0).text
from.innerText= nodes.item(1).textheader.innerText=nodes.item(2).textbody.innerText= nodes.item(3).text
</script><title>HTML using XML data</title></head><body bgcolor="yellow"><h1>W3Schools.com Internal Note</h1><b>To: </b><span id="to"> </span><br /><b>From: </b><span id="from"></span>
<hr><b><span id="header"></span></b><hr><span id="body"></span></body></html>
☆☆《《《《《《《《《《-------------------------------------------------------------------------------------------------------》》》》》》》》》》》》》
[T4] JNDI英文全称:(Java Naming and Directory Interface)命名和服务接口(统一资源定位)。
JNDI优点:
包含了大量的命名和目录服务,使用通用接口来访问不同种类的服务,可以同时连接到多个命名或目录服务上。
建立起逻辑关联,允许把名称同Java对象或资源关联起来,而不必指导对象或资源的物理ID。
命名服务:
n 名字和对象绑定在一起
n 能够提供依据名字查找对象的机制
n LDAP,NDS等等
命名和目录接口:
n 包含大量命名和目录服务,使用相同的API。
n 同时连接到多个命名和目录服务。
n 允许把名称和JAVA对象或资源联系在一起。使用JNDI访问EJB组件。
n 使用通用接口访问不同的目录服务
客户代码--->>JNDI客户API------>>>服务器提供接口-------->>>文件系统提供者、LDAP服务器提供者
------------------------------------》》》》》》》》
javax.naming:命名操作;
javax.naming.directory:目录操作;
javax.naming.event:在命名目录服务器中请求事件通知;
javax.naming.ldap:提供LDAP支持;
javax.naming.spi:允许动态插入不同实现。
JNDI和JDBC
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。统一接口。
try{
Context cntxt = new InitialContext();
DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt"); //数据源名称
}
catch(NamingException ne){}
Connection conn=ds.getConnection();
--------------------------------
问题:不想在与协议无关的环境上下文中使用针对特定协议的系统信息。
n 解决:使用Context对象封装系统系统数据,避免在应用系统和特定协议之间造成耦合。
n 上下文Context,能够包含0个或多个绑定对象的对象。在命名系统中,它们作为查找对象过程的起点。
InitialContext类是一个初始上下文工厂,要执行任何操作,必须建立一个InitialContext。它是命名方案的起点。
例如/etc文件夹有两个文件:
mtab,exports。
/etc文件夹是一个上下文,含有两个文件的绑定。
n 有不同的厂商提供JNDI服务,为了装入不同的服务,可以在InitialContext的构造时加入一个参数。
Properties env=new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY,“com.ibm.websphere.naming.
WsnInitialContextFactory”);
//当用websphere时,我们可以找到这个类
env.put(Context.PROVIDER_URL, “iiop://localhost”);的师傅告诉对方告诉对方
InitialContext ctx= new InitialContext(env);
问题:lookup
n 一个对数据库建立的数据源对象被赋予了一个名称,并被一个树形目录结构所管理。可以查找它,引用它。
Context.xml文件:context.xml文件为全局的上下文配置文件,对所有的Web有效(conf)
<context>
<Environment name="name" value="hello JNDI" type="java.lang.String">
</context>
------------------------------------------------------------------------------------------------------------->>>>>>>>>>>>>>
[T5] 数据源
DataSource类的全程为 javax.sql.DataSource, 它有一组特性可以用于确定和描述它所表示的实现存在的数据源。数据库连接池也是以数据源的形式存在。
Tomcat6.0连接池配置
1.配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:
<Resource name="jdbc/sample"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SqlserverDriver"
--------------------->>>>>>>>
【driverClassName="oracle.jdbc.driver.OracleDriver"
url="oracle:jdbc:thin:@localhost:1521:accp"】
------------------->>>>>
url="jdbc:sqlserver://localhost:1433;databaseName=test"
username="sa"
password="sa"
maxActive="100" 连接池的最大数据库连接数。设为0 表示无限制。
maxIdle="30" 接将被标记为不可用,然后被释放。设为0表示无限制。
maxWait="10000" /> 最大建立连接等待时间。如果超过此时间将接到异常。设为-1 表示无限制。
2.配置你的应用程序下的web.xml中的之间加入:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/sample</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.把连接数据库的第三方驱动放到common/lib
[T6] 数据源和连接池:
连接池的任务:预先分配连接、管理可用连接、分配新的连接、等候连接可用、在需要时关闭连接。
使用数据源有两种方式:
独立使用、通过JNDI使用数据源。
n(通过JNDI使用数据源)互联网中有数百万台服务器,根本无法记住全部物理地址,为了连接到特定的
服务,需要把名称和服务的位置,以及特定的信息联系起来。命名和目录服务把信息按照层次结构组织起来,映射到目录对象上。
n DNS将IP地址映射到名称上。
www.zz.ha.cn <----------> 202.102.224.65
查找有关资料,都会发现有一个共同的问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度。
但是另外一个共同的问题是,它们同时不允许使用者显式的调用 Connection.close() 方法,而需要用其规定的一个方法来关闭连接。这种做法有两个缺点:第一:改变了用户使用习惯,增加了用户的使用难度。第二:使连接池无法对之中的所有连接进行独占控制。
----------------------------------分页数据--------------------------------》》》》》》》》
1.确定分页显示的数据量
2.计算显示的页数
3.编写sql语句。
(1).最外层:通过rownum的限定查询数量的下限。
(2).中间层:通过rownum的限定查询数量的上限。
(3).最内层:查询所有记录.
例:...
public int getTotalPages(int count, int pageSize)
Int totalpages=0;
Totalpages=(count%pageSize==0)? (count/pageSize):(count/pageSize+1)
Return totalpages;
------------->>>
[T8] SmartUpload组件<<<<smartUpload组件.txt>>>
<form enctype="multipart/form-data" method="post">
选择文件:<input type="file" name="nfile">
</form>
File 【
saveAs(String destFilePathName)--保存文件名
/isMissing()/String getFiledName()/String getFileName()】
Files【int getCount()/File getFile(int index)/long getSize()/Collection getColl() 】
SmartUpload【
Public final void initialize(PageContext pc)
Public void upload()
Public int save(String pathName)
Public void setMaxFileSize(long filesize) 文件上传的最大长度
Public void setTotalFileSize(long totalFile)文件的总长度
】
<% //文件上传
smartUpload su = new SmartUpload();
su.initialize(pageContext);
try{
su.upload();
}exception(Exception ex){ ex.printStackTrace();}
//获取单个上传文件
File file = su.getFiles().getFile(0);---------《《 //设置文件在服务器的保存位置String filepath = "upload\\";
filepath += file.getFileName();
//文件另存为 --------《《 file.saveAs(filepath, SmartUpload.SAVE_VIRTUAL);
------------------------》》
》》》<form method="post" enctype="multipart/form-data" action="control.jsp">《《《
上传文件:<input type="file" name="nfile"><br/>
文件描述:<input type="text" name="explanation"><br/>
<input type="submit" value="上传">
、</form>
com.jspsmart.upload.Request surequest = su.getRequest();
String explanation = surequest.getParameter("explanation");
out.println(explanation) ;
--------------------------------------------------------------》》》》》》
三层模式是软件构架中最常见的一中分层模式,三层架构的具体划分如下。
表示层: 用于用户展示与交互
业务逻辑层:对业务逻辑进行封装
数据访问层:数据保存和读取
[T9] JSTL/EL语言:《jsp的EL语言.wps》(连接)
EL的全称是Expression Language,它是一种借鉴JavaScript和XPath的表达式语言,EL定义了一系列的隐含对象和操作符,
EL通常用于某个作用域(内置对象)或判断:
自动转换类型:
Web服务器对request请求通常会以string类型发送,如果在业务逻辑层要得到参数值,就必须转换。而EL不用。
EL语法:
${EL表达式}——》 “$” / “{ }”缺一不可。
点操作符:
EL通常由两部分组成:对象和属性如( . )和java基本上一样。
‘[ ]’操作符:
-----》》》当属性名中包含‘.’和‘-’时就必须使用‘[ ]’。
-----》》》访问数组。某数组的对象名array,则访问数组中的元素就必须是${array[0],array[1]}。
JSTL通用标签库
[T10] 更多学习研究《JSTL学习研究.wps》----->>>学习研究《jQuery.wps》(连接)
XML核心动作标签:
语法一:解析由string或者reader对象组成的XML文档
<x:parse xml="XMLDocument"{var ="var" [scope="scope"] | varDom="var" [scopeDom="scope"] }
[systemId="systemId"] [filter="filter"] />
语法二:解析在body中指定的XML文档
<x:parse xml="XMLDocument"{var ="var" [scope="scope"] | varDom="var" [scopeDom="scope"] }
[systemId="systemId"] [filter="filter"] >
XML Domcument to parse
</x:parse>
Scope={page|request|session|application}
<x:out select ="XPathException"[escapeXml="{true|false}"] / >
<x:set select ="XPahtException"[scope="{page|request|session|application}" ] var ="varName"/>
案例详解:
<x:parse var="myxml">
<books>
<book id="1">
<name>jsp</name>
<price>59</price>
</book>
</books>
</x:parse>
<x:out select="$myxml/books//name"/>
<x:out select="$myxml//name"/>
<!-- out 和set 方法解析XML文档 -->
<c:set var="xmlText">
<books>
<book id="1">
<name>jsp</name>
<price>59</price>
</book>
</books>
</c:set>
<x:parse var="ts" xml="${xmlText}">
<x:out select="$ts/books//name"/>
</x:parse>
[T11] Servlet研究:(含连接)
Servlet是一个java程序,试运行在服务器端,接受和处理用户请求,并作出响应的程序。
Servelt的生命周期包括如下几个阶段。
1.加载和实例化。2.初始化 。3.服务。4.销毁。
Servlet接口:
getServletInfo()方法用于(用于获取Servelt信息)和(返回ServletConfig对象,ServletConfig对象)
抽象类GerericServlet实现了Servelt接口和ServeltConfig接口给出了Serivece()方法,不依赖于协议的Servlet
Void init(servletconfig config)/ string getInitParameter(string name)/serveltConet
Xt getservletContext();
Init方法如果重写的话,应该包含super。Init(config)如果要编写一个servelt,只需集成GerericServlet
实现service()方法。
Servelet的生命周期就是指创建servlet实例之后其存在的时间以及何时消失init、service、destroy
javaBean
九大内置对象
XML和文件IO
JNDI命名和服务接口
数据源
数据源和连接池
分页SmartUpload组件
SmartUpload组件
(含连接)
JSTL/EL语言
(含连接)
JSTL文件和jQuery文件(含连接)XML
Servlet技术开发web 应用