摘要: key words: 文件上傳,upload, cos.jar + uploadbean.jar + filemover.jar以前用cos作文件上傳,但是對于文件上傳后的改名還需要借助其他的工具。摘錄如下: 在用Java開發(fā)企業(yè)器系統(tǒng)的使用,特別是涉及到與辦公相關(guān)的軟件開發(fā)的時候,文件的上傳是客戶經(jīng)常要提到的要求.因此有 一套很好文件上傳的解決辦法也能方便大家在這一塊的開發(fā).首先申明,該文章是為...
閱讀全文
直接使用eclipse開發(fā)就可以,wap沒有什么特別的,和開發(fā)普通的java程序一樣的,只是展示曾需要定義一下wap的標(biāo)簽就可以。
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/vnd.wap.wml; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<%
// 自動解析PC web請求還是mobilephone web請求
String acceptHeader = request.getHeader("accept");
if (acceptHeader.indexOf("application/vnd.wap.xhtml+xml") != -1)
response.setContentType("application/vnd.wap.xhtml+xml");
else if (acceptHeader.indexOf("application/xhtml+xml") != -1)
response.setContentType("application/xhtml+xml");
else
response.setContentType("text/html");
%>
一、系統(tǒng)環(huán)境
1、web應(yīng)用在tomcat上運(yùn)行,一切正常。
2、OS:windows XP sp3
3、weblogic version:8.1.3.0
二 、問題及解決方法
1 、 weblogic.utils.ParsingException: nested TokenStreamException: antlr.TokenStreamIOException: 在web應(yīng)用的WEB-INF目錄下新增(如果沒有)weblogic.xml文件,寫入下面內(nèi)容:
<?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應(yīng)用
2、 sun.io.MalformedInputException:修改區(qū)域和語言選型。
控制面板->區(qū)域和語言選型->高級->代碼頁轉(zhuǎn)換表,去掉54936(GB18030簡體中文)前面的對勾,保存更改。重新deploy應(yīng)用。
3 、weblogic.servlet.jsp.JspException: (line 1): page directive contentType at /unieap/ria3.3/pages/config.jsp:1 previously defined :修改jsp文件,不能重復(fù)定義:<%@ page contentType="text/html; charset=UTF-8"%>
在含有<%@ include file="/unieap/ria3.3/pages/config.jsp"%>這樣的代碼的JSP文件中,如果在文件頭部已經(jīng)定義了contentType,那么在被包含的文件中如果重復(fù)定義contentType,盡管相同,weblogoic也會報錯,只能改JSP文件,保證一個頁面中只有一個contentType的定義。這個問題在tomcat中是不存在的,可能是兩個應(yīng)用服務(wù)器的解析機(jī)制不同。
例如:
<!-- 從jdbc:oracle:thin:@10.128.5.65:1521:tjgwl1 中跳到(服務(wù)器間跳轉(zhuǎn))
10.128.141.109:1521:tjgwlw數(shù)據(jù)庫后面直接加@tjgwlw-->
學(xué)習(xí)中,需要反編譯Java的class文件。我的開發(fā)工具是windows xp+Eclipse3.2.2+MyEclipse。我找到了jad反編譯工具,在互聯(lián)網(wǎng)上找到了一些很有用的安裝步驟。下面記錄了我的安裝過程。
一、下載
1。下載 jad 工具,在官方網(wǎng)站沒有下載到,在CSDN上可以下載。
2。下載插件 net.sf.jadclipse_3.3.0.jar。
二、安裝
1。安裝jad工具。下載后解壓,然后將解壓后的jad.exe文件復(fù)制到%JAVA_HOME%\bin目錄下面(可以將jad.exe放到任意位置,只要記住其存放路徑就好,下面要用到)。
2。安裝插件。Eclipse中的插件安裝可以參考:Eclipse使用技巧(三)Eclipse中插件的安裝。
我用復(fù)制的方法:直接把net.sf.jadclipse_3.3.0.jar拷貝到%ECLIPSE_HOME%\plugins目錄下。
把使用link的方法拷貝到下面:建立D:\Myplugins\net.sf.jadclipse_3.3.0\eclipse\plugins的目錄結(jié)構(gòu),將jadclipse_3.2.4.jar放到plugins目錄下面(注:其中D:\Myplugins為你自己定義的一個專門放置插件的目錄)。再在%ECLIPSE_HOME%\links目錄下面建立一個net.sf.jadclipse_3.3.0.link文件(該文件名隨便取)。文件里面內(nèi)容為:path=D:/Myplugins/net.sf.jadclipse_3.3.0。
三、配置
1。啟動Eclipse,打開Window->Preferences->Java->JadClipse,如果找到了JadClipse,即JadClipse插件被激活了。設(shè)置jad路徑:

