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 半導體 閱讀(188) | 評論 (0)編輯 收藏

          EL表達式語法 JSTL語法

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

          獲取LIST值:
          獲取一個:
          ${roomList[0].roomTypeName}
          循環獲?。?br /><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 半導體 閱讀(229) | 評論 (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 半導體 閱讀(197) | 評論 (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 半導體 閱讀(301) | 評論 (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 半導體 閱讀(276) | 評論 (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 半導體 閱讀(443) | 評論 (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 半導體 閱讀(187) | 評論 (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 半導體 閱讀(442) | 評論 (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 
          主站蜘蛛池模板: 金寨县| 始兴县| 新余市| 资中县| 安福县| 龙江县| 清苑县| 云浮市| 饶阳县| 莲花县| 当雄县| 从江县| 定边县| 孟连| 阿克苏市| 大兴区| 张北县| 凌源市| 大厂| 甘泉县| 崇左市| 临颍县| 化州市| 克什克腾旗| 定陶县| 乾安县| 新平| 金塔县| 白山市| 固原市| 桦甸市| 正阳县| 安乡县| 涞源县| 新乡县| 黔南| 天津市| 资溪县| 宜州市| 和平县| 贺州市|