まとめ @ wiki
サーブレットクラス記述・実行の「3つの条件」
最終更新:
Bot(ページ名リンク)
-
view
「サーブレットクラス記述・実行の「3つの条件」 【HP】
目次
ソース
AccessLog.java
// package to.msn.wings.atmarkt;
import java.io.*;
import java.sql.*;
import java.util.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class AccessLog extends HttpServlet {
public void doGet( HttpServletRequest request, HttpServletResponse response )
throws ServletException, IOException {
Connection db = null;
PreparedStatement objSql = null;
try {
Class.forName( "oracle.jdbc.driver.OracleDriver" );
db = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:SID名", "ユーザー名", "パスワード" );
objSql = db.prepareStatement( "INSERT INTO log_rec( url, atime, usr, referer) VALUES( ?, ?, ?, ? )" );
SimpleDateFormat objFmt = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
objSql.setString( 1, request.getServletPath() );
objSql.setString( 2, objFmt.format( Calendar.getInstance().getTime() ) );
objSql.setString( 3, request.getHeader( "user-agent" ) );
objSql.setString( 4, request.getHeader( "referer" ) );
objSql.executeUpdate();
objSql.close();
db.close();
} catch ( Exception e ) {
throw new ServletException( e );
} finally {
if( objSql != null ) {
try {
objSql.close();
} catch ( SQLException e ) {
throw new ServletException( e );
}
}
if( db != null ) {
try {
db.close();
} catch( SQLException e ) {
throw new ServletException( e );
}
}
}
}
}
web.xml
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<servlet>
<servlet-name>AccessLog</servlet-name>
<servlet-class>AccessLog</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AccessLog</servlet-name>
<url-pattern>/AccessLog</url-pattern>
</servlet-mapping>
</web-app>注意事項
- パッケージの記述は削除する
- Servletファイルなのでclassesフォルダにクラスファイルを配置する
実行結果
ブラウザ上に表示はなし
JSPファイルと同様に、DBにアクセスログが残る