<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JBOSS 點滴

    豐豐的博客

    #

    struts的html標簽和html中的標簽有什么區別 .

    struts的html標簽<html:form></html:from>和html標簽<form></from>有什么區別


    1、無論是struts1還是struts2的標簽,都提供了他們對于驗證框架的支持,給我們實現驗證提供了很多方便。
    struts的html標簽<html:form></html:from>和Struts2的<s:form></s:form>標簽是對form標簽的封裝,是struts框架自己定義的標簽,便于和他的mvc中的form結合使用。但經過查看兩個框架的源碼發現,最好還是用html標簽,建議少用struts標簽,因為一個標簽就一位一個class,那必然占用jvm的內存,造成頁面加載速度緩慢。

    就效果而言,他們達到的效果是一樣的,struts 的html標簽不能脫離動態form而獨立運用。但是我們在平時的開發過程中,有的情況下并不需要struts form的校驗功能,但同時希望能把頁面的值保留下來,比如:查詢條件的輸入。所以他有他的局限性


    <html:form>的三個特有作用
    1.自動生成html文檔的<form>標簽,其focus屬性還可以生成相應的JavaScript代碼
    2.自動獲取action屬性中路徑所對應的scope域中的FormBean,存在則獲取,不存在則創建新的,再把這個FormBean以一個特殊關鍵字保存在request中,以便其中的<html:xxx>獲取值是使用
    3.自動檢查Session中是否存在Token,是則生成隱藏表單域,以防止表單的重復提交
    還有些標簽用起來要比普通的html標簽方便的多(代碼量變少了),比如html_link 、 html_optionsCollection 、 html_checkbox 、 html_multibox 等,像這些下拉列表、復選框等的回顯用Struts的html標簽非常容易實現,普通html也簡單,但代碼一大堆。

    posted @ 2013-12-19 19:25 半導體 閱讀(184) | 評論 (0)編輯 收藏

    EL表達式語法 JSTL語法

    IF表達式判斷:
         <c:choose><c:when test="${param.type=='1'}">星級</c:when><c:otherwise>酒店名稱</c:otherwise></c:choose>

    獲取LIST值:
    獲取一個:
    ${roomList[0].roomTypeName}
    循環獲取:
    <select
                  name="myOrderform.roomTypeName" id="roomTypeName"
                  onChange="fuzhi(this)" isnull="2" desc="房間種類"
                  style="width:110px;">

     

                   <c:forEach var="rooms" items="${roomList}">
                    <option value="${rooms.roomTypeName}|${rooms.lowPrice}">${rooms.roomTypeName}</option>

                   </c:forEach>
    </select>


     

    posted @ 2013-12-14 12:44 半導體 閱讀(225) | 評論 (0)編輯 收藏

    取得某個文件夾的真實路徑

    String rootPath = ServletActionContext.getServletContext().getRealPath("/upload_files");

    posted @ 2013-12-14 11:00 半導體 閱讀(240) | 評論 (0)編輯 收藏

    List和arrayList ,Map和HashMap的區別

     

     一個 List<Map>變量的內部數據結構

    [{F_CITY_NAME=徐州, CNT=1141}, {F_CITY_NAME=鎮江, CNT=577}]

    一個Map變量的內部數據結構

    {泰州非邊界=7, 宿遷無=26, 無錫省邊界=6, 常州非邊界=10, 淮安地市邊界=70, 南京null=21}

     


    jsp頁面中不能通過${list.size}取列表長度,而是
    <%@ taglib uri="<%@ taglib prefix="fn" uri=">
    list
    的長度是:${fn:length(list)}


    List
    是接口,List特性就是有序,會確保以一定的順序保存元素.
    ArrayList
    是它的實現類,是一個用數組實現的List.
    Map
    是接口,Map特性就是根據一個對象查找對象.
    HashMap
    是它的實現類,HashMaphash表實現的Map,就是利用對象的hashcode(hashcode()Object的方法)進行快速散列查找.(關于散列查找,可以參看<<數據結構>>)


    一般情況下,如果沒有必要,推薦代碼只同List,Map接口打交道.
    比如:List list = new ArrayList();
    這樣做的原因是list就相當于是一個泛型的實現,如果想改變list的類型,只需要:
    List list = new LinkedList();//LinkedList
    也是List的實現類,也是ArrayList的兄弟類
    這樣,就不需要修改其它代碼,這就是接口編程的優雅之處.
    另外的例子就是,在類的方法中,如下聲明:
    private void doMyAction(List list){}
    這樣這個方法能處理所有實現了List接口的類,一定程度上實現了泛型函數.


    如果開發的時候覺得ArrayList,HashMap的性能不能滿足你的需要,可以通過實現List,Map(或者Collection)來定制你的自定義類.

    PS:MAP是存在內存中,所以他的讀取速度要比List快。

     

    posted @ 2013-11-28 15:36 半導體 閱讀(194) | 評論 (0)編輯 收藏

    ServletContextListener使用詳解 .

    摘自:http://blog.csdn.net/zhaozheng7758/article/details/6103700
    Servlet API 中有一個 ServletContextListener 接口,它能夠監聽 ServletContext 對象的生命周期,實際上就是監聽 Web 應用的生命周期。

    Servlet 容器啟動或終止Web 應用時,會觸發ServletContextEvent 事件,該事件由 ServletContextListener 來處理。在 ServletContextListener 接口中定義了處理ServletContextEvent 事件的兩個方法。

    l  contextInitialized(ServletContextEvent sce) :當Servlet 容器啟動Web 應用時調用該方法。在調用完該方法之后,容器再對Filter 初始化,并且對那些在Web 應用啟動時就需要被初始化的Servlet 進行初始化。

    l  contextDestroyed(ServletContextEvent sce) :當Servlet 容器終止Web 應用時調用該方法。在調用該方法之前,容器會先銷毀所有的ServletFilter 過濾器。

    下面通過兩個具體的例子來介紹 ServletContextListener 的用法。

    例一:在服務啟動時,將數據庫中的數據加載進內存,并將其賦值給一個屬性名,其它的 Servlet 就可以通過 getAttribute 進行屬性值的訪問。有如下兩個步驟:

    1 ServletContext 對象是一個為整個 web 應用提供共享的內存,任何請求都可以訪問里面的內容  

    2 :如何實現在服務啟動的時候就動態的加入到里面的內容:我們需要做的有:  

    1 實現 servletContextListerner 接口 并將要共享的通過 setAttribute name,data )方法提交到內存中去  

    2 )應用項目通過 getAttribute(name) 將數據取到

    package ServletContextTest; 

     

    import java.sql.Connection; 

    import java.sql.PreparedStatement; 

    import java.sql.ResultSet; 

    import java.util.HashMap; 

    import java.util.Map; 

     

    import javax.servlet.ServletContext; 

    import javax.servlet.ServletContextEvent; 

    import javax.servlet.ServletContextListener; 

     

    import util.ConnectTool; 

     

    public class ServletContextLTest implements ServletContextListener{ 

        // 實現其中的銷毀函數

        public void contextDestroyed(ServletContextEvent sce) { 

            System.out.println("this is last destroyeed");    

        } 

        // 實現其中的初始化函數,當有事件發生時即觸發

        public void contextInitialized(ServletContextEvent sce) { 

            ServletContext sct=sce.getServletContext(); 

            Map<Integer,String> depts=new HashMap<Integer,String>(); 

            Connection connection=null; 

            PreparedStatement pstm=null; 

            ResultSet rs=null; 

             

            try{ 

                connection=ConnectTool.getConnection(); 

                String sql="select deptNo,dname from dept"; 

                pstm=connection.prepareStatement(sql); 

                rs=pstm.executeQuery(); 

                while(rs.next()){ 

                    depts.put(rs.getInt(1), rs.getString(2)); 

                } 

                // 將所取到的值存放到一個屬性鍵值對中

                sct.setAttribute("dept", depts); 

                System.out.println("======listener test is beginning========="); 

            }catch(Exception e){ 

                e.printStackTrace(); 

            }finally{ 

                ConnectTool.releasersc(rs, pstm, connection); 

            } 

        } 

    在完成上述編碼后,仍需在 web.xml 中進行如下配置,以使得該監聽器可以起作用。

    <listener> 

       <listener-class>ServletContextTest.ServletContextLTest</listener-class> 

    </listener> 

    在完成上述配置后, web 服務器在啟動時,會直接加載該監聽器,通過以下的應用程序就可以進行數據的訪問。

    package ServletContextTest; 

    import java.io.IOException; 

    import java.io.PrintWriter; 

    import java.util.*; 

    import javax.servlet.ServletContext; 

    import javax.servlet.ServletException; 

    import javax.servlet.http.HttpServlet; 

    import javax.servlet.http.HttpServletRequest; 

    import javax.servlet.http.HttpServletResponse; 

    public class CreateEmployee extends HttpServlet{ 

     

        @Override 

        protected void service(HttpServletRequest request, HttpServletResponse response) 

                throws ServletException, IOException { 

            ServletContext sct=getServletConfig().getServletContext(); 

    // 從上下文環境中通過屬性名獲取屬性值

            Map<Integer,String> dept=(Map<Integer,String>)sct.getAttribute("dept"); 

            Set<Integer> key=dept.keySet(); 

            response.setContentType("text/html;charset=utf-8"); 

            PrintWriter out=response.getWriter(); 

            out.println("<html>"); 

            out.println("<body>"); 

            out.println("<form action='/register' action='post'>"); 

            out.println("<table alignb='center'>"); 

            out.println("<tr>"); 

            out.println("<td>"); 

            out.println("username:"); 

            out.println("</td>"); 

            out.println("<td>"); 

            out.println("<input type='text' name='username'"); 

            out.println("</tr>"); 

            out.println("<tr>"); 

            out.println("<td>"); 

            out.println("city:"); 

            out.println("</td>"); 

            out.println("<td>"); 

            out.println("<select name='dept'"); 

            for(Integer i:key){ 

                out.println("<option value='"+i+"'>"+dept.get(i)+"</option>"); 

            } 

            out.println("</select>"); 

            out.println("</td>"); 

            out.println("<tr>"); 

            out.println("</table>"); 

            out.println("</form>"); 

            out.println("</body>"); 

            out.println("</html>"); 

            out.flush(); 

        } 

    例二:書寫一個類用于統計當Web 應用啟動后,網頁被客戶端訪問的次數。如果重新啟動Web 應用,計數器不會重新從1 開始統計訪問次數,而是從上次統計的結果上進行累加。在實際應用中,往往需要統計自Web 應用被發布后網頁被客戶端訪問的次數,這就要求當Web 應用被終止時,計數器的數值被永久存儲在一個文件中或者數據庫中,等到Web 應用重新啟動時,先從文件或數據庫中讀取計數器的初始值,然后在此基礎上繼續計數。

    向文件中寫入或讀取計數器的數值的功能可以由自定義的 MyServletContextListener 類來完成,它具有以下功能:

    1 、在 Web 應用啟動時從文件中讀取計數器的數值,并把表示計數器的 Counter 對象存放到 Web 應用范圍內。存放計數器的文件的路徑為helloapp/count/count.txt

    2 、在Web 應用終止時把Web 應用范圍內的計數器的數值保存到count.txt 文件中。

    package ServletContextTest; 

    import javax.servlet.ServletContext; 

    import javax.servlet.ServletContextEvent; 

    import javax.servlet.ServletContextListener; 

    public class MyServletContextListener implements ServletContextListener{

      public void contextInitialized(ServletContextEvent sce){

        System.out.println("helloapp application is Initialized.");

        // 獲取 ServletContext 對象

        ServletContext context=sce.getServletContext();

        try{

           // 從文件中讀取計數器的數值

           BufferedReader reader=new BufferedReader(

               new InputStreamReader(context.

               getResourceAsStream("/count/count.txt")));

           int count=Integer.parseInt(reader.readLine());

           reader.close();

           // 創建計數器對象

           Counter counter=new Counter(count);

           // 把計數器對象保存到 Web 應用范圍

           context.setAttribute("counter",counter);

           } catch(IOException e) {

              e.printStackTrace();

           }

       }

       public void contextDestroyed(ServletContextEvent sce){

           System.out.println("helloapp application is Destroyed.");

           // 獲取 ServletContext 對象

           ServletContext context=sce.getServletContext();

           // Web 應用范圍獲得計數器對象

           Counter counter=(Counter)context.getAttribute("counter");

           if(counter!=null){

           try{

              // 把計數器的數值寫到 count.txt 文件中

              String filepath=context.getRealPath("/count");

              filepath=filepath+"/count.txt";

              PrintWriter pw=new PrintWriter(filepath);

              pw.println(counter.getCount());

              pw.close();

             } catch(IOException e) {

                 e.printStackTrace();

             }

         }

       }

    }

    將用戶自定義的 MyServletContextListener 監聽器在 Servlet 容器進行注冊, Servlet 容器會在啟動或終止 Web 應用時,會調用該監聽器的相關方法。在 web.xml 文件中, <listener> 元素用于向容器注冊監聽器:

    <listener>
    <listener-class>
    ServletContextTest
    .MyServletContextListener<listener-class />
    </listener>

    通過上述兩個例子,即可以非常清楚的了解到 ServletContextListener 接口的使用方法及技巧。 Container 加載Web 應用程序時(例如啟動 Container 之后),會呼叫contextInitialized() ,而當容器移除Web 應用程序時,會呼叫contextDestroyed () 方法。 通過 Tomcat 控制臺的打印結果的先后順序,會發現當 Web 應用啟動時,Servlet 容器先調用contextInitialized() 方法,再調用lifeInitinit() 方法;當Web 應用終止時,Servlet 容器先調用lifeInitdestroy() 方法,再調用contextDestroyed() 方法。由此可見,在Web 應用的生命周期中,ServletContext 對象最早被創建,最晚被銷毀。  

    posted @ 2013-11-20 10:13 半導體 閱讀(297) | 評論 (0)編輯 收藏

    航信接口碰到的問題錦集

    1、加入包:httpcore-4.2.1.jar hotelbe-pure-sdk-6.1.1.jar  date4j-1.0.0.jar包   httpclient-4.2.1.jar

    重點說一下import org.apache.http.Consts;
    這個類在httpcore-4.2.1.jar這個包中,以前的版本如httpcore-4.0.1.jar 沒有。(找S我了)

    posted @ 2013-11-15 19:20 半導體 閱讀(272) | 評論 (0)編輯 收藏

    配置sqlserver2000數據源

    1、sqlserver2000配置加入包:msbase.jar,mssqlserver.jar,msutil.jar
    用得tomcat6.0配置數據庫連接池
    并在tomcat的lib下加入上文件
    和WebRoot\WEB-INF\lib下加入上文件
     
    dbcp連接池程序包,要在同一目錄下即web-inf/lib下
     
     
     
    SQL Server2000的JDBC驅動程序的DriverClassName是 "com.microsoft.jdbc.sqlserver.SQLServerDriver"

    SQL Server2005的JDBC驅動程序的DriverClassName是 "com.microsoft.sqlserver.jdbc.SQLServerDriver"

    Tomcat *\conf\context.xml配置
     <Resource name="jdbc/pubs" auth="Container" type="javax.sql.DataSource" maxActive="100" maxldle="30"
        maxWait="10000" username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
        url="jdbc:microsoft:sqlserver://localhost:1433;tabaseName=webshop"
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"/>
        <ResourceLink global="jdbc/pubs" name="jdbc/pubs" type="javax.sql.DataSource"/>
    并web.xml里配置
    <resource-ref>
          <description>DataSource</description>
          <res-ref-name>jdbc/pubs</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
       </resource-ref>
    applicationContext.xml
    設置
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
         <property name="jndiName" value="java:/comp/env/jdbc/pubs"/>
     </bean>


    2、SQL Error: 208, SQLState: 42S02
    HBM中catalog scheme的配置問題.

    posted @ 2013-11-03 11:15 半導體 閱讀(440) | 評論 (0)編輯 收藏

    DIV切換 標簽頁切換

    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE="JavaScript">
    function aa(){
     contain.style.visibility=contain.style.visibility=="hidden"?"visible":"hidden";
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    <button onclick=aa()>test</button>
    <div id="contain">
    <iframe id="iframe1" name="iframe1" src="</div>
    </BODY>
    </HTML>

    posted @ 2013-10-31 13:37 半導體 閱讀(184) | 評論 (0)編輯 收藏

    Eclipse 格式化時不自動換行 Ctrl+shift+f .

    Java代碼

    打開Eclipse的Window菜單,然后Preferences->Java->Code Style->Formatter->Edit/Show(根據不同版本可用的按鈕會不一樣) ->Line Wrapping->Maximum line width:由80改成800就行了。

    2.Html代碼

    Window->Preferences->MyEclipse->Files and Editors->Html->Html Source->Line width->加個0以后保存

    posted @ 2013-10-18 21:44 半導體 閱讀(439) | 評論 (0)編輯 收藏

    用GET方法時出現亂碼的問題。URL傳中文出現亂碼時:。

    最近遇到一個問題:用get方法傳遞中文有問題,用post沒有問題。
    問題簡單的描述是這樣的:
    <a href="userGroup.jsp?userGroupName=<%=userGroupName%>">aa</a>
    這里userGroupName是中文

    在userGroup.jsp頁面得到的userGroupName卻是亂碼。
    每個頁面也都有<%@ page language="java" pageEncoding="GBK" %>說明。

    后來上網找了一下才知道:pageEncoding這個只對post起作用。get方法提交時,大家可以從地址欄里看到提交的參數,這是因為get方法傳遞是作為報文頭提交的,而pageEncoding對報文頭是沒有作用的,所以仍然按照 iso8859-1編碼,才出現了剛才的亂碼問題。而post提交的是form表單的內容,pageEncoding指定了它的編碼,所以他會按照指定編碼傳遞。

    問題清楚了,下面就來解決它:

    由于tomcat的servlet實現中ServletRequest.setCharacterEncoding方法未對HTP報文頭的內容進行解碼,因此
    使用HTTP的GET方法提交的數據將不能正確的解碼.解決方案為修改其服務器的配置server.xml文件中對HTTP協議的
    Connector配置,加上URIEncoding="GBK"屬性,配置完成以后"可能"的內容為
    < Connector port="8080"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    debug="0" connectionTimeout="20000" 
    disableUploadTimeout="true" URIEncoding="GBK" /> 


    URL傳中文出現亂碼時:
    問題:
    如傳類似這樣的地址" index.jsp?ddurl="+"我們是";ddurl獲得的就是亂碼。
    解決辦法:這種傳值方式相當于get傳值,在傳值時對他加密:
    encodeURI(url);

    posted @ 2013-10-17 11:47 半導體 閱讀(166) | 評論 (0)編輯 收藏

    僅列出標題
    共27頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
    主站蜘蛛池模板: 精品成人一区二区三区免费视频| 少妇性饥渴无码A区免费| 亚洲国产精品综合久久网络| 你懂的免费在线观看| 亚洲毛片免费观看| 国产在线观看免费不卡| 黄色免费在线网站| 亚洲欧美日韩一区二区三区| 亚洲精品综合久久| 免费观看无遮挡www的小视频| 精品亚洲福利一区二区| 亚洲视频中文字幕| 日韩免费一区二区三区| 久久国产乱子伦精品免费强| 亚洲欧美黑人猛交群| 亚洲成AV人片一区二区密柚| 国产精品视频免费一区二区| 两个人看的www高清免费观看| 亚洲免费福利在线视频| 亚洲人成人无码网www电影首页| 全免费一级毛片在线播放| 免费污视频在线观看| 国产成人亚洲精品91专区高清| 亚洲最大成人网色| 亚洲AV无码乱码在线观看性色扶| 日韩免费一区二区三区在线播放| 中文字幕无码免费久久9一区9| 亚洲精品国产国语| 久久青青草原亚洲av无码app| 亚洲精品乱码久久久久久蜜桃 | 中文字幕亚洲精品| 亚洲性久久久影院| 日韩精品视频免费在线观看| 91精品导航在线网址免费| 久久久久久久久久久免费精品| 久久久久亚洲精品无码网址色欲 | 亚洲国产精品特色大片观看完整版| 老司机永久免费网站在线观看| 59pao成国产成视频永久免费| 中文字幕永久免费视频| 一级做α爱过程免费视频|