| Message |
|
|
|
|
 |
|
|
目前不行。
表格比較複雜,如果沒有適當的關閉,會造成版面跑掉,所以目前不支援。
|
 |
|
|
可以的,只要在系統管理控制台中,群組->一般使用者->權限->拒絕匿名發表,將該版面取消選取即可。
|
 |
|
|
今天遇到雙面列印時多了一頁空白頁的問題,後來參考了下列這篇文章後,將第一節的起始頁碼由從0開始改成設為1即可。
Microsoft Word - 空白頁問題 - 總整理
http://club.excelhome.net/thread-577819-1-1.html
|
 |
|
|
Some hints for you:
1. Change your demo.html as follows:
<#list allCategories as cat>
${cat.category}
<#list cat.getMenus() as menu>
${menu.menu}
</#list>
</#list>
2.Add a collection object like ArrayList for menus in Categories class
package com.menu.entities;
public class Categories {
private int id;
private String category;
private List menus = new ArrayList();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public List getMenus() {
retrun menus;
}
public void addMenu(Menu menu) {
this.menus.add(menu);
}
}
|
 |
|
|
依我的了解,您應該是想要在輸入的內容是空白或是不存在時都顯示一個錯誤訊息來提醒使用者吧?
設計的想法是:
利用一個boolean變數found,初始值為false,然後比對輸入的字串s,如果不是null時程式會利用for迴圈拜訪每個XML文件樹的節點,如果內容等於我們讀取到的分類號時,才將found設為true,並輸出結果,並等待使用者按下Enter才顯示下一筆。
以下是參考範例ReadXMLFile.java:
import java.io.*;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
public class ReadXMLFile {
public static void main(String[] args) throws IOException {
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File("C:\\JAVA_WORK\\test1.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("輸入分類號:");
String s = br.readLine();
boolean found = false;
if (s != null) {
try {
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren("ROW");
for (int i = 0; i < list.size(); i++)
{
Element node = (Element) list.get(i);
if (node.getChildText("分類號").equals(s))
{
System.out.println("年度號 : " + node.getChildText("年度號"));
System.out.println("分類號 : " + node.getChildText("分類號"));
System.out.println("案次號 : " + node.getChildText("案次號"));
Scanner input = new Scanner(System.in);
input.hasNextLine();
found = true;;
}
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
if (!found) {
System.out.println("查無此分類號!請重新輸入...");
}
}
}
以下是參考用的輸入檔test1.xml:
<ROWSET>
<ROW num="1">
<年度號>0080</年度號>
<分類號>010302</分類號>
<案次號>002</案次號>
</ROW>
<ROW num="2">
<年度號>0078</年度號>
<分類號>011602</分類號>
<案次號>002</案次號>
</ROW>
<ROW num="3">
<年度號>0070</年度號>
<分類號>019302</分類號>
<案次號>011</案次號>
</ROW>
<ROW num="1225">
<年度號>0099</年度號>
<分類號>018719</分類號>
<案次號>111</案次號>
</ROW>
</ROWSET>
|
 |
|
|
您可以參考一下這個連結的說明:
http://caterpillar.onlyfun.net/Gossip/JavaEssence/WhatClasspath.html
先弄清楚什麼是CLASSPATH後,這個問題您應該就可以自行處理了。
|
 |
|
|
您的程式需要修改一下,第13行改為兩個倒斜線(\\),為什麼要兩個倒斜線是因為到斜線本身是Java的跳脫字元,否則就會變成\t,這樣就變成跳格字元了。
[code=java; first-line:13]File xmlFile = new File("C:\\JAVA_WORK\\test3.xml");[/code]
第19行改為
[code=java; first-line:19]List list = rootNode.getChildren("ROW");[/code]
即可正常輸出您要的結果。
至於jdom-1.1.2.jar檔的安裝或設定其實主要是要設定在CLASSPATH這個環境變數上,例如您可以將jdom-1.1.2.zip解壓縮,然後將jar檔複製到於C:\JAVA_WORK\lib目錄下,然後在CLASSPATH中加入C:\JAVA_WORK\lib\jdom-1.1.2.jar。
|
 |
|
|
實際測試上傳一個1GB多的檔案,確實會出現Read timed out的結果:
So far, 1069001476 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1070000168 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1071002992 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1072001684 of 1073742116 bytes have been read.
We are currently reading item 1
So far, 1073000376 of 1073742116 bytes have been read.
一月 16, 2012 2:25:28 上午 org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet [jsp] in context with path [] threw exception [An exception occurred processing JSP page /fileupload_streaming.jsp at line 65
62: File uploadedFile = new File(saveDirectory, fileName);
63: FileOutputStream uploadedFileStream =
64: new FileOutputStream(uploadedFile);
65: Streams.copy(stream, uploadedFileStream, true);
66: }
67: }
68: }
Stacktrace:] with root cause
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364)
at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331)
at org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576)
at org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027)
at org.apache.coyote.Request.doRead(Request.java:422)
at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429)
at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
at org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
at java.io.InputStream.read(Unknown Source)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
at org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
at org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:333)
at org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /fileupload_streaming.jsp at line 65
62: File uploadedFile = new File(saveDirectory, fileName);
63: FileOutputStream uploadedFileStream =
64: new FileOutputStream(uploadedFile);
65: Streams.copy(stream, uploadedFileStream, true);
66: }
67: }
68: }
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.net.SocketTimeoutException: Read timed out
java.net.SocketInputStream.socketRead0(Native Method)
java.net.SocketInputStream.read(Unknown Source)
java.net.SocketInputStream.read(Unknown Source)
org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309)
org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364)
org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:331)
org.apache.coyote.ajp.AbstractAjpProcessor.refillReadBuffer(AbstractAjpProcessor.java:576)
org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1027)
org.apache.coyote.Request.doRead(Request.java:422)
org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290)
org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:429)
org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315)
org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable(MultipartStream.java:976)
org.apache.commons.fileupload.MultipartStream$ItemInputStream.read(MultipartStream.java:886)
java.io.InputStream.read(Unknown Source)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:96)
org.apache.commons.fileupload.util.Streams.copy(Streams.java:66)
org.apache.jsp.fileupload_005fstreaming_jsp._jspService(fileupload_005fstreaming_jsp.java:125)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.
Apache Tomcat/7.0.23
實際上傳的檔案大小如下:
-rw-r--r-- 1 tomcat tomcat 1073094361 2012-01-16 02:25 ppsds.pgf
目前我的web.xml中設定如下:
<session-config>
<session-timeout>10</session-timeout>
</session-config>
目前我不確定是否跟session-timeout這個值有關係(10分鐘),不過整個1GB檔案上傳的時間大約有花半小時以上,您可以試試看調整這個參數再測試看看。
|
 |
