Rising Sun

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks
          使用<%! %>方式所聲明的變量為全局變量,即表示:若同時n 個用戶在執(zhí)行此JSP網(wǎng)頁時,
          將會共享此變量。因此筆者強烈建議讀者,千萬別使用<%! %>來聲明您的變量。
          若要聲明變量時,請直接在<% %>之中聲明使用即可。
          ----------------------------------------------------------------------------------
          有時候,我們想要讓網(wǎng)頁自己能自動更新,因此,須使用到Refresh 這個標(biāo)頭。舉個例子,我
          們告訴瀏覽器,每隔三分鐘,就重新加載此網(wǎng)頁:
          response.setIntHeader("Refresh" , 180)
          如果想要過十秒后,調(diào)用瀏覽器轉(zhuǎn)到http://Server/Path 的網(wǎng)頁時,可用如下代碼:
          response.setHeader("Refresh","10; URL=http://Server/Path" )
          如果大家對HTML 語法還熟悉,則HTML 語法中也有類似的功能:
          <META HTTP-EQUIV="Refresh" CONTENT=" 10; URL=http://Server/Path" >
          上述兩種方法皆可以做到自動重新加載。
          ----------------------------------------------------------------------------------

          jsp隱式對象

          輸入輸出對象 out request response
          作用域通訊對象 session application pagecontext
          servlet對象  page config
          錯誤對象  exception
          ----------------------------------------------------------------------------------

          servlet:
          request.setAttribute("articleComment",articleCommentArrayList);
                  RequestDispatcher dispatcher = request.getRequestDispatcher("pages/delcomment.jsp");

          jsp:
          ArrayList articletypeArrayList = (ArrayList)request.getAttribute("articleType");
          ----------------------------------------------------------------------------------
          jsp標(biāo)準(zhǔn)動作

          jsp:useBean
          jsp:setProperty
          jsp:getProperty
          jsp:include
          jsp:forword
          jsp:parm
          ----------------------------------------------------------------------------------
          <button name="but" onclick="document.form1.submit()">提交</button>
          location.href="abc.htm";   跳到另一頁 也可刷新本頁
          ----------------------------------------------------------------------------------
          Core 主要

          表達(dá)式操作:out ,set ,remove,catch等;
          流程控制:if choose when otherwise
          迭代操作:forEach forTokens

          前提條件是用taglib 引入核心標(biāo)簽庫
          --------------------------------------------------------------------------------------
          表達(dá)式操作
          -------------------------------------------
          <c:out>不可以不帶主體
          <c:out value=需要顯示的內(nèi)容 default=如果value的值為空,則顯示default的值 escapeXml是否轉(zhuǎn)換特殊字符,如設(shè)定為真,默認(rèn)會將<,>,、等字符轉(zhuǎn)換成&lt等;
          <c:out value ="<p>有特殊字符</p>">
          <c:out value ="<p>有特殊字符</p> escapeXml="false" ">
          <c:set>將變量存貯在JSP范圍內(nèi)或javabean中
          -------------------------------------------

          <c:set>
          可以帶主體也可以不帶
          <c:set value="要存在變量中的值" var scope=默認(rèn)page/>
          <c:set  var scope>主體中的內(nèi)容存在變量中 </c:set>
          <c:set  value ="要存在對象中的值" target="javabean的對象" property="屬性名"/>
          <c:set  target="javabean的對象" property="屬性名">
          主體中的內(nèi)容存在對象中 </c:set>
          <c:set var="num"> 1+1 </c:set>
          -------------------------------------------
          <c:remove var="要移出的變量名" scope可有可無>  如果不寫scope就會按照page->request->session->application的范圍順序依次刪除
          -------------------------------------------
          <c:catch>主要將可能發(fā)生的錯誤放在<c:catch>和</c:catch>之間
          如果真的發(fā)生錯誤將把錯誤信息存貯在var中
          <c:catch var="errorMessage">
          <% String str="no number" ; int i=Integer.parseInt(str);%>
          </catch>
          ${errorMessage}
          -------------------------------------------


          流程控制<c:if> <c:choose> <c:when> <c:otherwise>

          --------------------------------------------------------------------------------------
          <c:if test(必須有test屬性)="測試條件" var="用來存儲test后的結(jié)果">
          當(dāng)條件為真時,執(zhí)行主體內(nèi)容
          </c:if>
          <c:if test="{param.username}=='admin'" var="con" >
          您好,admin
          </c:if>
          ${con}
          執(zhí)行的時候在jsp的后面直接加上?username=admin
          -------------------------------------------
          <c:choose>本身只當(dāng)作<c:when>和<c:otherwise>的父標(biāo)簽
          <c:choose></c:choose>主體內(nèi)容為
          1.空白
          2.1或多個<c:when>
          3.0個或1個<c:otherwise>,<c:when>必須在<c:otherwise>之前
          <c:when test="必須的測試條件">
          -------------------------------------------
          <c:forEach>為循環(huán)控制,它可以將集合(Collection)中的成員按循序瀏覽一遍,當(dāng)條件符合時,就會繼續(xù);
          var用于存放現(xiàn)在指到的成員;String
          varstatus用來存放現(xiàn)在知道的相關(guān)成員的信息  String
          例如:varstatus="a"
          則a還有四個屬性,index,count,first和last
          index:number 現(xiàn)在指到的成員的索引
          count:number 總共指到的成員的總數(shù)
          first:boolean 現(xiàn)在指到的成員是否是第一個成員
          last:boolean 現(xiàn)在指到的成員是否為最后一個成員
          items 被迭代的集合對象,包括:Arrays Collection Iterator Enumeration Map String

          begin開始的位置int
          end結(jié)束的位置int
          step每次迭代的間隔數(shù)int
          限定begin如果有必須大于0,end必須大于begin
          step必須大于等于1

          <%
             String a[]= new String[3];
            a[0]="hello ";
            a[1]="this";
            a[2]=" is a test";
            request.setAttribute("att",a);
          %>
          <c:forEach items="${"att"}" var="items" varStatus="s">
            ${item}
            item有效范圍在foreach中
            index:${s.index}
            count:${s.count}
            first:${s.first}
            last:${s.last}
          </c:forEach>
          不同的begin和end的設(shè)置輸出不一樣
          -------------------------------------------
          <c:forTokens>
          </c:forTokens>用來瀏覽一字符串中所有的成員,其成員定義由定義符號來分隔
          delims定義用來分隔字符串的字符
          <c:forEach>也可以分隔字符串,但不能設(shè)定分隔符
          <c:forEach items="a,b,c,d" var="item">
            ${item}
          </c:forEach>
          <c:forToken items="a,b,c,d" var="item" delims=",">
            ${item}
          </c:forEach>
          <c:forToken items="123-456-789" var="item" delims="-">
            ${item}
          </c:forEach>
          -------------------------------------------
          此外,筆者還使用<c:set>來傳遞值給Core_import.jsp,這就是<c:param>無法做到的動作,
          <c:param>只能從包含端拋給被包含端,但是在屬性范圍中,可以讓包含端也能得到被包含端傳來的
          數(shù)據(jù)
          -------------------------------------------
          國際化與格式化標(biāo)簽庫 I18N

          重寫客戶端的區(qū)域設(shè)置
          <fmt:setLocale value="語言與國家代碼" variant="瀏覽器變量" scope="page|request|session|application"/>


          區(qū)域代碼  區(qū)域,語言
          en        英文
          en_US     英文(美國)
          zh_TW     中文(臺灣)
          zh_CN     中文(中國)
          de_CH      瑞士,德國樣式

          創(chuàng)建一個I18N本地化上下文,并將資源包加載到其中
          <fmt:bundle basename="無擴展名的資源文件名">Body</fmt:bundle>

          創(chuàng)建一個I18N本地化上下文,并存在范圍變量里
          <fmt:setBundle basename="無擴展名的資源文件名" var="指定導(dǎo)出的范圍變量的名稱" scope="page|request|session|application"/>

          給出資源包的輸出值
          <fmt:message key="消息關(guān)鍵字"/>

          格式化數(shù)字
          <fmt:formatNumber value="要格式化的數(shù)字" type="格式類型" minFractionDigits="小數(shù)點后保留幾位"/>

          格式化時間
          <fmt:formatDate value=""/>

          -------------------------------------------

          JSTL中最重要的就是國際化格式(I18N)的支持,此功能可以對一個特定的語言請求作出合適的響應(yīng)。
          不同的國家有不同的數(shù)據(jù)顯示格式。如數(shù)字356987.589,在法國為356 987,589
          在德國356.987,589 在美國356,987.589

          I18N格式符主要包含:國際化,消息,數(shù)字日期格式化。

          詳細(xì)分類:
          國際化setLocale
                requestEncoding:用來設(shè)定字符串編碼,功能和ServletRequest.setCharacterEncoding()相同

          <fmt:setLocale value="一定要有value屬性,設(shè)定地區(qū)代碼。其中最少有兩個字符的語言代碼如zh ,en 然后再加上兩個字母的國家和地區(qū)代碼,用-或_連接"  varitant="瀏覽器或供應(yīng)商,如WIN,Mac" >

          <%Date n= new Date();
            request.setAttribute("d",n);
          %>
          <fmt:setLocale value="zh_CN"/><fmt:formatDate value=$wmqeeuq/>

          --消息     bundle     message      param     setBundle
                抓取系統(tǒng)設(shè)定的語系資源,作為國際化信息.通過建立存放國際化信息的數(shù)據(jù)來源.建立propertie文件,并存儲在we-inf/classes目錄下
                寫的時候必須依照key=value
                MyResource.properties
                str1=hello
                str2=My name is Bunny
          <fmt:bundle basename="basename" prefix="屬性的前綴">
          basename是設(shè)定要使用的數(shù)據(jù)源,千萬不可有任何的文件類型即擴展名,如.class,或.properties
          prefix是前置關(guān)鍵字,如當(dāng)如下的propertites:
            requestinfo.label.method=Method;
            requestinfo.label.requesturi=URI;
            requestinfo.label.protocol=Protocol;
           我們就可以用以下方法打開
          <fmt:bundle basename="MyResource" prefix="requestinfo.label.">
          <fmt:message key="protocol"/>
          <fmt:message key="method"/>
          </fmt:bundle>

           

           <fmt:message>會從指定的資源中把特定的關(guān)鍵字的值抓取出來。
          <fmt:setbundle>設(shè)定默認(rèn)的數(shù)據(jù)源
          <fmt:setbundle basename=""  var="存儲資源的名稱">

          <fmt:setbundle>和<fmt:bundle>都可以和<fme:setLocale>搭配使用.多種語言源時,可以將文件名取成如書上例子所示的,當(dāng)語言取成zh_TW時,它默認(rèn)去找MyResource_zh_TW.properties作為數(shù)據(jù)源,如果設(shè)定的區(qū)域沒有符合的文件名,將會使用MyResource.properties 來作為數(shù)據(jù)源。

          如是中文的資源文件,它的內(nèi)容大部分是Unicode的符號,他們都代表一些中文字,在執(zhí)行jsp時,會出現(xiàn)亂碼,無法正常顯示中文;
          --------------------------------------------------------------------------------------
          SQL標(biāo)簽庫
          1.設(shè)置數(shù)據(jù)源
            <sql:setDataSource driver="驅(qū)動的名字'sun.jdbc.odbc.JdbcOdbcDriver'" url="jdbc:odbc:blog" var="conn"/>
          2.用事務(wù)建表
            <sql:transaction dataSource="${conn}">
              <sql:update var="newTable">
                sql語句來見表
              </sql:update>
            </sql:transaction>
          3.插入記錄
            <sql:update var="newRow" dataSource="${conn}">
                insert into tablename values(?,?,?)
                <sql:param value=""/>
                <sql:param value=""/>
            </sql:update>
          4.查詢記錄
            <sql:query var="rs" dataSource="${conn}">
                select * from tablename
            </sql:query>
          5.用表格顯示記錄
            <table border="1">
             <tr>
              <c:forEach var="columnName" items="${rs.columnNames}">
               <th>
                <c:out value="${columnName}"/>
               </th>
              </c:forEach>
             </tr>
             <c:forEach var="row" items="${rs.rowsByIndex}">
              <tr>
                <c:forEach var="column" items="${row}">
              <td>
                <c:out value="${column}"/>
              </td>
             </c:forEach>
              </tr>
             </c:forEach>
            </table>
          --------------------------------------------------------------------------------------

          import java.util.Calendar;
          import java.util.GregorianCalendar;

          public class Test {
              public static void main(String[] argv) {
                  //返回一個當(dāng)前日期和時間的Calendar
                  Calendar curDate = Calendar.getInstance();
                  //返回今天夜里零時的Calendar(這里不明白看API)
                  Calendar tommorowDate = new GregorianCalendar(curDate
                          .get(Calendar.YEAR), curDate.get(Calendar.MONTH), curDate
                          .get(Calendar.DATE) + 1, 0, 0, 0);
                  //一天24小時當(dāng)中,當(dāng)前過了多少毫秒(用一天24小時的毫秒數(shù)減去一天剩余時間的毫秒數(shù))
                  System.out.println((60*60*24*1000-(tommorowDate.getTimeInMillis() - curDate
                          .getTimeInMillis())));
              }
          }

          --------------------------------------------------------------------------------------

          轉(zhuǎn)換成時間
          DateFormat format = new SimpleDateFormat("H:dd");
          Date date = format.parse("8:00");

          加上20分鐘,如果是減去20分鐘的話用-20
          Calendar calendar = Calendar.getInstance();
          calendar.setTime(date);
          calendar.add(Calendar.MINUTE, 20);

          --------------------------------------------------------------------------------------
          11.JSP中動態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
          動態(tài)INCLUDE用jsp:include動作實現(xiàn)
          它總是會檢查所含文件中的變化,適合用于包含動態(tài)頁面,并且可以帶參數(shù)
          靜態(tài)INCLUDE用include偽碼實現(xiàn),定不會檢查所含文件的變化,適用于包含靜態(tài)頁面
          --------------------------------------------------------------------------------------
          int i=100;
          String binStr=Integer.toBinaryString(i);
          String otcStr=Integer.toOctalString(i);
          String hexStr=Integer.toHexString(i);
          System.out.println(binStr);
          System.out.println(otcStr);
          System.out.println(hexStr);
          --------------------------------------------------------------------------------------
          Calendar date=Calendar.getInstance();
          SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");

          String name=format.format(date.getTime());
          --------------------------------------------------------------------------------------

          使用WEB容器捕獲異常進(jìn)行處理,在web.xml文件頭部加上:
          <error-page>
             <exception-type>java.lang.Exception</exception-type>
             <location>/system_error.jsp</location>-----出錯后轉(zhuǎn)向system_error.jsp頁面
          </error-page>
          <error-page>
             <error-code>404</error-code>
             <location>/system_error.jsp</location>-----出錯后轉(zhuǎn)向system_error.jsp頁面
          </error-page>
          <error-page>
             <error-code>400</error-code>
             <location>/system_error.jsp</location>-----出錯后轉(zhuǎn)向system_error.jsp頁面
          </error-page>
          <error-page>
             <error-code>500</error-code>
             <location>/system_error.jsp</location>-----出錯后轉(zhuǎn)向system_error.jsp頁面
          </error-page>
          --------------------------------------------------------------------------------------
          Java 運行 記事本
          Runtime rt = Runtime.getRuntime();
          Process p = rt.exec("notepad"); 



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1535545

          posted on 2007-08-25 14:32 brock 閱讀(1578) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 康马县| 孟州市| 尼勒克县| 化德县| 老河口市| 鄂温| 凤凰县| 布尔津县| 大港区| 衡南县| 荔浦县| 泸水县| 徐水县| 宣城市| 哈尔滨市| 桐乡市| 即墨市| 新乡县| 胶南市| 泽州县| 手游| 开阳县| 江西省| 南投市| 防城港市| 东兰县| 手游| 勃利县| 新余市| 梓潼县| 太谷县| 沅陵县| 新乐市| 平阴县| 阳山县| 沙湾县| 敖汉旗| 盐山县| 启东市| 武冈市| 十堰市|