亚洲国产精品免费观看,亚洲精品成人a在线观看,精品亚洲综合在线第一区http://www.tkk7.com/georgehill/category/1287.html希望能和您交流Java編程的知識和見解zh-cnWed, 28 Feb 2007 00:32:37 GMTWed, 28 Feb 2007 00:32:37 GMT60用URLEncoder輸出<bean:write /&gt的值(struts1.1版)http://www.tkk7.com/georgehill/archive/2005/05/20/4988.html小米小米Fri, 20 May 2005 03:52:00 GMThttp://www.tkk7.com/georgehill/archive/2005/05/20/4988.htmlhttp://www.tkk7.com/georgehill/comments/4988.htmlhttp://www.tkk7.com/georgehill/archive/2005/05/20/4988.html#Feedback0http://www.tkk7.com/georgehill/comments/commentRss/4988.htmlhttp://www.tkk7.com/georgehill/services/trackbacks/4988.html      從struts的網站上下載1.1的源代碼:http://apache.justdn.org/jakarta/struts/source/jakarta-struts-1.1-src.zip,解壓到本地目錄。打開文件jakarta-struts-1.1-src\src\share\org\apache\struts\taglib\bean\WriteTag.java,新增一個布爾屬性encode,表示是否需要用UTF-8編碼輸出字符串。代碼片斷如下:

    /**
     * The encode flag for the value.
     * Added by George Hill, 05/19/2005
     
*/

    
protected boolean encode = false;
    
    
public boolean isEncode() {
        
return (this.encode);
    }

    
    
public void setEncode(boolean encode) {
        
this.encode = encode;
    }

      修改方法formatValue,把這段:


        
// Return String object as is.
        if ( value instanceof java.lang.String ) {
                
return (String)value;
        }
 else {

        }


      替換成:


        
// Return String object as is.
        if ( value instanceof java.lang.String ) {
            
if (encode)
                
return RequestUtils.encodeURL((String)value);
            
else
                
return (String)value;
        }
 else {

        }


      保存修改后的文件。然后需要修改文件jakarta-struts-1.1-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:


    
<attribute>
      
<name>encode</name>
      
<required>false</required>
      
<rtexprvalue>true</rtexprvalue>
      
<info>
      
<p>Added by George Hill, specifies the value need UTF-8 encode or not.</p>
      
</info>
      
<default>false</default>
    
</attribute>

      然后修改一下ant的編譯配置文件build.xml,這一部分和上一篇的隨筆類似,請參考上篇隨筆:<<用URLEncoder輸出<bean:write />的值>>
      運行ant,編譯后的jar文件保存在jakarta-struts-1.1-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。

小米 2005-05-20 11:52 發表評論
]]>
用URLEncoder輸出&lt;bean:write /&gt的值http://www.tkk7.com/georgehill/archive/2005/05/20/4966.html小米小米Thu, 19 May 2005 16:50:00 GMThttp://www.tkk7.com/georgehill/archive/2005/05/20/4966.htmlhttp://www.tkk7.com/georgehill/comments/4966.htmlhttp://www.tkk7.com/georgehill/archive/2005/05/20/4966.html#Feedback2http://www.tkk7.com/georgehill/comments/commentRss/4966.htmlhttp://www.tkk7.com/georgehill/services/trackbacks/4966.html      <a href="foo.do?param1=<bean:write name="n1" property="p1"/>&param2=<bean:write name="n2" property="p2"/>">Test</a>
      這樣在處理多個參數時,就不需要先放到一個Collection中。按照<html:link/>的多個參數的處理方法去做,有時確實是很繁瑣。不過這樣帶來一個新的問題,在處理中文參數值時,這樣就行不通了。用request.getParameter("param1")獲取的中文,在中文的個數為奇數個時,就會顯示不正確。例如“三個字”在getParameter中獲取的值是“三個?”。
      這個問題是由于<bean:write />沒有用URLEncoder的encode方法處理值,因為<bean:write />主要是用來在頁面上顯示bean的信息,并不是用在鏈接中當作參數的值。這個問題可以通過給<bean:write />增加新的屬性來解決。
      從Struts的網站上下載Struts 1.2.4的源代碼:http://apache.freelamp.com/struts/source/jakarta-struts-1.2.4-src.zip
      解壓到本地目錄,然后修改文件jakarta-struts-1.2.4-src\src\share\org\apache\struts\taglib\bean\WriteTag.java。新增一個屬性charset,表示需要用什么編碼進行編碼。代碼片斷如下:

    /**
     * Added by George Hill, the string value charset to encoding.
     * 05/19/2005
     
*/

    
protected String charset = null;

    
public String getCharset() {
        
return (this.charset);
    }


    
public void setCharset(String charset) {
        
this.charset = charset;
    }

      修改方法formatValue,把這段


        
