[Java][j2ee]log4j初試

注:省略了很多其他東西,按部就班照搬問題多多。僅做自己備忘及給需要的朋友參考


使用log4j在web項目中進行日誌記錄。
1.添加 一個用於log4j初始化(指定屬性文件等)的servlet
package addrbook.servlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.*;

public class Log4jInitServlet extends HttpServlet {
    
public void init() {
        String prefix 
= getServletContext().getRealPath("/");
        String file 
= getInitParameter("log4j-init-file");
        
if (file != null{
            PropertyConfigurator.configure(prefix 
+ file);
        }

    }


    
public void doGet(HttpServletRequest req, HttpServletResponse res) {
    }


}


2.配置web.xml,讓project啓動就讓log4j初始化(project啓動即運行上面的servlet)
  <servlet>
    
<servlet-name>Log4jInitServlet</servlet-name>
    
<servlet-class>addrbook.servlet.Log4jInitServlet</servlet-class>
    
<init-param>
        
<param-name>log4j-init-file</param-name>
        
<param-value>/WEB-INF/classes/log4j.properties</param-value>
    
</init-param>
    
<load-on-startup>1</load-on-startup>
  
</servlet>

3.編寫log4j.properties,(演示在一個配置文件中控制多個logger的輸出)
#log4j.rootLogger=fatal
log4j.logger.DB 
= debug,R
log4j.logger.LOGON 
= debug,R2

log4j.appender.R
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.layout
=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern
=%d{yyyy-MM-dd HH:mm:ss} %c %p%n    %m%n 
log4j.appender.R.File
=../webapps/addressbook1/WEB-INF/log/event.log


log4j.appender.R2
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R2.layout
=org.apache.log4j.PatternLayout
log4j.appender.R2.layout.ConversionPattern
=%d{yyyy-MM-dd HH:mm:ss} %c %p%n    %m%n 
log4j.appender.R2.File
=../webapps/addressbook1/WEB-INF/log/event.log

一個是用於控制數據庫操作日誌的DB(R),一個是用於登陸信息日誌的LOGON(R2),在一個properties一起配置。指定了日誌輸出的路徑“log4j.appender.R.File=../webapps/addressbook1/WEB-INF/log/event.log”。
如果直接爲log4j.appender.R.File=event.log, 則日誌文件將位域tomcat/bin/eveng.log

4.在代碼中添加日誌操作代碼
package addrbook.model;

import java.sql.*;
import org.apache.log4j.*;

public class DBUtil {
    
private final static String DRIVER_NAME = "com.mysql.jdbc.Driver";
    
private final static String DBURL = "jdbc:mysql://";
    
private final static String DBNAME = "struts_addr";
    
private final static String DB_USER_NAME = "feng";
    
private final static String DB_USER_PWD = "";
    
    
public static Logger logger = Logger.getLogger("DB"); //獲取一個Logger,名字與properties文件裏的對應

    
public DBUtil() {

    }


    
public static java.sql.Connection connectToDb(String hostName,
            String databaseName) 
throws Exception {
        Connection connection 
= null;
        String connName 
= DBURL + hostName + ":3306" + "/" + databaseName;
        logger.debug(
"connName: "+connName);    //日誌輸出
        Class.forName(DRIVER_NAME).newInstance();
        connection 
= DriverManager.getConnection(connName, DB_USER_NAME,
                DB_USER_PWD);
        
return connection;
    }


    
public static Connection connectToDb(String databaseName) throws Exception {
        
return (connectToDb("localhost", databaseName));
    }


    
public static Connection connectToDb() throws Exception {
        
return (connectToDb("localhost", DBNAME));
    }

}



package addrbook.action;

import java.util.Locale;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.util.MessageResources;
import addrbook.form.InsertForm;
import addrbook.model.AddressBookBean;
import addrbook.model.DBUtil;
import addrbook.Constants;

/**
 * <strong>InsertAction</strong> inserts a new record into the database.
 
*/

public final class InsertAction extends AbstActionBase {

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            
throws Exception {

        Locale locale 
= getLocale(request);
        MessageResources messages 
= getResources(request);

        String name 
= null;
        String phone 
= null;
        String address 
= null;

        ActionMessages errors 
= new ActionMessages();

        name 
= ((InsertForm) form).getName();
        phone 
= ((InsertForm) form).getPhone();
        address 
= ((InsertForm) form).getAddress();

        
try {
            AddressBookBean bean 
= new AddressBookBean(name, phone, address);
            bean.insert();
        }
 catch (Exception ex) {
            
//ex.printStackTrace(System.out);
            DBUtil.logger.debug("exception!!", ex); //記錄數據庫操作異常日誌
            
            errors.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                    
"error.insert.failed"));
        }


        
if (!errors.isEmpty()) {
            saveErrors(request, errors);
            
return (new ActionForward(mapping.getInput()));
        }

        
// If we had no errors, then add a confirmation message
        ActionMessages actionMessages = new ActionMessages();
        actionMessages.add(ActionMessages.GLOBAL_MESSAGE, 
new ActionMessage(
                
"record.inserted"));
        saveMessages(request, actionMessages);

        
return (mapping.findForward(Constants.FORWARD_CONFIRMATION));

    }

}


