jsp应用开发详解笔记

 

[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() 方法,而需要用其规定的一个方法来关闭连接。这种做法有两个缺点:第一:改变了用户使用习惯,增加了用户的使用难度。第二:使连接池无法对之中的所有连接进行独占控制。

----------------------------------分页数据--------------------------------》》》》》》》》

[T7] 分页:(含连接)

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 应用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值