if (value instanceof java.lang.String) {
                
return (String) value;
        }
 else {

        }


      替換為:


        
if (value instanceof java.lang.String) {
            
if (charset != null && charset.length() != 0)
                
return TagUtils.getInstance().encodeURL((String) value, charset);
            
else
                
return (String) value;
        }
 else {

        }


      保存修改后的文件。然后需要修改文件jakarta-struts-1.2.4-src\doc\userGuide\struts-bean.xml。這個文件在ant編譯時會變成strtus-bean.tld文件。在tag write后面增加一個attribute,如下所示:


  
<tag>
    
<name>write</name>

    
<attribute>
      
<name>charset</name>
      
<required>false</required>
      
<rtexprvalue>true</rtexprvalue>
      
<info>
      
<p>Added by George Hill, use this charset to encoding the value.</p>
      
</info>
    
</attribute>

  
</tag>

      然后修改一下ant的編譯配置文件build.xml,有幾個部分需要修改:
      1.屬性catalina.home需要修改成你安裝的tomcat的目錄;
      2.compile.classpath需要修改,把jar文件的路徑指向正確;
      3.prepare.library taget部分的copy,把相關的jar文件的路徑指向正確。
      運行ant,編譯后的jar文件保存在jakarta-struts-1.2.4-src\target\library目錄中,把原來的struts.jar和struts-bean.tld文件替換掉,就可以用自定義的<bean:write /> tag了。如果不寫charset屬性,那么和原來的<bean:write />處理是一樣的。
      這樣,類似于下面的鏈接地址:
      <a href="foo.do?param1=<bean:write name="n1" property="p1"/>&param2=<bean:write name="n2" property="p2"/>">Test</a>
      就可以修改成:
      <a href="foo.do?param1=<bean:write name="n1" property="p1" charset="UTF-8"/>&param2=<bean:write name="n2" property="p2" charset="UTF-8"/>">Test</a>
      在request.getParameter("param1")中將會獲得正確的中文值。
      對于struts 1.1,程序又稍微有些不同。我將在下一篇隨筆中介紹。


小米 2005-05-20 00:50 發表評論
]]>
Struts的國際化完整解決方案http://www.tkk7.com/georgehill/archive/2005/05/13/4263.html小米小米Fri, 13 May 2005 06:26:00 GMThttp://www.tkk7.com/georgehill/archive/2005/05/13/4263.htmlhttp://www.tkk7.com/georgehill/comments/4263.htmlhttp://www.tkk7.com/georgehill/archive/2005/05/13/4263.html#Feedback11http://www.tkk7.com/georgehill/comments/commentRss/4263.htmlhttp://www.tkk7.com/georgehill/services/trackbacks/4263.html      在網上有很多有關Struts的中文解決方案,但是很多都說得很零碎,不夠完整。下面是我的一個完整解決方案。
      要使網頁能夠真正實現多語言,有三個地方都需要修改:
      1.在頁面部分,一定要把頁面的編碼設成UTF-8,就是在開頭加上這一句:<%@ page contentType="text/html; charset=UTF-8" %>。并且把所有的文字信息都放到resource文件中。
      以前我在寫網頁的時候,沒有指定頁面的編碼,總是在獲取表單的內容后,要人工的用new String(s.getBytes("ISO8859-1"))轉換一下,這樣是很繁瑣的,而且很容易出錯。網頁中如果沒有指定編碼,那么默認的就是用ISO8859-1編碼的。
      2.相應的資源文件需要用native2ascii轉換一下。
      對于簡體中文的資源文件:native2ascii -encoding gbk ApplicationResources_zh.properties convert\ApplicationResources_zh.properties
      對于繁體中文的資源文件:native2ascii -encoding big5 ApplicationResources_zh_tw.properties convert\ApplicationResources_zh_tw.properties

      3.需要用一個filter設置一下request的編碼,我的代碼如下:

 1import java.io.*;
 2import java.util.*;
 3import javax.servlet.*;
 4import javax.servlet.http.*;
 5
 6/**
 7 * <p>Title: </p>
 8 * <p>Description: </p>
 9 * <p>Copyright: Copyright (c) 2003</p>
10 * <p>Company: </p>
11 * @author George Hill
12 * @version 1.0
13 */

14
15public class CharsetFilter implements Filter {
16
17  private FilterConfig filterConfig;
18
19  /**
20   * Request設置的Charset encoding
21   */

22  private String encoding;
23
24  /**
25   * 是否忽略設置Request的Charset encoding
26   */

27  private boolean ignore;
28
29  //Handle the passed-in FilterConfig
30  public void init(FilterConfig filterConfig) {
31    this.filterConfig = filterConfig;
32
33    encoding = filterConfig.getInitParameter("encoding");
34    String value = filterConfig.getInitParameter("ignore");
35    if ("true".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value)
36        || "on".equalsIgnoreCase(value) || "1".equalsIgnoreCase(value)) {
37      ignore = true;
38    }

39  }

40
41  //Process the request/response pair
42  public void doFilter(ServletRequest request, ServletResponse response,
43                       FilterChain chain) throws IOException, ServletException {
44    if (!ignore) {
45      request.setCharacterEncoding(encoding);
46    }

47
48    chain.doFilter(request, response);
49  }

50
51  //Clean up resources
52  public void destroy() {
53    this.filterConfig = null;
54  }

55}

56

      web.xml的相關片斷如下:

 1  <filter>
 2    <filter-name>charsetfilter</filter-name>
 3    <filter-class>xxx.CharsetFilter</filter-class>
 4    <init-param>
 5      <param-name>encoding</param-name>
 6      <param-value>UTF-8</param-value>
 7    </init-param>
 8    <init-param>
 9      <param-name>ignore</param-name>
10      <param-value>false</param-value>
11    </init-param>
12  </filter>
13  <filter-mapping>
14    <filter-name>charsetfilter</filter-name>
15    <url-pattern>/*</url-pattern>
16  </filter-mapping>

      這樣,在Action中處理表達的內容時,就不需要再做轉換;而且在Action中處理數據給頁面顯示時,也不需要做轉換。在頁面中可以同時顯示簡體和繁體的內容,不需要去設置IE的編碼。
      另外需要說明的就是如果數據庫也支持編碼的話,最好也是設成UTF-8編碼,這樣才能夠完整的解決多語言的問題。例如MySQL 4.1以上的版本可以設置編碼成utf8,在JDBC的URL中可以指定編碼為UTF-8。

小米 2005-05-13 14:26 發表評論
]]>
如何在Struts中實現分頁顯示數據(2)http://www.tkk7.com/georgehill/archive/2005/05/13/4254.html小米小米Fri, 13 May 2005 03:33:00 GMThttp://www.tkk7.com/georgehill/archive/2005/05/13/4254.htmlhttp://www.tkk7.com/georgehill/comments/4254.htmlhttp://www.tkk7.com/georgehill/archive/2005/05/13/4254.html#Feedback20http://www.tkk7.com/georgehill/comments/commentRss/4254.htmlhttp://www.tkk7.com/georgehill/services/trackbacks/4254.html閱讀全文

小米 2005-05-13 11:33 發表評論
]]>
如何在Struts中實現分頁顯示數據(1)http://www.tkk7.com/georgehill/archive/2005/05/13/4252.html小米小米Fri, 13 May 2005 03:18:00 GMThttp://www.tkk7.com/georgehill/archive/2005/05/13/4252.htmlhttp://www.tkk7.com/georgehill/comments/4252.htmlhttp://www.tkk7.com/georgehill/archive/2005/05/13/4252.html#Feedback0http://www.tkk7.com/georgehill/comments/commentRss/4252.htmlhttp://www.tkk7.com/georgehill/services/trackbacks/4252.html閱讀全文

小米 2005-05-13 11:18 發表評論
]]>
主站蜘蛛池模板: 2020天堂在线亚洲精品专区| 亚洲国产精品碰碰| 国产国产人免费视频成69堂| 国产精品网站在线观看免费传媒| 思思久久99热免费精品6| 久久亚洲精品无码av| 亚洲国产精品无码久久久秋霞1| 精品国产日韩久久亚洲| 国产亚洲精品成人AA片| 国产亚洲sss在线播放| 国产亚洲精品成人AA片| 亚洲精品美女久久7777777| 亚洲av无码兔费综合| 久久精品国产亚洲AV电影网| 看Aⅴ免费毛片手机播放| 四虎成人精品国产永久免费无码| 一个人看的www免费在线视频| 亚洲第一视频在线观看免费| 中文字幕高清免费不卡视频| 中文字幕免费在线播放| 久久国产免费观看精品| 91香蕉在线观看免费高清| 57pao国产成永久免费视频 | 亚洲AV无码国产精品色午友在线| 国产成人亚洲综合无码精品| 亚洲国产精品婷婷久久| 亚洲经典在线中文字幕| 亚洲中文字幕无码久久2020| 精品亚洲视频在线| 国产精品免费大片一区二区| 永久免费A∨片在线观看| 91热久久免费精品99| AV片在线观看免费| 又黄又爽一线毛片免费观看| 亚洲色精品88色婷婷七月丁香| 亚洲第一中文字幕| 国产人成亚洲第一网站在线播放| 国产av无码专区亚洲av毛片搜| 三年片免费观看大全国语| 最近中文字幕完整免费视频ww | GOGOGO高清免费看韩国|