顯示具有 JSP 標籤的文章。 顯示所有文章
顯示具有 JSP 標籤的文章。 顯示所有文章

星期二, 12月 17, 2013

[JSP] IE8 無法下載檔案


最近客戶遇到在IE8不能下載檔案的問題,需要加了一些cache的header即可解決。
請參考微軟的說明:http://support.microsoft.com/kb/316431 範例如下:



String ua = request.getHeader("User-Agent");
         if(ua != null){
          //System.out.println("user-agent:" + ua);
          if(ua.indexOf("MSIE 8.0") > 0){
           response.setHeader("Cache-Control","private");
                    response.setHeader("Pragma","private");
          }
         }

星期二, 3月 19, 2013

[Java] Java Javascript/CSS Asset pipeline

將js有效的模組化具有許多維護上的好處,但缺點但js模組多的時候,頁面載入的時間也就愈長,雖然能在產品前將所有的js打包成一份(用linux指令),但感覺流程上並不適用目前的專案。

目前找到pack-tag這個開源軟體,試用過後感覺非常試合導入專案中,不會影響目前Developer的開發,只需替換掉原本的script標籤,並支援javascript minify。

pack-tag

A JSP Taglib for delivering minified, combined and gzip-compressed resources (JavaScript and CSS).

https://github.com/galan/packtag



星期五, 1月 25, 2013

[JSP] jsp session getAttribute跟setAttribute都爆炸了 XD

機器上測試用OpenJDK做的session操作整個爆掉(不能取/不能建session)。
都會噴以下二個exception:
setAttribute: Session already invalidated
getAttribute: Session already invalidated

以下是成功於正常的Oracle JDK成功操作session的測試碼,移到新的環境就會爆掉XD

//try{

 HttpSession httpsession = request.getSession(false);
 
 if(httpsession == null){
  System.out.println("HttpSession null");
 }else{
  System.out.println("HttpSession:" + httpsession.getId());
 }
 
  if(httpsession.getAttribute("test") == null){
 
   //throw getAttribute: Session already invalidated
 //if(session.getAttribute("test") == null) { 
   System.out.println("Session not found");
   
   try{
    
    System.out.println("Start to craete session");
    
    //request.getSession(true).setAttribute("test", "HelloSession");
    //session.setAttribute("test", "HelloSession");
    //httpsession.setAttribute("test", "HelloSession");
    
    HttpSession newSession = request.getSession(true);
    if(newSession.isNew()){
     System.out.println("isNew session id:" + newSession.getId());
    }else{
     System.out.println("old session id:" + newSession.getId());
    }
   
    newSession.setAttribute("test", "HelloSession");
    
    System.out.println("Suceed to craete session");
  
    
   }catch(IllegalStateException illeagalStateEx){
    System.out.println("Fail to craete session:" 
          + illeagalStateEx.getMessage());
   }
   
  }else{
   
   System.out.println("Session found");
   
   String sessionValue = 
     (String)httpsession.getAttribute("test");
   
   System.out.println("sessionValue:" + sessionValue);
   
  }
//}catch(Exception ex){
 
 //System.out.println("Global Exception:" + ex.getMessage());

//}

星期二, 3月 13, 2012

Web Cache Issue

簡單記綠一下看完一些Web Cache資料的心得,
方便以後快速學習。

使用Cache的理由

To reduce latency
To reduce network traffic

Web Caches的種類
Browser Caches:
Proxy Caches:
Gateway Caches: 如Content delivery networks (CDNs)

在你的網頁控制Caches


在網頁的Header加上HTML Meta Tags
PRAGMA HTTP HEADERS:
<meta http-equiv="Pragma" content="no-cache">

星期二, 10月 04, 2011

[JSP] JSP頁面引用bigd-5編碼的Javascript

想不到也有人遇到過同樣的問題XD~