2。在Eclipse的Windows—> Perference—>General->Editors->File Associations中修改“*.class”默認(rèn)關(guān)聯(lián)的編輯器為“JadClipse Class File Viewer”。
四、使用jad反編譯
1。在DOS窗口中,到class所在目錄,直接運(yùn)行 >jad DB.class,將在該目錄中生成DB.jad文件。運(yùn)行 >jad -sjava DB.class,將在該目錄中生成DB.java文件

2。在Eclipse 工作臺使用:
1)把class目錄加入項(xiàng)目:(這一步許多文檔都沒有寫到,花了我很多時間
)
1.1)項(xiàng)目--〉屬性--〉java buildpath--〉add class folder (如 a)--〉OK
1.2)a--〉import--〉General-->File system-->Browse-->OK
2)雙擊class 文件,出現(xiàn)可愛的java文件,編譯成功
。

五、批量反編譯
以下部分轉(zhuǎn)載 菠蘿大象的文章:
現(xiàn)在有人會說了,這樣一個一個的看太麻煩了,我需要一次把一個JAR包下的所有class文件反編譯成java源文件。這樣的想法是可行的,還是使用jad工具。
3、批量反編譯
因?yàn)橹拔覀円呀?jīng)將jad加入到了%JAVA_HOME%\bin中,只要配置了環(huán)境變量,我們就可以在命令行中方便的使用。在這里,大象還是以dom4j-1.6.1.jar為例來說明具體的操作步驟。
解壓dom4j-1.6.1.jar和jaxen-1.1-beta-7.jar。為了方便,我將JAR包解壓放到F盤根目錄,在cmd中,進(jìn)入到F盤根路徑下,輸入命令:jad -o -r -s java -d src org/**/*.class
我解釋一下這些參數(shù)的含義:
-o:覆蓋舊文件,而且不用提示確認(rèn)。
-r:重新加載生成包結(jié)構(gòu)。
-s:定義輸出文件的擴(kuò)展名。jad為默認(rèn)擴(kuò)展名,我們反編譯后當(dāng)然是要.java源文件了。
-d:輸出文件的目錄。src表示反編譯后的所有文件都放在src目錄下。
org/**/*.class:org是解壓后的文件夾的名字,整個表示org目錄下的所有class文件。你也可以寫成這樣**/*.class,這表示當(dāng)前目錄及其子目錄下所有的class文件(包含所有的子目錄)。 反編譯dom4j-1.6.1.jar必須得有jaxen-1.1-beta-7.jar,因?yàn)?span lang="EN-US">dom4j里面有對
xpath的調(diào)用,而這些東西都是引用
jaxen里的
API,如果不加則會有這樣的錯誤:

到此,關(guān)于反編譯的內(nèi)容全部說完了,不過我還想補(bǔ)充一點(diǎn),有可能JAR包中的class文件不是老外的,而是我們自己寫的,里面可能會有中文的情況,這時,雖然反編譯通過了,但里面卻是gb2312形式的unicode編碼,因此我們還得做一個工作,將這些編碼轉(zhuǎn)換成中文。
大象使用ant腳本來完成這個工作,內(nèi)容比較簡單,加了注釋,應(yīng)該很好明白,腳本文件名為build.xml,它放在src目錄下,和反編譯所得的包處在同一層。
<?xml version="1.0" encoding="GBK"?>
<project name="decompile" basedir="." default="native2ascii">
<!-- 定義輸出目錄 -->
<property name="build" value="build"/>
<!-- 清除輸出目錄 -->
<target name="clean">
<delete dir="${build}"/>
</target>
<!-- 創(chuàng)建輸出目錄 -->
<target name="init" depends="clean">
<mkdir dir="${build}"/>
</target>
<!-- 編碼轉(zhuǎn)換 reverse="true"為反向轉(zhuǎn)換 -->
<target name="native2ascii" depends="init">
<native2ascii reverse="true" src="${basedir}" encoding="gb2312" dest="${basedir}/${build}" />
</target>
</project>
有一個地方需要補(bǔ)充一下,在native2ascii元素中,src和dest這兩個屬性表示著路徑。如果反編譯后,src目錄下,有多個不同的文件夾,這時使用ant來轉(zhuǎn)換編碼,請先想好要對哪些文件進(jìn)行反編碼;如果按上面的寫法,將會把src目錄下的所有文件夾中的所有文件進(jìn)行反編碼。假設(shè),現(xiàn)在有com和org兩個文件夾(其實(shí)是兩個包),我只需要對com中的文件進(jìn)行反編碼,那么可以這樣改寫:src="${basedir}/com" dest="${basedir}/${build}/com"
其它的都不變。在cmd中進(jìn)入到src路徑下,輸入ant,回車??梢钥吹饺缦陆Y(jié)果:

反編譯的內(nèi)容基本結(jié)束。
ava.sql.SQLException: ORA-00904:
原因:
hbm.xml文件的屬性名與數(shù)據(jù)庫的屬性名不對應(yīng)
此類問題的出現(xiàn)主要來自三個方面。
1、 SQL語句中存在語法錯誤或是傳入的數(shù)據(jù)有誤;
2、 數(shù)據(jù)庫的配置不合法,或者說是配置有誤。較容易出現(xiàn)的有數(shù)據(jù)表的映射文件(,hbm.xml文件)配置有誤;Hibernate.cfg.xml文件配置有誤;
3、 當(dāng)前的數(shù)據(jù)庫用戶權(quán)限不足,不能操作數(shù)據(jù)庫。以是以O(shè)racle 數(shù)據(jù)庫為例,這種情況下在錯誤提示中會顯示java.sql.BatchUpdateException: ORA-01031: insufficient privileges這樣的信息。
以下是我在項(xiàng)目中解決SQL Grammer Exception,Could not execute JDBC batch update異常時使用的方法。
在oracle數(shù)據(jù)庫已經(jīng)創(chuàng)建完的情況下,想要創(chuàng)建新的表,可以先創(chuàng)建新用戶,和新的表空間
然后分配給用戶表空間權(quán)限即可,不需要創(chuàng)建新的數(shù)據(jù)庫,在本機(jī)上..
技術(shù)要點(diǎn)
本節(jié)代碼詳細(xì)說明文件上傳功能的開發(fā)流程,介紹知識點(diǎn)如下:
struts.xml配置文件中有關(guān)文件上傳的配置:
<!--------------------文件名:struts.xml------------------->
<struts>
<!-- 系統(tǒng)常量定義,定義上傳文件字符集編碼 -->
<constant name="struts.i18n.encoding" value="gb2312"></constant>
<!-- 系統(tǒng)常量定義,定義上傳文件臨時存放路徑 -->
<constant name="struts.multipart.saveDir" value="c:\"></constant>
<!-- Action所在包定義 -->
<package name="C04.4" extends="struts-default">
<!-- Action名字,類以及導(dǎo)航頁面定義 -->
<!-- 通過Action類處理才導(dǎo)航的的Action定義 -->
<action name="upload" class="action.UploadAction">
<result name="input">/jsp/upload.jsp</result>
<result name="success">/jsp/result.jsp</result>
</action>
</package>
</struts>