まとめ @ 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にアクセスログが残る

記事メニュー
ウィキ募集バナー