package addrbook;

import addrbook.model.*;
import java.util.*;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.*;

import org.apache.commons.digester.Digester;
import org.apache.log4j.*;


public final class UserDatabaseServlet extends HttpServlet {
    
    
private Hashtable<String, UserBean> database = null;
    
//private int debug = 0;
    private String pathname = "/WEB-INF/userdatabase.xml";
    
    
private static Logger logger = Logger.getLogger("LOGON");//獲取logger,名字與properties文件對應
    
    
public void destroy(){
        getServletContext().removeAttribute(Constants.DATABASE_KEY);
    }

    
    
/*public int getDebug(){
        return this.debug;
    }
*/

    
    
public void addUser(UserBean user){
        database.put(user.getUserName(), user);
    }

    
    
public void init() throws ServletException{
        
        String value 
= getServletConfig().getInitParameter("pathname");
        
if(value != null)
            pathname 
= value;
        
        
try{
            load();
            getServletContext().setAttribute(Constants.DATABASE_KEY, database);
        }
catch(Exception e){
            
//log("Database load exception",e);
            logger.debug("Database load exception", e);
            
throw new UnavailableException("Cannot load database from '"+pathname+""+e.getMessage());
        }

    }

    
    
    
private synchronized void load() throws Exception{
        database 
= new Hashtable<String, UserBean>();
        
        
//記錄loon信息
        logger.info("Loading database from '"+pathname+"'");
        InputStream is 
= getServletContext().getResourceAsStream(pathname);
        
if(is == null){
            
            
//記錄logon信息
            logger.info("No such resource available - loading empty database");
            
return;
        }

        
        BufferedInputStream bis 
= new BufferedInputStream(is);
        Digester digester 
= new Digester();
        digester.push(
this);
        
//digester.setDebug(1);
        digester.setValidating(false);
        digester.addObjectCreate(
"database/user""addrbook.model.UserBean");
        digester.addSetProperties(
"database/user");
        digester.addSetNext(
"database/user","addUser");
        digester.parse(bis);        
        bis.close();
    }

}


一個日誌輸出event.log
08-04-13 17:19:17 LOGON INFO
    Loading database from '/WEB-INF/userdatabase.xml'
 
2008-04-13 17:19:30 DB DEBUG
    connName: jdbc:mysql://localhost:
3306/struts_addr
 
2008-04-13 17:19:31 DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366)
    at java.net.Socket.connect(Socket.java:
519)
    at java.net.Socket.connect(Socket.java:
469)
    at java.net.Socket.<init>(Socket.java:
366)
    at java.net.Socket.<init>(Socket.java:
209)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)


** END NESTED EXCEPTION **



Last packet sent to the server was 
0 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)
2008-04-13 17:37:48 DB DEBUG
    connName: jdbc:mysql://localhost:
3306/struts_addr
 
2008-04-13 17:37:49 DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366)
    at java.net.Socket.connect(Socket.java:
519)
    at java.net.Socket.connect(Socket.java:
469)
    at java.net.Socket.<init>(Socket.java:
366)
    at java.net.Socket.<init>(Socket.java:
209)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)


** END NESTED EXCEPTION **



Last packet sent to the server was 
0 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)
2008-04-13 17:38:20 LOGON INFO
    Loading database from '/WEB-INF/userdatabase.xml'
 
2008-04-13 17:38:25 DB DEBUG
    connName: jdbc:mysql://localhost:
3306/struts_addr
 
2008-04-13 17:38:26 DB DEBUG
    exception!!
 com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 

** BEGIN NESTED EXCEPTION ** 

java.net.ConnectException
MESSAGE: Connection refused: connect

STACKTRACE:

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:
333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:
195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:
182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:
366)
    at java.net.Socket.connect(Socket.java:
519)
    at java.net.Socket.connect(Socket.java:
469)
    at java.net.Socket.<init>(Socket.java:
366)
    at java.net.Socket.<init>(Socket.java:
209)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:
271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2744)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)


** END NESTED EXCEPTION **



Last packet sent to the server was 
0 ms ago.
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:
2820)
    at com.mysql.jdbc.Connection.<init>(Connection.java:
1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
285)
    at java.sql.DriverManager.getConnection(DriverManager.java:
582)
    at java.sql.DriverManager.getConnection(DriverManager.java:
185)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
26)
    at addrbook.model.DBUtil.connectToDb(DBUtil.java:
36)
    at addrbook.model.AddressBookBean.insert(AddressBookBean.java:
57)
    at addrbook.action.InsertAction.execute(InsertAction.java:
55)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:
236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:
432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:
803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:
584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
447)
    at java.lang.Thread.run(Thread.java:
619)
 
發佈了64 篇原創文章 · 獲贊 17 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章