国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
JSTL與Struts的結合(十一)

JSTL與Struts的結合(十一)

分類:我的著作

9.9  完整示例

在這一小節(jié)中,將修改在第三章中曾經(jīng)給出的Struts框架示例,以Struts框架和JSTL的協(xié)同工作來實現(xiàn)。

對于第三章的示例,要將JSTL整合進去,需要做以下幾步工作。

1)下載JSTL并配置。

1)修改原先的web.xml使其作為Servlet2.4的實現(xiàn)。

3)修改JSP顯示頁面,整合JSTLStruts標簽庫一起工作。

9.9.1  下載JSTL并配置

可以從http://java.sun.com/products/jsp/jstl網(wǎng)址中下載JSTL1.1的最新版本。要使用這些標簽庫需要做3個步驟的工作。

1)將下載的jstl.jar放置到Web應用的WEB-INFlib目錄下。

2)將下載的TLD文件放置到Web應用的WEB-INF目錄下。

3)在需要使用的JSP頁面中聲明該標簽庫。

9.9.2  修改web.xml使其作為Servlet2.4的實現(xiàn)

在第三章的示例中所給出的web.xmlServlet2.3規(guī)范的,因此無法很好的支持JSTL1.1,要修改為符合Servlet2.4規(guī)范的代碼。使web.xml成為Servlet2.4規(guī)范是十分容易的,需要修改的是其頭部DTD聲明。

Servlet2.3之前,校驗和規(guī)范web.xml都是使用DTD,因此其頭部聲明如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

</web-app>

而到了Servlet2.4規(guī)范,首此使用了xmlns來聲明web.xml,因此其頭部聲明為:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

         xmlns="http://java.sun.com/xml/ns/j2ee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

</web-app>

所以,為了支持Servlet2.4規(guī)范,應該將第三章示例的web.xml改成如例9.6的樣子。

9.6:修改后的web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

         xmlns="http://java.sun.com/xml/ns/j2ee"

         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <filter>

       <filter-name>Set Character Encoding</filter-name>

       <filter-class>struts.sample.cap1.sample3.util.SetCharacterEncodingFilter</filter-class>

       <init-param>

                 <param-name>encoding</param-name>

                 <param-value>UTF-8</param-value>

       </init-param>

  </filter>

  <filter-mapping>

       <filter-name>Set Character Encoding</filter-name>

       <url-pattern>*.do</url-pattern>

  </filter-mapping>

  <servlet>

    <servlet-name>action</servlet-name>

    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

    <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

    </init-param>

    <init-param>

      <param-name>debug</param-name>

      <param-value>2</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

  </servlet-mapping>

  <welcome-file-list>

    <welcome-file>setSolution.jsp</welcome-file>

  </welcome-file-list>

  <taglib>

    <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-template.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>

  </taglib>

  <taglib>

    <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>

    <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>

  </taglib>

</web-app>

修改的地方不多,僅僅是頭部的聲明。其他地方完全不必改動,這樣的web.xml已經(jīng)支持了Servlet2.4規(guī)范了。

9.9.3  JSP部分:<logic:notEmpty><c:if>標簽

對于JSP顯示頁面的修改是整合的核心部分,在第三章示例的showAttackSolution.jsp中出現(xiàn)了這樣的語句:

<logic:notEmpty name="allAttackSolution">

...

</logic:notEmpty>

將類型為ArrayList的變量“allAttackSolution”從作用范圍中取出,利用<logic:notEmpty>標簽判斷該ArrayList是否為空。

根據(jù)之前討論的“所有判斷標簽被EL表達式和<c:if>標簽替換”,可以利用<c:if>標簽和EL表達式來修改該段JSP代碼。

修改后的結果如下:

<c:if test="${(requestScope.allAttackSolution != null)

&& fn:length(requestScope.allAttackSolution) != 0}">

...

</c:if>

<logic:notEmpty>標簽其本身具有多種功能:

q         一是判斷是否為null。

q         二是當它為String類型的變量時,判斷字符串長度是否為0。

q         三是當它為集合類型的變量時,利用集合類的isEmpty方法可以判斷是否是一個空的集合。

本示例既然要在替換后與替換前的工作一致,就應該對集合做兩個判斷:

q         一是該集合不為null

q         二是該集合中的對象數(shù)量不為0。

!=null”的EL表達式實現(xiàn)了集合實例不為null的判斷;fn:length()函數(shù)實現(xiàn)了集合內對象數(shù)量不為0的判斷,兩個判斷用“&&”連接起來就實現(xiàn)了<logic:notEmpty>標簽對于集合判斷的工作。

在這里應該利用“<logic:notEmpty>標簽”,還是利用“EL表達式<c:if>標簽”呢?<logic:notEmpty>標簽相對來說可讀性更強些,EL表達式作為判斷條件則可讀性稍差些。然而,這些僅是就本示例的改動而言的,其他情況下,利用EL表達式和<c:if>標簽還是有其優(yōu)勢的。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關于Liferay的配置文件 —— 基于Struts開發(fā)Portlet
serverlet配置文件
Struts2.0配置文件(web.xml)
實戰(zhàn)Struts-Menu - 空間站 - BlogJava
blogjava - hexuzhong-利用myeclipse快速開發(fā)struts應用程序
web.xml 中的listener、 filter、servlet 加載順序及其詳解
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服