| Message |
|
|
改用 Apache HttpComponents HttpClient 4撰寫的版本:
httpclient4.jsp:
<%@ page contentType="text/html;charset=big5" %>
<%@ page import="java.io.IOException" %>
<%@ page import="org.apache.http.client.ClientProtocolException" %>
<%@ page import="org.apache.http.client.HttpClient" %>
<%@ page import="org.apache.http.client.ResponseHandler" %>
<%@ page import="org.apache.http.client.methods.HttpGet" %>
<%@ page import="org.apache.http.impl.client.BasicResponseHandler" %>
<%@ page import="org.apache.http.impl.client.DefaultHttpClient" %>
<%
String url = "http://tw.stock.yahoo.com/";
String stockId = request.getParameter("stock_id");
if (stockId != null) {
url += "q/q?s="+stockId;
}
// Create an instance of HttpClient.
HttpClient httpclient = new DefaultHttpClient();
try {
// Create an HttpGet method instance.
HttpGet httpget = new HttpGet(url);
System.out.println("executing request " + httpget.getURI());
// Create a response handler
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = httpclient.execute(httpget, responseHandler);
if (stockId != null) {
responseBody = responseBody.substring(responseBody.indexOf("nowrap><b>")+"nowrap><b>".length());
responseBody = responseBody.substring(0, responseBody.indexOf("</b>"));
out.println(stockId + " Price Now: " + responseBody);
} else {
out.println(responseBody);
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}
%>
|
 |
|
|
最近公司資安議題發燒,為了加強安全性,我們決定將整個網站都透過https傳輸方式讓使用者使用,而要達成這個自動強制將http導到https只要透過Apache的 mod_rewrite機制,很輕鬆就可以達成,如下,在/etc/httpd/conf/httpd.conf內加入如下設定即可:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
然後重啟Apache
/etc/init.d/httpd restart
[注意]如果您是看畫面自己打字輸入的人,要特別小心(這個小細節花了我好多時間才注意到):
1.%{HTTP_HOST}和%{REQUEST_URI}中間沒有斜線('/')
2.%{HTTP_HOST}和%{REQUEST_URI}是%開頭,不是$開頭
參考資料:
http://www.cyberciti.biz/tips/howto-apache-force-https-secure-connections.html
相關文章:
http://www.andowson.com/posts/list/315.page
|
 |
|
|
今天遇到將id_dsa.pub檔複製過去候還是得輸入密碼才能登入的狀況,後來參考下列這篇文章:
SSH login without password
1.將.ssh目錄權限改為700
chmod 700 ~/.ssh
2.將.ssh/authorized_keys2改成640
chmod 640 ~/.ssh/authorized_keys2
再試就可以了。
|
 |
|
|
我已經把第一篇文章中的注意事項標註為紅色了
disable SELinux and firewall
|
 |
|
|
caramel您好:
請先檢查一下您主機的IP,然後cd /var/webapps,檢查目錄下有沒有一個跟主機IP相同的目錄
例如主機IP是192.168.1.1,則目錄名稱應為192.168.1.1
請改為存取下列網址看看
http://192.168.1.1/
再不行請重新啟動一次Tomcat和Apache看看
利用下列指令去檢查Tomcat是否正常啟動
netstat -an|grep 8105
netstat -an|grep 8109
|
 |
|
|
|
|
 |
|
|
作者把一些軟體開發的經驗用幽默的方式寫出來,可以讓大家參考一下,吸取經驗。網址如下:
http://teddy-chen-tw.blogspot.com/
|
 |
|
|
n5998744您好:
如果只要把備份的檔案放到同一台電腦的其他槽區而已=>就是不作FTP的動作囉?
那就把ftpsession那段跳過去即可,可以修改remote_backup_web.bat的第34行
[code=bat;first-line:34]
goto ftpsession
[/code]
為
[code=bat;first-line:34]
goto end
[/code]
如果要更改備份檔所在的目錄,可以修改第21行
[code=bat;first-line:21]
set BACKUPDIR=D:\backup
[/code]
不知道您是使用何種資料庫軟體,如果是使用MS SQL Server,要備份資料庫到本機硬碟的話就很簡單,可以在資料庫軟體上設定排程,將資料庫備份到某一個目錄下即可。
|
 |
|
|
|
|
 |
|
|
就您所提供之圖片來看,基本上程式碼應該沒什麼錯誤,該加入到CLASSPATH的jar檔也都加了,還是有這種找不到Class的問題,我也不清楚原因了。
如果硬要死馬要當活馬醫的話,我的建議就是重新再開一個新的Java Project,然後把程式碼先貼到記事本,再貼過去,再試試看。
|
 |
|
|
假設您已經把所有的資料由一個csv檔案匯入到Access 2007中的一個table (table name是test),然後依據欄位ID的值之不同,將所有ID相同之紀錄分別插入(Insert)到相同的資料表,不同的ID則放到不同的資料表中(table name為三位數字,由001開始,依序遞增)。由於不知道資料表可能有多少個,所以採用由程式動態建立。參考範例程式如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
public class DBAccess {
/**
* @param args
*/
public static void main(String[] args) {
try {
// Connect to database
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/test/Database1.accdb";
Connection conn = DriverManager.getConnection(url, "", "");
// Fetch data from table
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM test");
ResultSet rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int i = 0;
String oldID = "";
String tableName = "";
while (rs.next()) {
// Fetch a record
String ID = rs.getString("ID");
Timestamp diagnoseDate = rs.getTimestamp("看診日期");
String pulseCondition = rs.getString("脈象");
int segment = rs.getInt("段");
String chiefComplaint = rs.getString("主訴");
String disease = rs.getString("病名");
String prescription = rs.getString("配方");
// Change tableName if ID change
if (!oldID.equals(ID)) {
i++;
oldID = ID;
tableName = String.format("%03d", i);
System.out.println(tableName);
Statement stmt = conn.createStatement();
try {
// We may need to run this program several times
stmt.execute("DROP TABLE " + tableName);
} catch (SQLException se) {
// Just ignore the table does not exist exception
}
stmt.execute("CREATE TABLE " + tableName + " ([ID] CHAR(10), [看診日期] DATETIME, [脈象] TEXT, [段] INTEGER, [主訴] TEXT, [病名] TEXT, [配方] TEXT)");
for (int j = 1; j < rsmd.getColumnCount(); j++) {
System.out.print(rsmd.getColumnName(j) + "_");
}
System.out.println(rsmd.getColumnName(rsmd.getColumnCount()));
}
// Store each record into new table
String sql = "INSERT INTO " + tableName + " ([ID], [看診日期], [脈象], [段], [主訴], [病名], [配方]) VALUES(?, ?, ?, ?, ?, ?, ?)";
PreparedStatement pstmt2 = conn.prepareStatement(sql);
pstmt2.setString(1, ID);
pstmt2.setTimestamp(2, diagnoseDate);
pstmt2.setString(3, pulseCondition);
pstmt2.setInt(4, segment);
pstmt2.setString(5, chiefComplaint);
pstmt2.setString(6, disease);
pstmt2.setString(7, prescription);
pstmt2.executeUpdate();
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
}
}
參考資料:
http://msdn.microsoft.com/en-us/library/bb208866%28v=office.12%29.aspx
|
 |
|
|
中華電信 100 年研發人員徵才公告
中華電信為強化研發能力,將招募 100 年研發人員 43 名,各職缺擔任工作、學歷資格條件及遴選相關事項,請參閱遴選簡章,一律採取網路報名方式辦理。
一、報名日期:100年1月21日至100年2月10日
二、第一試(資歷論文審查)日期:100年2月11日至100年2月15日
三、第二試通知日期:100年2月16日
四、第二試(口試)日期:100年2月19日至100年2月20日
五、放榜日期:100年2月23日
詳請請看:
http://www.cht.com.tw/CompanyCat.php?CatID=4&NewsID=4230&Page=HotNewsDetail
|
 |
|
|
關於您問到的「如果在搜尋裡面增加,所搜尋到的文件且呈現內文應該怎麼打? 」
我想可以用高亮方式來處理:
Searcher.java:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.InvalidTokenOffsetsException;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.Scorer;
import org.apache.lucene.search.highlight.SimpleHTMLFormatter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
public class Searcher {
public static void main(String[] args) throws IOException, ParseException, InvalidTokenOffsetsException {
String Idx = "C:\\test\\Idx";
String dataDir = "C:\\test\\Data";
Directory dir = new SimpleFSDirectory(new File(Idx));
IndexSearcher indexSearch = new IndexSearcher(dir);
QueryParser queryParser = new QueryParser(Version.LUCENE_30,
"contents", new StandardAnalyzer(Version.LUCENE_30));
Query query = queryParser.parse("鼻涕"); // key Query term
TopDocs hits = indexSearch.search(query, 500);
System.out.println("找到" + hits.totalHits + "個");
for (int i = 0; i < hits.scoreDocs.length; i++) {
ScoreDoc sdoc = hits.scoreDocs[i];
Document doc = indexSearch.doc(sdoc.doc);
System.out.println(doc.get("filename"));
Scorer scorer = new QueryScorer(query);
SimpleHTMLFormatter simpleHTMLFormatter = new SimpleHTMLFormatter("", "");
Highlighter highlighter = new Highlighter(simpleHTMLFormatter, scorer);
String content = readFileAsString(dataDir+File.separator+doc.get("filename"));
TokenStream tokenStream = queryParser.getAnalyzer().tokenStream(
"contents", new StringReader(content));
String fragment = highlighter.getBestFragment(tokenStream, content);
System.out.println(fragment != null ? fragment : content);
}
indexSearch.close();
}
private static String readFileAsString(String filePath) throws java.io.IOException{
byte[] buffer = new byte[(int) new File(filePath).length()];
BufferedInputStream f = null;
try {
f = new BufferedInputStream(new FileInputStream(filePath));
f.read(buffer);
} finally {
if (f != null) try { f.close(); } catch (IOException ignored) { }
}
return new String(buffer);
}
}
需另外加入下列jar檔到CLASSPATH:
lucene-3.0.3\contrib\highlighter\lucene-highlighter-3.0.3.jar
lucene-3.0.3\contrib\memory\lucene-memory-3.0.3.jar
|
 |
|
|
這個問題我看很久還是沒什麼頭緒,如果要寫支Java程式透過 JDBC 去存取 Microsoft Access 2007 的資料表可以參考這個範例程式:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
public class DBAccess {
/**
* @param args
*/
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/test/Database1.accdb";
Connection conn = DriverManager.getConnection(url, "", "");
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM ALL_TABLE");
ResultSet rs = pstmt.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int i = 0;
while (rs.next()) {
String column1 = rs.getString("欄位1");
String column2 = rs.getString("欄位2");
String column3 = rs.getString("欄位3");
String column4 = rs.getString("欄位4");
i++;
System.out.println(i+"_TABLE: ");
for (int j = 1; j < rsmd.getColumnCount(); j++) {
System.out.print(rsmd.getColumnName(j) + "_");
}
System.out.println(rsmd.getColumnName(rsmd.getColumnCount()));
System.out.println(i+"_"+column1+"_"+column2+"_"+column3+"_"+column4);
}
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
}
}
|
 |
|
|
這個程式我測試過應該沒問題才對
1.首先下載 Lucene 3.0.3,然後解壓縮,並將下列jar檔加入CLASSPATH
lucene-3.0.3\lucene-core-3.0.3.jar
lucene-3.0.3\contrib\analyzers\common\lucene-analyzers-3.0.3.jar
2.接著建立C:\test目錄,並在C:\test底下再建立兩個子目錄Idx和Data
3.接著透過Google搜尋 鼻涕(google),找到任何一篇文章後,將它的內容另存成一個文字檔,如1.txt,存到C:\test\Data目錄下。
4.執行Indexer
5.再執行Searcher
|
 |
|
|