Reference:[Tips] 在 utf-8 頁面 使用 big5 的 Javascript 檔之前在上線網站的時候, Clark 遇到在 utf-8 的網頁下要include big5 的 js 的問題,當時出現的問題是由於big5 的 js 檔中有中文字,include 到 utf-8 的 page 上時就造成 javascript error 或文字變成亂碼,當時趕著上線,所以就選擇將原來的 js 另存一份成為 utf-8 格式的 js 。就這樣使用了到現在將近一年,最近正在改這個 js 檔時發現為什麼不延用一份共用的 js ,而去另外自已建一份呢?一測試之下終於回想到當初的原因。由於在這陣子 Clark 也處理過類似問題,得到的結論是,在語法中下 charset="big5" 就可以讓 browser 不依照該 page 的 encoding 去做解譯,所以顯示的結果就正常了!

經過修改,顯示一切正常,其他Browser也沒有發現問題,上線!

星期三, 5月 11, 2011

[JSP] JSP-防止瀏覽器快取網頁

今天工作處理IE8異常cache網頁導致ajax異常,多虧FIDDLER這個好用的http tool。

以下為參考的資料:

JSP技巧篇---防止瀏覽器快取網頁
(資料來源:Java Server Page 學習網 -- http://www.jsp.mlc.edu.tw )

瀏覽器為了加速使用者的瀏覽速度,常會將瀏覽過的網頁快取到硬碟,
下次瀏覽同一頁時,便去硬碟裡面去找,但現在的網頁常是動態的,
為了避免使用者抓到硬碟內過期的資料,JSP可用下面的方式來防止瀏
覽器快取住網頁,此方法便可保證使用者到這個網頁時始終都可看到
1.JSP語法

<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
//prevents caching at the proxy server
response.setDateHeader("Expires", 0);
%>

2.也可以用以下的HTML語法,可用在靜態網頁上
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">

201203/14更新
今天仔細測了一下,就算加了這些Header可以清Cache,但並非馬上就會更新。
需要多按幾次重新整理才會馬上更新!!

星期一, 11月 29, 2010

[JSP] include(import) file with parameter

2. Include Directive 載入指令
include 指令
在編譯時期包括(include)另一個網頁,或是在執行時期包括另一個網頁,是一種靜態的指定方式,而不能傳送參數,使用指令元素include的對象通常是一個靜態網頁。

<%@page contentType="text/html; charset=big5"%>
<%@include file="header.inc"%>
<H1><B>include示範</B><H1>
<%@include file="foot.inc"%>

<%@ include %> v.s. <jsp:include>

<%@ include %> 主要是include靜態網頁
包含的文件視為同一份文件,被include的頁面裡面所宣告的變數,可以被主頁面直接拿來引用。
例如說在a.jsp 定義String a="aaa";
在b.jsp用<%@ include %> 把a.jsp 包含進來後,可視a.jsp跟b.jsp為同一份,所以不用再宣告String a(再宣告會有錯誤),可直接用a = "abcc";

<jsp:include> 可以include 動、靜態網頁
使用<jsp:include> 則不行,需透過<jsp:param......的方式傳參數才可被引用,承上例,如果用<jsp:include> 包含a.jsp,若直接打a = "abcc";,肯定出錯,因為他不把a.jsp跟b.jsp視為同一分文件

JSP 學習_3_語法 Directive Elements 指令元素

星期日, 11月 28, 2010

[JSP] JSP Tag Library in Eclipse

今天在要自訂 JSP Tag Library無法正確的import javax.servlet.jsp.tagext.*;
記得把安裝tomcat裡面的lib目錄,將 jsp-api.jarservlet-api.jar加到你專案的
WEB-INF/lib目錄下。
 ps:請不要將lib內在自訂子目錄來分類你的jar,會讀不到jar

星期四, 11月 25, 2010

[JSP] JSTL (JavaServer Pages Standard Tag Library 1.1) JSP標準標籤函式庫

JSTL提供的標籤庫分作五個大類:

[JSP] EL(Expression Language)

EL:變數
屬性範圍 在EL中的名稱
Page        pageScope
Request   requestScope
Session   sessionScope
Application applicationScope

PS:
1自動搜尋範圍 page->request->session->application
2 ${}在jsp 2.0中是特殊字元,JSP容器會自動將它當成EL來執行,因此假若要列印${}時,需在$前加上\,如:\${XXXXXX}

其他你感興趣的文章

Related Posts with Thumbnails