1、web應用在tomcat上運行,一切正常。
2、OS:windows XP sp3
3、weblogic version:8.1.3.0
二 、問題及解決方法
1 、 weblogic.utils.ParsingException: nested TokenStreamException: antlr.TokenStreamIOException: 在web應用的WEB-INF目錄下新增(如果沒有)weblogic.xml文件,寫入下面內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<session-descriptor>
</session-descriptor>
<jsp-descriptor>
<jsp-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</jsp-param>
<jsp-param>
<param-name>pageCheckSeconds</param-name>
<param-value>-1</param-value>
</jsp-param>
<jsp-param>
<param-name>compilerSupportsEncoding</param-name>
<param-value>true</param-value>
</jsp-param>
<jsp-param>
<param-name>verbose</param-name>
<param-value>false</param-value>
</jsp-param>
</jsp-descriptor>
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
</weblogic-web-app>
保存,重新deploy應用
2、 sun.io.MalformedInputException:修改區域和語言選型。
控制面板->區域和語言選型->高級->代碼頁轉換表,去掉54936(GB18030簡體中文)前面的對勾,保存更改。重新deploy應用。
3 、weblogic.servlet.jsp.JspException: (line 1): page directive contentType at /unieap/ria3.3/pages/config.jsp:1 previously defined :修改jsp文件,不能重復定義:<%@ page contentType="text/html; charset=UTF-8"%>
在含有<%@ include file="/unieap/ria3.3/pages/config.jsp"%>這樣的代碼的JSP文件中,如果在文件頭部已經定義了contentType,那么在被包含的文件中如果重復定義contentType,盡管相同,weblogoic也會報錯,只能改JSP文件,保證一個頁面中只有一個contentType的定義。這個問題在tomcat中是不存在的,可能是兩個應用服務器的解析機制不同。
1。下載 jad 工具,在官方網站沒有下載到,在CSDN上可以下載。
2。下載插件 net.sf.jadclipse_3.3.0.jar。
二、安裝
1。安裝jad工具。下載后解壓,然后將解壓后的jad.exe文件復制到%JAVA_HOME%\bin目錄下面(可以將jad.exe放到任意位置,只要記住其存放路徑就好,下面要用到)。
2。安裝插件。Eclipse中的插件安裝可以參考:Eclipse使用技巧(三)Eclipse中插件的安裝。
我用復制的方法:直接把net.sf.jadclipse_3.3.0.jar拷貝到%ECLIPSE_HOME%\plugins目錄下。
把使用link的方法拷貝到下面:建立D:\Myplugins\net.sf.jadclipse_3.3.0\eclipse\plugins的目錄結構,將jadclipse_3.2.4.jar放到plugins目錄下面(注:其中D:\Myplugins為你自己定義的一個專門放置插件的目錄)。再在%ECLIPSE_HOME%\links目錄下面建立一個net.sf.jadclipse_3.3.0.link文件(該文件名隨便取)。文件里面內容為:path=D:/Myplugins/net.sf.jadclipse_3.3.0。
三、配置
1。啟動Eclipse,打開Window->Preferences->Java->JadClipse,如果找到了JadClipse,即JadClipse插件被激活了。設置jad路徑:
2。在Eclipse的Windows—> Perference—>General->Editors->File Associations中修改“*.class”默認關聯的編輯器為“JadClipse Class File Viewer”。
四、使用jad反編譯
1。在DOS窗口中,到class所在目錄,直接運行 >jad DB.class,將在該目錄中生成DB.jad文件。運行 >jad -sjava DB.class,將在該目錄中生成DB.java文件
2。在Eclipse 工作臺使用:
1)把class目錄加入項目:(這一步許多文檔都沒有寫到,花了我很多時間)
1.1)項目--〉屬性--〉java buildpath--〉add class folder (如 a)--〉OK
1.2)a--〉import--〉General-->File system-->Browse-->OK
2)雙擊class 文件,出現可愛的java文件,編譯成功。
五、批量反編譯
以下部分轉載 菠蘿大象的文章:
現在有人會說了,這樣一個一個的看太麻煩了,我需要一次把一個JAR包下的所有class文件反編譯成java源文件。這樣的想法是可行的,還是使用jad工具。
3、批量反編譯
因為之前我們已經將jad加入到了%JAVA_HOME%\bin中,只要配置了環境變量,我們就可以在命令行中方便的使用。在這里,大象還是以dom4j-1.6.1.jar為例來說明具體的操作步驟。
解壓dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar。為了方便,我將JAR包解壓放到F盤根目錄,在cmd中,進入到F盤根路徑下,輸入命令:jad -o -r -s java -d src org/**/*.class
我解釋一下這些參數的含義:
-o:覆蓋舊文件,而且不用提示確認。
-r:重新加載生成包結構。
-s:定義輸出文件的擴展名。jad為默認擴展名,我們反編譯后當然是要.java源文件了。
-d:輸出文件的目錄。src表示反編譯后的所有文件都放在src目錄下。
org/**/*.class:org是解壓后的文件夾的名字,整個表示org目錄下的所有class文件。你也可以寫成這樣**/*.class,這表示當前目錄及其子目錄下所有的class文件(包含所有的子目錄)。<struts>
<package name="enterpriceculture" namespace="/" extends="struts-default">
<action name="adminEnterpriceculturesave" class="adminEnterpriceculturesaveAction" method="save">
<result name="success" type="redirectAction">/admin/adminEnterpriceculturelist.action?enterpriceculture.enterpricetype=A</result>
<!-- <param name="enterpriceculture.enterpricetype">A</param>
<result name="success" type="chain">
<param name="actionName">adminEnterpriceculturelist</param>
<param name="namespace">/</param>
</result>-->
<!-- <result name="success">/admin/Enterpriceculture_List.jsp</result>-->
</action>
今天演示EL表達式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。
首先在看遇到的問題:
在瀏覽器地址輸入,表示傳入一個參數test,值為123
http://localhost:8888/Test/index.jsp?test=123
在index.jsp中嘗試使用EL表達式取出,代碼如下:
<body>
${test}
</body>
發現毫無結果,再使用requestScope嘗試取出:
<body>
${requestScope.test}
</body>
發現還是毫無結果,感到非常詫異,遂干脆使用java腳本嘗試取出。
<body>
<%request.getAttribute("test"); %>
</body>
依然無解。
之后發現,若使用已下代碼向request作用域賦值,則用上面代碼可以取出
<%
request.setAttribute("test", "123");
%>
查詢資料后發現,使用以下代碼可以取出之前的請求參數:
EL:
<body>
${param.test}
</body>
JAVA腳本:
<body>
<%=request.getParameter("test") %>
</body>
結論就是:${param.name} 等價于 request.getParamter("name"),這兩種方法一般用于服務器從頁面或者客戶端獲取的內容。
${requestScope.name} 等價于 request.getAttribute("name"),一般是從服務器傳遞結果到頁面,在頁面中取出服務器保存的值。
參考資料:
el表達式中的${param}
http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html
今天演示EL表達式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。
首先在看遇到的問題:
在瀏覽器地址輸入,表示傳入一個參數test,值為123
http://localhost:8888/Test/index.jsp?test=123
在index.jsp中嘗試使用EL表達式取出,代碼如下:
<body>
${test}
</body>
發現毫無結果,再使用requestScope嘗試取出:
<body>
${requestScope.test}
</body>
發現還是毫無結果,感到非常詫異,遂干脆使用java腳本嘗試取出。
<body>
<%request.getAttribute("test"); %>
</body>
依然無解。
之后發現,若使用已下代碼向request作用域賦值,則用上面代碼可以取出
<%
request.setAttribute("test", "123");
%>
查詢資料后發現,使用以下代碼可以取出之前的請求參數:
EL:
<body>
${param.test}
</body>
JAVA腳本:
<body>
<%=request.getParameter("test") %>
</body>
結論就是:${param.name} 等價于 request.getParamter("name"),這兩種方法一般用于服務器從頁面或者客戶端獲取的內容。
${requestScope.name} 等價于 request.getAttribute("name"),一般是從服務器傳遞結果到頁面,在頁面中取出服務器保存的值。
參考資料:
el表達式中的${param}
http://topic.csdn.net/u/20090103/15/779af9b8-c3a7-4f3e-82fe-b08bf2630996.html
2、依次展開:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左邊空白外點擊“新建”,選擇:“主鍵”,把它命名為“645FFO40——5081——101B——9F08——00AA002F954E”再把右邊的“默認”的主鍵的鍵值設為“回收站”,然后退出注冊表。就OK啦。
3、要重啟計算機。
只要機器沒有運行過磁盤整理。系統完好.任何時候的文件都可以找回來。也許你已經在Excel中完成過上百張財務報表,也許你已利用Excel函數實現過上千次的復雜運算,也許你認為Excel也不過如此,甚至了無新意。但我們平日里無數次重復的得心應手的使用方法只不過是Excel全部技巧的百分之一。本專題從Excel中的一些鮮為人知的技巧入手,領略一下關于Excel的別樣風情。