|
|
starzine您好:
我給的範例確實是只能在本機端執行,取得本機端的檔案名稱,而您所需要的是取得遠端檔案伺服器目錄下的檔案清單。
可以在sftp下執行目錄排序的指令如下(日期最近的會排在上面)
ls -lt
但接下來可能你會問要如何從psftp將這個指令的結果(目錄內的檔案清單)傳回,好讓我們可以再加以過濾出某個日期範圍內的檔案?
你先想一下,好好的想一 下....
你不知道,我也不知道,
這個問題可能已經超出光靠DOS Batch語法就能完成的事情了。
還是再問一次,有沒有可能改為規範遠端檔案伺服器上檔案的命名方式,否則我想就只有老老實實去寫程式來處理會比較快。
當問題複雜到一個程度時,還是真得要寫個程式來執行這個任務。(如何寫這個程式我就不在這邊討論,可以參考 http://www.andowson.com/posts/list/199.page)
|
 |
|
|
您可以參考下面的範例程式去修改
@echo off
rem 取得系統日期
for /f "tokens=1 delims= " %%a in ('date /T') do set today=%%a
rem 先找出現行目錄下所有檔案並依日期排序後再過濾出日期為系統日期之檔案存到dir.txt
dir /A:-D /O:D | find /i "%today%" > dir.txt
if exist filelist.txt del filelist.txt
rem 利用空白字元切割,由dir.txt每列的第五欄中取得檔案名稱
for /f "tokens=5 delims= " %%a in (dir.txt) do (
echo %%a >> filelist.txt
rem 下面可以開始抓檔案了
rem get %%a
)
我是利用 DOS file date(google)這樣子的關鍵字去搜尋的
參考資料:
http://www.computing.net/answers/dos/dos-batch-to-check-file-date/12627.html
|
 |
|
|
大家好!新年快樂!
轉眼一年又過去了,本站從無到有,至今也成立五年了,去年訂的各項目標均有達成,所以我也不特別去一一檢討。
最近站長忙著準備結婚的事,網站就以維持正常運作為原則,沒有特別去發表新文章,但對於網友們的問題仍然是盡量抽空回答。
由於經營這個網站的成本除了時間以外,還有域名和主機的費用,今年的展望以損益兩平為目標,希望讓這個站可以達成靠廣告收入來支付營運的費用。
|
 |
|
|
初步修正如下:
@echo off
echo wscript.echo dateadd("d",-2,date) >%tmp%\tmp.vbs
for /f "tokens=1-3 delims=/ " %%a in ('cscript /nologo %tmp%\tmp.vbs') do (set year=%%a& set month=%%b& set day=%%c)
if %month% LEQ 9 set month=0%month%
if %day% LEQ 9 set day=0%day%
rem 去掉字串尾端空白
set day=%day:~,2%
set BACKUPDIR=s:\upload
set BACKUPDIR2=s:\uploadbackup
set BACKUPFILE=%BACKUPDIR2%\%year%%month%%day%
set FTPDIR2=FundX
set LOGFILE=%year%%month%%day%_backup.log
echo %LOGFILE%
echo. | date | findstr "現在日期" >> %LOGFILE%
echo. | time | findstr "現在時間" >> %LOGFILE%
:ftpsession
for /f "tokens=1-3 delims= " %%i in (ftp.cfg) do (set FTPSERVER=%%i&set USERNAME=%%j&set PASSWORD=%%k)
rem echo open %FTPSERVER% > ftpscript.txt
rem echo user %USERNAME% %PASSWORD% >> ftpscript.txt
echo lcd %BACKUPDIR% > ftpscript.txt
for /f %%m in (pbank.txt) do (
echo cd %%m>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo cd ..>> ftpscript.txt
)
echo cd %FTPDIR2%>>ftpscript.txt
echo mget *%year%%month%%day%.*>> ftpscript.txt
rem echo get *.*>> ftpscript.txt
echo dir *%year%%month%%day%.*>> ftpscript.txt
rem echo mget *.*>> ftpscript.txt
echo bye >> ftpscript.txt
echo ---=== ftp session begins ===--->> %LOGFILE%
echo ftp %FTPSERVER% to %BACKUPDIR% >> %LOGFILE%
echo mget *%year%%month%%day%.*>>%LOGFILE%
psftp %FTPSERVER% -l %USERNAME% -pw %PASSWORD% -be -b ftpscript.txt >> %LOGFILE%
xcopy %BACKUPDIR%\*%year%%month%%day%.* %BACKUPDIR2% /E/C/Q/R/Y
xcopy %BACKUPDIR%\*.* %BACKUPDIR2% /E/C/Q/R/Y
if not exist %BACKUPDIR2%\%year%%month%%day% mkdir %BACKUPDIR2%\%year%%month%%day%
move /Y %BACKUPDIR2%\*%year%%month%%day%.* %BACKUPDIR2%\%year%%month%%day%
move /Y %BACKUPDIR2%\*.* %BACKUPDIR2%\%year%%month%%day%
echo ---=== ftp session ends ===--->> %LOGFILE%
echo. |time | findstr "現在時間">> %LOGFILE%
echo %BACKUPDIR2%\%year%%month%%day%>> %LOGFILE%
echo %BACKUPFILE1%>> %LOGFILE%
echo.>> %LOGFILE%
rem del ftpscript.txt
rem del %LOGFILE%
move /Y I:\wSTN_IO\%LOGFILE% %BACKUPDIR2%\%year%%month%%day%
move /Y I:\wSTN_IO\ftpscript.txt %BACKUPDIR2%\%year%%month%%day%
set TARGET=
set TARGETNAME=
set BACKUPDIR=
set BACKUPFILE=
set LOGFILE=
set FTPSERVER=
set USERNAME=
set PASSWORD=
:end
說明如下:
將原8~11行搬移至第2行以取得year month day變數的定義
增加第7行, 修正day變數尾端有空白字串的bug
刪除(這裡我先用rem註解掉)原程式中的19-20行
rem echo open %FTPSERVER% > ftpscript.txt
rem echo user %USERNAME% %PASSWORD% >> ftpscript.txt
同時修改原第21行如下:
echo lcd %BACKUPDIR% > ftpscript.txt
另外我不知道你用cd \的原因為何,是否可以試著把cd \ 改為cd ..
將原第26行改為
echo cd ..>> ftpscript.txt
參考資料:
幾個在寫 MS-DOS batch script 時好用的動作
|
 |
|
|
starzine您好:
可否先將bat檔中的這一行註解掉:
del ftpscript.txt
方法就是前面加上rem,如下:
rem del ftpscript.txt
然後你再執行一次,接著你把ftpscript.txt和log檔都傳上來,比較方便除錯,謝謝~
|
 |
|
|
今天發現有些主機(REHL 3.3: mutt-1.4.1-3.4, RH Linux 7.3: mutt-1.2.5.1-1)使用mutt寄出來的信件寄件人會變成root<>,而被當成廣告信,接著遭到郵件伺服器的封鎖,因此有收不到信的狀況。
解決方法就是指定寄件人From:
mutt -e 'my_hdr from:客服中心<service@andowson.com>' -s "測試資料" -a /tmp/test.txt somebody@andowson.com < /dev/null
這樣子就可以正常收到信了
參考資料:
http://pegasus923.pixnet.net/blog/post/33608243-%E5%9C%A8linux%E4%B8%8A%E5%88%A9%E7%94%A8mutt%E6%8C%87%E4%BB%A4%E5%AF%84%E9%99%84%E5%8A%A0%E6%AA%94mail
|
 |
|
|