2.JSP實(shí)時(shí)編譯問(wèn)題
很多在TOMCAT中會(huì )發(fā)現,對于剛改過(guò)的JSP在IE中刷新不出來(lái),即TOMCAT沒(méi)有實(shí)時(shí)編譯JSP文件,
如何修改呢?同樣參看TOMCAT_HOME/conf/web.xml,找到對于JSP編譯程序進(jìn)行配置,如下
加上init-param參數段,告知TOMCAT每次都需要進(jìn)行reloading,即進(jìn)行日期比較,適當時(shí)候
進(jìn)行重編譯。對于其他參數可以看在web.xml中的參數解釋?zhuān)浅5木唧w。
代碼:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>logVerbosityLevel</param-name> <param-value>WARNING</param-value> </init-param> <init-param> <param-name>reloading</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>javaEncoding</param-name> <param-value>GBK</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
注:org.apache.jasper.servlet.JspServlet 的作用,它就是為什么JSP能夠自動(dòng)轉換成servlet
的罪魁禍首啦,對于JSP編譯上出現的問(wèn)題都可以從它身上找到答案。注意JSP這個(gè)servlet是mapping
到*.jsp的,所以所有的JSP請求才會(huì )被編譯成servlet后執行,非常類(lèi)似于A(yíng)pache中的addType功能。
代碼:
<servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping>
3.亂碼問(wèn)題
亂碼問(wèn)題比較復雜,但是只要找到為什么出現問(wèn)題就非常簡(jiǎn)單啦。
A.JSP頁(yè)面編譯后對于中文變成亂碼
B.頁(yè)面輸出有亂碼
C.傳遞的URL參數或是中文Form field值,解釋成亂碼
對于A(yíng)子問(wèn)題,那是由于Tomcat的Jasper不能正確識別JSP文件的編碼造成的,所以需要告訴Jasper本地
的JSP文件編碼。打開(kāi)TOMCAT_HOME/conf/web.xml,找到如下的配置段,給<servlet-name>jsp</servlet-name>
加上參數javaEncoding=GBK,其中的GBK換成GB2312也行,大家可以琢磨一下原因。呵呵
代碼:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>logVerbosityLevel</param-name> <param-value>WARNING</param-value> </init-param> <init-param> <param-name>reloading</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>javaEncoding</param-name> <param-value>GBK</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
對于B子問(wèn)題,很簡(jiǎn)單,在所有JSP文件的頭部加上:
<%@ page contentType="text/html;charset=gb2312" %>
對于C子問(wèn)題,也很簡(jiǎn)單,那是因為,TOMCAT對于HTTP的解釋全部是按照ISO-8859-1的方式傳送的,
把前臺的GB2312的內容傳到后臺,所以需要轉碼。
對于JSP文件,在所有JSP文件的頭部加上:
request.setCharacterEncoding("GB2312");
對于Servlet類(lèi)同理:
doGet(...)
{
request.setCharacterEncoding("GB2312");
...
)
就可以搞定了。
4.JSP編譯調試問(wèn)題
對于使用TOMCAT plugins進(jìn)行Eclipse的開(kāi)發(fā)的人,是非常希望能夠及時(shí)調試的JSP被編譯后的SERVLET的,
但是出現了,在tomcat的Jasper編譯后,TOMCAT plugins導入到Eclipse的workspace后會(huì )出現路徑即包名
不匹配的問(wèn)題,這個(gè)TOMCAT plugins提供了補丁,使Tomcat和Eclipse能夠更好的協(xié)調工作。
方法:
把jasperDebugPatchV4.1.24.zip解壓到TOMCAT_HOME\common\classes\下,就OK啦!能夠在eclipse中進(jìn)行
調試編譯后的JSP.
先寫(xiě)這么多,拋磚引玉先!
附件為jasperDebugPatchV4.1.24.zip,主要是為了防止大家難找。
還有就是版本一定要注意好,否則無(wú)法工作。