锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
http://fd.itedu-g.cn/login.php
]]>
鏁版嵁搴撳噯澶囷細
鍒涘緩鏁版嵁搴?/span>
鍒涘緩琛細
Java浠g爜錛?/span>
1銆?/span>鍒涘緩web 宸ョ▼ springJdbcTemplate
2銆?/span>娣誨姞Spring鑳藉姏 鍦ㄦ闇瑕佸皢jdbc鍖呬篃鍚屾椂鍔犲叆
3銆?/span>閰嶇疆涓妋ysql鐨勮繛鎺ラ┍鍔?鎷瘋礉mysql椹卞姩鍖咃紝濡傛灉涓嶆嫹璐濇姤閿欏緢璇″紓)
鍦?/span>applicationContext.xml涓繘琛岄厤緗?/span>
鍦?/span>beans鏍囩涓~鍐?/span>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/myspringjdbcdb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
4銆?/span>鍒涘緩鍖呯粨鏋勫茍涓斿啓鍑虹被錛堟瘡涓被涓彲浠ユ病鍐呭錛?/span>
5銆?/span>姣忎釜綾諱腑鐨勬簮浠g爜
UserDao.java
UserDaoImp.java
姝ら」鍐欏畬濉啓鍦?/span>applicationContext.xml涓繘琛岄厤緗?/span>
鍦?/span>beans鏍囩涓~鍐?/span>
User.java
姣忎釜鎴愬憳鍙橀噺閮藉啓涓奼et鍜宻et鏂規硶
騫朵笖鍦ㄦ綾諱腑榪樿鍔犲叆
姝ら」鍐欏畬濉啓鍦?/span>applicationContext.xml涓繘琛岄厤緗?/span>
鍦?/span>beans鏍囩涓~鍐?/span>
嫻嬭瘯綾籘estAction.java
鎵撳嵃鍑虹粨鏋滐細
org.springframework.dao.InvalidDataAccessApiUsag
闂錛?span style="font-family: 瀹嬩綋; color: #0055ff; font-size: 14px">鍙妯″紡涓?FlushMode.NEVER/MANUAL)鍐欐搷浣滀笉琚厑璁革細鎶婁綘鐨凷ession鏀規垚FlushMode.COMMIT/AUTO鎴栬呮竻闄や簨鍔″畾涔変腑鐨剅eadOnly鏍囪銆?/span>
閿欒鍘熷洜:
瑙e喅鏂規硶:
web.xml閰嶇疆閲屾坊鍔?/span> 濡傛灉鍦ㄤ氦緇檚pring 綆$悊鐨勬儏鍐典笅錛屽湪beans.xml 閲岀殑閰嶇疆
<filter>
</filter>
<filter-mapping>
</filter-mapping>
鏂規硶浜屻佸彲浠ヤ嬌鐢ㄦ湇鍔″櫒鐜鍙橀噺
log4j鐨勯厤緗枃浠舵敮鎸佹湇鍔″櫒鐨剉m鐨勭幆澧冨彉閲忥紝鏍煎紡綾諱技${catalina.home}
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=${catalina.home}/logs/logs_tomcat.log
log4j.appender.R.MaxFileSize=10KB
鍏朵腑鐨?{catalina.home}騫墮潪windows緋葷粺鐨勭幆澧冨彉閲忥紝榪欎釜鐜鍙橀噺灝變笉闇瑕佸湪Windows緋葷粺鐨勭幆澧冨彉閲忎腑璁劇疆銆備箣鎵浠ヨ繖鏍鳳紝浣犲彲浠ョ湅鐪媡omcat\bin\catalina.bat(startup,shutdown閮芥槸璋冪敤榪欎釜)閲岄潰鑷甫鏈?Dcatalina.home= "%CATALINA_HOME%" 銆傜戶鎵胯繖涓濇兂錛屾墍浠ヤ綘涔熷彲浠ヨ嚜宸辮瀹氫竴涓弬鏁?Dmylog.home="D:/abc/log"鍒板搴旂殑鏈嶅姟鍣╦ava鍚姩鐨剉m鍙傛暟涓?
鏂規硶涓夈侀氳繃servlet鍒濆鍖杋nit()鏂規硶涓姞杞絝ile灞炴у疄鐜扮浉瀵硅礬寰?
鍏蜂綋瀹炵幇:鍋氫竴涓猻ervlet,鍦ㄧ郴緇熷姞杞界殑鏃跺?灝辨妸properties鐨勬枃浠惰鍒頒竴涓猵roperties鏂囦歡涓?閭d釜file鐨勫睘鎬у?鎴戜嬌鐢ㄧ殑鏄浉瀵圭洰褰?鏀規帀(鍓嶉潰鍔犱笂緋葷粺鐨勬牴鐩綍),璁╁悗鎶婅繖涓猵roperties瀵硅薄璁劇疆鍒皃ropertyConfig涓幓,榪欐牱灝卞垵濮嬪寲浜唋og鐨勮緗?鍦ㄥ悗闈㈢殑浣跨敤涓氨鐢ㄤ笉鐫鍐嶉厤緗簡
涓鑸湪鎴戜滑寮鍙戦」鐩繃紼嬩腑,log4j鏃ュ織杈撳嚭璺緞鍥哄畾鍒版煇涓枃浠跺す,榪欐牱濡傛灉鎴戞崲涓涓幆澧?鏃ュ織璺緞鍙堥渶瑕侀噸鏂頒慨鏀?姣旇緝涓嶆柟渚?鐩墠鎴戦噰鐢ㄤ簡鍔ㄦ佹敼鍙樻棩蹇楄礬寰勬柟娉曟潵瀹炵幇鐩稿璺緞淇濆瓨鏃ュ織鏂囦歡
(1).鍦ㄩ」鐩惎鍔ㄦ椂,瑁呭叆鍒濆鍖栫被:
public class Log4jInit extends HttpServlet {
static Logger logger = Logger.getLogger(Log4jInit.class);
public Log4jInit() {
}
public void init(ServletConfig config) throws ServletException {
String prefix = config.getServletContext().getRealPath("/");
String file = config.getInitParameter("log4j");
String filePath = prefix + file;
Properties props = new Properties();
try {
FileInputStream istream = new FileInputStream(filePath);
props.load(istream);
istream.close();
//toPrint(props.getProperty("log4j.appender.file.File"));
String logFile = prefix + props.getProperty("log4j.appender.file.File");//璁劇疆璺緞
props.setProperty("log4j.appender.file.File",logFile);
PropertyConfigurator.configure(props);//瑁呭叆log4j閰嶇疆淇℃伅
} catch (IOException e) {
toPrint("Could not read configuration file [" + filePath + "].");
toPrint("Ignoring configuration file [" + filePath + "].");
return;
}
}
public static void toPrint(String content) {
System.out.println(content);
}
}
瀹為檯涓妉og4j鐨勯厤緗枃浠秎og4j.properties濡備負榛樿鍚嶏紝鍙斁緗湪JVM鑳借鍒扮殑classpath閲岀殑浠繪剰鍦版柟錛屼竴鑸槸鏀懼湪WEB- INF/classes鐩綍涓嬨傚綋log4j鐨勯厤緗枃浠朵笉鍐嶆槸榛樿鍚嶏紝鍒欓渶瑕佸彟澶栧姞杞藉茍緇欏嚭鍙傛暟錛屽涓?“ropertyConfigurator.configure(props);//瑁呭叆log4j閰嶇疆淇℃伅”
(2).Web.xml涓殑閰嶇疆
<servlet>
<servlet-name>log4j-init</servlet-name>
<servlet-class>Log4jInit</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
娉ㄦ剰錛氫笂闈㈢殑load-on-startup璁句負0錛屼互渚垮湪Web瀹瑰櫒鍚姩鏃跺嵆瑁呭叆璇ervlet銆俵og4j.properties鏂囦歡鏀懼湪鏍圭殑properties瀛愮洰褰曚腑錛屼篃鍙互鎶婂畠鏀懼湪鍏跺畠鐩綍涓傚簲璇ユ妸.properties鏂囦歡闆嗕腑瀛樻斁錛岃繖鏍鋒柟渚跨鐞嗐?
(3).log4j.properties涓嵆鍙厤緗甽og4j.appender.file.File涓哄綋鍓嶅簲鐢ㄧ殑鐩稿璺緞.
浠ヤ笂鏄綉涓妉og4j鏃ュ織鏂囦歡鐨勭浉瀵硅礬寰勯厤緗殑涓夌鏂規硶錛堟垜鑳芥壘鍒扮殑灝變笁縐嶏級錛屽垎鏋愶細
鏂規硶涓涓昏鏄墿灞曚簡log4j鐨凴ollingFileAppender綾伙紝鍏朵粬鐨凢ileAppender鍚屾牱閬撶悊銆傛墿灞曠殑鏂規硶錛屽氨鏄敤涓涓瓙綾誨幓瑕嗙洊setFile鏂規硶錛岃繖涓柟娉曞湪log4j璇誨彇閰嶇疆鏂囦歡鐢熸垚appender鐨勬椂鍊欒皟鐢紝浼犲叆鐨勫氨鏄厤
緗枃浠朵腑鐨勮礬寰勶紝榪欐牱鎴戝氨鍙互鎸夌収鑷繁鐨勬兂娉曞湪璺緞鍓嶉潰鍔犱笂鏍硅礬寰勪簡銆傝繖縐嶆柟娉曞彲浠ュ湪log4j.properties涓敤鐩稿璺緞鑷敱閰嶇疆log4j.appender.A1.File灞炴ф潵鍐沖畾鐢熸垚鐨勬棩蹇楃浉瀵箇eb搴旂敤鏍?
鐩綍鐨勪綅緗?
鏂規硶浜屾槸鍒╃敤鏈嶅姟鍣╲m涓凡緇忓瓨鍦ㄧ殑鐜鍙橀噺濡?{catalina.home}鏉ヨ緗浉瀵逛簬${catalina.home}鐨勬棩蹇楄礬寰勶紝鏃ュ織鍙兘鏀懼埌鏈嶅姟鍣ㄥ瓙鐩綍閲岋紝鑰屼笖濡傛灉鏄敤鐨勫叾瀹冩湇鍔″櫒錛屽垯瑕佹敼瀵瑰簲鐨勭幆澧冨彉閲忋傛鏂規硶騫沖彴縐繪涓嶆柟渚褲?
鏂規硶涓夋槸鎵╁睍ActionServlet綾伙紝瑕嗙洊鍏秈nit()鏂規硶錛屾柊鏂規硶涓澆鍏og4j.properties浣嶇疆鐨勫弬鏁幫紝鍙互鑷敱閰嶇疆log4j鐨勯厤緗枃浠剁殑鍚嶅瓧鍜屽瓨鏀句綅緗備篃鍙嚜鐢遍厤緗甽og4j鏃ュ織鏂囦歡鐨勭浉瀵逛簬褰撳墠搴旂敤鐨勮礬寰勩傝
緇嗕唬鐮佸涓嬶細
紼嬪簭浠g爜
package wbb.bysxxglxt.util;
import org.apache.struts.action.*;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import javax.servlet.ServletException;
import java.util.Properties;
import java.io.InputStream;
import org.apache.log4j.PropertyConfigurator;
import java.io.FileInputStream;
import java.io.IOException;
public class ExtendedActionServlet extends ActionServlet {
private Log log = LogFactory.getLog(this.getClass().getName());
public ExtendedActionServlet() {}
public void init() throws ServletException {
log.info(
"Initializing, My MyActionServlet init this System's Const Variable");
String prefix = this.getServletConfig().getServletContext().getRealPath(
"/");
String file = this.getServletConfig().getInitParameter("log4j");
String filePath = prefix + file;
Properties props = new Properties();
System.out.println(prefix);
System.out.println(file);
System.out.println(filePath);
try {
FileInputStream log4jStream = new FileInputStream(filePath);
props.load(log4jStream);
log4jStream.close();
String logFile = prefix +
props.getProperty("log4j.appender.A1.File"); //璁劇疆璺緞
System.out.println(logFile);
props.setProperty("log4j.appender.A1.File", logFile);
PropertyConfigurator.configure(props); //瑁呭叆log4j閰嶇疆淇℃伅
} catch (IOException e) {
e.printStackTrace();
}
log.info("Initializing, end My Init");
super.init();//搴旂敤浜唖truts,姝ゆ柟娉曚笉鑳界渷錛孉ctionServlet瑕嗙洊浜嗙殑姝ゆ柟娉曚腑鏈夊緢澶氶噸瑕佹搷浣?
}
}
**********************搴旂敤web.xml 鍏抽敭閮ㄥ垎***************************
紼嬪簭浠g爜
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>wbb.bysxxglxt.util.ExtendedActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>log4j</param-name>
<param-value>properties\log4j.properties</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
娉ㄦ剰log4j鍙傛暟涓浉瀵硅礬寰勭殑鏂滄潬綰跨殑鍐欐硶錛岃屼笖log4j灞炴ф枃浠跺鏀劇疆鍦╳eb-inf/classes鐩綍鎴杦eb-inf絳夌洰褰曚腑鏈濂芥敼鍚嶏紝鍥犱負鍦ㄥ姞杞芥Servlet涔嬪墠錛屾湇鍔″櫒濡倀omcat鍚姩鏃朵細鑷姩鎼滅儲web-inf鐩綍鍜寃eb-inf/classes鐩綍涓璴og4j.properties鏂囦歡錛屽鏈夊垯鑷姩鍔犺澆銆俵og4j灞炴ф枃浠跺姞杞藉悗,鐢變簬璇ュ睘鎬ф枃浠朵腑log4j.appender.A1.File鐨勫肩敤鐨勬槸鐩稿璺緞錛岃嚜鍔ㄥ姞杞介厤緗究浼氬嚭閿欙細
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: WEB-INF\logs\bysxxglxt.log (緋葷粺鎵句笉鍒版寚瀹氱殑璺緞銆?
涓嶇煡閬搇og4j涓轟粈涔堜細榪欎箞鏃╄嚜鍔ㄥ惎鍔ㄣ傚敖綆″悗闈㈠姞杞芥墿灞曠殑ActionServlet涓紜緗簡log4j灞炴ф枃浠跺茍姝e父鍔犺澆浜嗭紝浣嗘姤鐨勮繖涓敊榪樻槸鎬笉鐖界殑錛屼簬鏄彧鏈夋洿鏀筶og4j灞炴ф枃浠跺悕瀛楁垨鑰呮洿鏀瑰叾瀛樻斁浣嶇疆錛岃鍏朵笉鑳借嚜鍔ㄥ姞杞戒簡錛屼笉榪囪繕鏄湁涓や釜璀﹀憡錛?
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
榪欐牱鍋氬氨綆楁槸鎺╄崇洍閾冧簡錛屽鏋滀綘鏈夋洿濂界殑瑙e喅鍔炴硶錛屽笇鏈涜兘鍦ㄦ璐村嚭鏉ワ紝澶у涓璧風爺絀躲?
********************log4j.properties*****************************
### 璁劇疆logger綰у埆 ###
紼嬪簭浠g爜
log4j.rootLogger=DEBUG,stdout,A1
### appender.stdout杈撳嚭鍒版帶鍒跺彴 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%-5p] [%t] ( %F,%L ) - %m%n
### appender.A1杈撳嚭鍒版棩蹇楁枃浠?###
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=WEB-INF\\logs\\bysxxglxt.log
##娉ㄦ剰涓婇潰鏃ュ織鏂囦歡鐩稿搴旂敤鏍圭洰褰曡礬寰勭殑鍐欐硶
log4j.appender.A1.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.A1.Append=true
## 杈撳嚭DEBUG綰у埆浠ヤ笂鐨勬棩蹇?
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern= [%5p] [BYSXXGLXT] %d{yyyy-MM-dd HH:mm:ss}: %-4r [%t] ( %F,%L ) - %m%n
鍦╯rc涓嬬紪鍐?涓?properties鏂囦歡
1.log4j.properties 涓嬮潰鏄唴瀹?/p>
##LOGGERS
#define a logger
log4j.rootLogger=INFO,console,file
##APPENDERS
#define an appender named console
log4j.appender.console=org.apache.log4j.ConsoleAppender
#define an appender named file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=d:/demo_log.txt
#set the log's size
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=20
##LAYOUTS
#assign a SimpleLayout to console appender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
#assign a PatternLayout to file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}]%m%n
2.
simplelog.properties涓嬮潰鏄唴瀹?/p>
log.apache.commons.logging.simplelog.defaultlog=info
3.
commons-logging.properties涓嬮潰鏄唴瀹?/p>
##set Log as Log4J
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger