国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

WEB 開發技術系列之一

2019-11-18 11:21:45
字體:
來源:轉載
供稿:網友

 前言

1.為什么要討論?

簡單的來說,就是就用來開發Web應用所需要的技術,目前有很多討論各種技術的論壇,但我在這里想討論的是橫向方面,也就是在WEB應用開發中,如何把各種技術結合起來,提高開發效率.用更通俗的話講,不要講最先進的,講最有用的.

 

2.內容包括什么?

WEB開發技術包括三個層面:

 a) 顯示層. 頁面制作 ,這個通常由美工完成

 b) 邏輯層.主要討論的內容,包括Struts,Hibernate,模式,代碼生成技術(Xdoclet,Middlegen),自動構建(Maven)Taglib

 c) 資源層. 討論數據庫的設計,MSSQL,Oracle,存儲過程,觸發器.

 

3.目的

做Web開發的難點之一就是比較分散,不像做GUI界面那樣緊湊,比如寫了一個Servlet,就要配置web.xml,修改了數據庫的字段,就要修改各種邏輯,而修改數據庫這種情況恰恰是經常發生的,所以開發人員要往返的修改,同步. 除了這些,web開發所需要的人也是不同的,有美工,數據庫設計,邏輯開發,這些人如何協調起來,如何同步,這些都對提高開發效率有直接的影響.

我在這里討論的技術不一定是萬能的,這些只是我積累的經驗,我也在不停的完善中.

 

 

第一篇: 漢字編碼的問題

 

也許漢字是Web開發中最常見的問題了,所以就拿這個問題開始我們的討論吧!

 

1.漢字問題出現的場合

a. 獲取參數Request.getParameter("param"); 在Tomcat下,默認是ISO8859-1,因此若要正確獲得參數,需要轉換成GB2132;

 

b. 頁面的漢字顯示。

 

這里有兩種情況,

  I )當jsp要被解析成Servlet時,容器讀取<%@ page contentType="text/Html; charset=gb2312" 以確定文件的編碼,故通常應該設置。

 

     當IE得到頁面要顯示時,通過<meta http-equiv="Content-Type" content="text/html; charset=gb2312">來確定顯示的編碼.

  II) 假如沒有設置編碼,則頁面的編碼為 ISO8859-1,這時候假如要顯示漢字,可以采用unicode編碼形式來顯示漢字. 如直接out.

     把漢字轉換成Unicode編碼可以用jdk 1.5 下的一個工具.可以把一個文件里的漢字全部轉換成Unicode編碼.這種方法就沒有前面這種方便了.

 

c.Beans中的編碼。在java Beans中的編碼時默認編碼,假如平臺的默認編碼時GB2312,則在Java Beans中不需要非凡轉換。

 

d.數據庫的編碼。數據庫也有自己的默認編碼。MySQL的默認編碼為ISO8859,MSSQL/Orcale的默認編碼為平臺編碼,在Windows下均為GB2312。當向數據庫寫數據庫,應該根據數據庫的編碼做相應變換。

 

2.如何實現漢字編碼的自動轉換

從上面講的場合來分析,最要害的就是第一種,每次都要轉來轉去的,很麻煩. 假如在weblogic下,可以在web.xml 設置一個參數,讓weblogic自動轉換,不過這個只能在weblogic下用了.

 

借鑒weblogic的思路,可以編寫Servlet Filter來實現.Filter是Servlet 2.3規范的內容.現在所有流行的服務器都應該支持.

代碼如下:

 

/**

* Filter class

*

* @web.filter name="Locale.filter" display-name="Locale Filter" descr

* @web.filter-mapping url-pattern="/*"

*

*/

public class LocaleFilter implements Filter {

private Log log = LogFactory.getLog(LocaleFilter.class);

 

/**

*

*/

public LocaleFilter() {

super();

}

 

/**

* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)

*/

public void init(FilterConfig arg0)  {

// TODO Auto-generated method stub

 

}

 

/**

* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)

*/

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

 

//String encoding = CommonUtil.getDefaultEncoding();

///log.debug("default CharacterEncoding:" + encoding);

 

//encoding可以從平臺上自動獲取.

         String encoding = "gb2312";

       

request.setCharacterEncoding(encoding);

 

 

response.setContentType("text/html;charset="+encoding);

response.setCharacterEncoding(encoding);

 

chain.doFilter(request, response);

 

}

 

/** 

* @see javax.servlet.Filter#destroy()

*/

public void destroy() {

 

}

 

}

 

3. 效果

基于Filter的實現好處很多,我們可以類似寫出gb2312平臺下的filter,也可以寫出其他平臺下的filter.使用的方法,也很簡單,就直接request.getParameter()就可以了,不需要非凡的轉換.

 

4. 總結

 

基于Filter的實現是個不錯的選擇. 假如要想在Struts類似的框架中讀取某個文件中的漢字,并要想顯示在頁面上,如 常見bean:write 標簽讀取properties,

最好的做法就是把properties中的漢字用unicode編碼,高效直接.

 

 

 

 

 



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 德令哈市| 永兴县| 裕民县| 甘肃省| 女性| 南康市| 登封市| 乌苏市| 许昌县| 樟树市| 和龙市| 察雅县| 灵石县| 黄陵县| 遂川县| 修武县| 靖宇县| 玉溪市| 辽宁省| 揭阳市| 鲜城| 丰台区| 濮阳县| 大冶市| 盐边县| 莫力| 五台县| 汾阳市| 乌拉特中旗| 青海省| 酒泉市| 水富县| 美姑县| 洛川县| 福鼎市| 阿拉善右旗| 漳州市| 日土县| 沁水县| 修武县| 定陶县|