锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.鏂板緩涓涓猵roject錛岀劧鍚庡彸鍑婚夋嫨properties-----Java Build Path-----Libraries---AddLibrary---Junit錛屽皢Junit鎻掍歡娣誨姞鍒拌欏圭洰涓?/p>
2.鍦╬roject涓緩绔嬩竴涓狫Demo.java 鍜?Test.java錛孞Demo涓敱涓涓畝鍗曠殑鏂規(guī)硶add(),Test瑕佺戶鎵縏estCase錛屼唬鐮佸涓嬶細 JDemo.java 3.榪愯錛屽彸鍑籎unit Test錛屽湪鎺у埗鍙頒笂浼氬嚭鏉ヤ竴涓狫unit閫夐」鍗★紝濡傛灉鍑虹幇緇塊鑹茬殑bar鍒欒鏄庣▼搴忔紜紝濡傛灉鏄孩棰滆壊鐨刡ar鍒欒鏄庣▼搴忛敊璇紝闇榪涜媯閿欍? 涓嬮潰鐪嬩竴涓狫unit4鐨勪緥瀛?/p>
Junit4涓嶉渶瑕佺戶鎵縏estCase錛屽彧闇浣跨敤@Test鏍囨敞鐨別xpected灞炴э紝 鏂板緩涓涓猵roject錛屽皢JFreeChar鐨刯ar鍖呭鍏ュ埌璇roject錛岀劧鍚庢柊寤轟竴涓猄alesCountServlet .java 浠g爜濡備笅錛?/p>
榪愯紼嬪簭鍚庡氨浼氬湪d鐩樻牴鐩綍涓嬫壘鍒頒竴涓猄alesCount.jpg鐨勬枃浠訛紝鎵撳紑鏄劇ず緇撴灉濡備笅錛?
甯屾湜鍚勪綅澶ц櫨涓嶅悵璧愭暀錛?/p>
涓嬮潰瀵筶og4j榪涜綆鍗曚粙緇嶏細Log4j涓湁涓変釜涓昏鐨勭粍浠訛紝瀹冧滑鍒嗗埆鏄?Logger銆丄ppender鍜孡ayout銆?.Appender鍒欐槸鐢ㄦ潵鎸囨槑灝嗘墍鏈夌殑log淇℃伅瀛樻斁鍒頒粈涔堝湴鏂癸紝Log4j涓敮鎸佸縐峚ppender錛屽 console銆乫iles銆丟UI components銆丯T Event Loggers絳夛紝涓涓狶ogger鍙互鎷ユ湁澶氫釜Appender錛屼篃灝辨槸浣犳棦鍙互灝哃og淇℃伅杈撳嚭鍒板睆騫曪紝鍚屾椂瀛樺偍鍒頒竴涓枃浠朵腑銆?.Layout鐨勪綔鐢ㄦ槸鎺у埗Log淇℃伅鐨勮緭鍑烘柟寮忥紝涔熷氨鏄牸寮忓寲杈撳嚭鐨勪俊鎭?.Log4j涓皢瑕佽緭鍑虹殑Log淇℃伅瀹氫箟浜?縐嶇駭鍒紝渚濇鏄疐ATAL銆丒RROR銆乄ARN銆両NFO銆丏EBUG錛屽綋杈撳嚭鏃訛紝鍙湁綰у埆楂樿繃閰嶇疆鏂囦歡涓瀹氱殑綰у埆淇℃伅鎵嶈兘鐪熸鐨勮緭鍑恒侺og4j鏀寔涓?縐嶆牸寮忕殑閰嶇疆鏂囦歡錛歑ML鏍煎紡鍜?a >Java鐨刾roperty鏍煎紡銆?/p>
鐪嬩竴涓猟emo錛氭柊寤轟竴涓狶og4jDemo鐨刯avaWeb宸ョ▼錛屽緩涓涓狣emo1.java 浠g爜濡備笅: 鍦╳eb.xml涓繘琛岄厤緗紝浠g爜濡備笅錛?
瀵煎叆log4j.jar鍜宭og4j.propertie閰嶇疆鏂囦歡錛岄厤緗枃浠朵唬鐮佸涓嬶細
#綰у埆鐢遍珮鍒頒綆渚濇鏄細fatal銆乪rror銆亀arn銆乮nfo銆乨ebug log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.stdout=org.apache.log4j.ConsoleAppender # %r 鑷▼搴忓紑濮嬪悗娑堣楃殑姣鏁?br />
# %t 琛ㄧず鏃ュ織璁板綍璇鋒眰鐢熸垚鐨勭嚎紼?br />
# %p 琛ㄧず鏃ヤ笓璇彞鐨勪紭鍏堢駭 鏈夊叧浠g爜鐨勮鏄庡凡緇忓湪閰嶇疆鏂囦歡涓浜嗭紝鍦ㄦ灝變笉鍐嶅鍋氳鏄庛?/p>
鍦ㄦ祻瑙堝櫒涓緭鍏ヨ闂湴鍧錛屽湪鎺у埗鍙頒笂灝變細鎵撳嵃鍑轟俊鎭細 2011-01-18 14:52:39,531 [http-8080-1] [com.dr.demo1.Demo1] [INFO] - welcome to log4j demo! 灝卞埌榪欏惂錛屾湁涓嶅鐨勫湴鏂瑰笇鏈涘悇浣嶅ぇ铏句笉鍚濊祼鏁欙紒 鍏蜂綋璇翠竴涓嬫庢牱瀹屾垚涓涓猈eb鐨勫紑鍙戝拰閰嶇疆 1.寤虹珛涓涓戶鎵縃ttpServlet鐨勭被錛屽湪閲岄潰鍐欎粠HttpServlet寰楀埌鐨勬柟娉曪紝鍦℉ttpServlet閲屾湁鍥涗釜甯哥敤鐨勬柟娉曪細doPut錛宒oPost錛宒oGet錛宒oDelete鍏朵腑doGet鍜宒oPost鏈涓哄父鐢ㄣ?/p>
2.鐒跺悗灝辨槸閰嶇疆浜嗭紝鎵撳紑web.xml鏂囦歡
鍏朵腑name1鍜宯ame2蹇呴』鐩哥瓑
3.灝辨槸楠岃瘉鏄惁姝g‘ 涓嬮潰鐪嬩竴涓▼搴?/p>
閰嶇疆鏂囦歡閲屽唴瀹?
楠岃瘉錛氬厛榪愯tomcat鐒跺悗鎵撳紑IE嫻忚鍣紝鍦ㄥ湴鍧鏍忎腑鍐欏叆 http://127.0.0.1:8080/webproject/test 鐒跺悗鍥炶濺錛屼細鐪嬪埌緗戦〉鏄┖鐧界殑錛屼粈涔堜篃娌℃湁 鍦ㄦ帶鍒跺彴涓婁綘浼氱湅瑙佽緭鍑虹殑鍐呭“hello”錛岃繖灝辮鏄庨厤緗垚鍔熶簡錛?/p>
鍦ㄤ笂闈㈢▼搴廳oGet鏂規(guī)硶涓啓鍏?/p>
鎵ц楠岃瘉鎿嶄綔灝變細鍦ㄧ綉欏典笂鏄劇ず
涓嬮潰緇欒涓涓媎oGet鏂規(guī)硶鍜宒oPost鏂規(guī)硶鐨勫尯鍒細
doGet鐨勬柟娉曚細鎶婁綘鐨勪俊鎭啓鍒板湴鍧鏍忎腑錛岃宒oPost鐨勬柟娉曚笉浼?
鐢ㄤ緥瀛愭潵鍋氳鏄庯細
鍦ㄨ宸ョ▼涓嬬殑webroot鏂囦歡澶逛笅寤虹珛涓涓猯ogin.html鏂囦歡
閲岄潰寤虹珛涓涓櫥褰曠晫闈?
body涓殑浠g爜濡備笅
鍦ㄤ笂闈㈢孩棰滆壊鐨勭▼搴忎腑method鐨勬柟娉曟槸涓庝綘鍐欑殑閭d釜紼嬪簭涓敤鐨勬槸doGet鏂規(guī)硶榪樻槸doPost鏂規(guī)硶
榪欐牱鍦ㄥ湴鍧鏍忎腑杈撳叆http://127.0.0.1:8080/webproject/login.html 灝變細浜х敓濡備笅 涓涓櫥闄嗙晫闈?/p>
鍦ㄨ處鍙蜂腑杈撳叆123 鍦ㄥ瘑鐮佷腑杈撳叆456 鐐瑰嚮“鐧誨綍”鎸夐挳錛屽氨浼氳漿鍒頒笅闈㈢晫闈?/p>
鍦ㄨ繖涓綉欏電殑鍦板潃鏍忎腑浣犱細鐪嬪埌 http://127.0.0.1:8080/webproject/test?user=123&password=456 榪欐牱灝卞皢鑷繁鐨勭浉鍏充俊鎭硠闇插嚭鍘諱簡榪欏氨鏄痙oGet鐨勭己鐐?/p>
灝嗕笂榪扮▼搴廠ervlet紼嬪簭涓殑鏂規(guī)硶鏀規(guī)垚doPost鏂規(guī)硶錛屽皢login.html涓殑body涓孩棰滆壊涓殑浠g爜鏀逛負method="post"錛屽湪榪愯涓婇潰緇撴灉錛屽湪璐﹀彿涓緭鍏?23 鍦ㄥ瘑鐮佷腑杈撳叆456 鐐瑰嚮“鐧誨綍”鎸夐挳 鍦板潃鏍忎腑鐨勫唴瀹逛負錛?/p>
http://127.0.0.1:8080/webproject/test 榪欐牱涓嶄細涓㈠け鑷繁鐨勪俊鎭?/p>
]]>
]]>
浠yElipse 8.5 榪涜璇存槑銆?/p>
assertEquals(a,b)
a鏄惁絳変簬b
assertSame(a,b)
a,b鏄惁寮曠敤鍚屼竴涓璞?/td>
assertNull(a)
a涓虹┖錛宎鏄竴涓璞?/td>
assertNotNull(a)
a涓嶄負絀猴紝a鏄竴涓璞?/td>
assertTrue(a)
a涓虹湡錛宎鍙互鏄竴涓潯浠跺垽鏂鍙?/td>
assertFalse(b)
b涓哄亣錛宐鍙互鏄竴涓潯浠跺垽鏂鍙?/td>
package com.bx.testjunit;
public class JDemo {
int a;
int b;
int result;
public int add(int a,int b){
result = a + b;
return result;
}
}
Test.java
package com.bx.testjunit;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
public class Test extends TestCase{
@Before
public void setUp() throws Exception {
System.out.println("Test :setUp");
}
@After
public void tearDown() throws Exception {
System.out.println("Test :tearDown");
}
public void test(){
JDemo a = new JDemo();
assertEquals(6,a.add(3, 3));
}
}
涓婇潰鐨勭▼搴忕敤鐨勬槸Junit3錛屽繀欏葷戶鎵縏estCase
package com.bx.service;
import org.junit.Test;
public class HelloWorld {
@Test
public void test(){
System.out.println("HelloWord :test");
}
}
涓婇潰鍙槸鍦ㄤ笅鐨勪竴鐐圭偣鎰氳錛屾湁涓嶅鐨勮繕璇峰悇浣嶅ぇ铏炬壒璇勬寚瀵?璋㈣阿錛?/p>
package com.dr.demo;
import java.awt.Color;
import java.awt.Font;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class SalesCountServlet {
protected static void doGet() {
System.out.println("鍥捐〃宸茬粡寤虹珛錛?/span>");
CategoryDataset dataset = getDataSet();
String fileName = "SalesCount.jpg";//鏂囦歡鍚嶇О
JFreeChart chart = ChartFactory.createBarChart3D("浜у搧閿閲忓浘", // 鍥捐〃鏍囬
"浜у搧", // 鐩綍杞寸殑鏄劇ず鏍囩
"閿閲?/span>", // 鏁板艱醬鐨勬樉紺烘爣絳?/span>
dataset, // 鏁版嵁闆?/span>
PlotOrientation.VERTICAL, // 鍥捐〃鏂瑰悜錛氭按騫熾佸瀭鐩?/span>
true, // 鏄惁鏄劇ず鍥句緥(瀵逛簬綆鍗曠殑鏌辯姸鍥懼繀欏繪槸false)
false, // 鏄惁鐢熸垚宸ュ叿
false // 鏄惁鐢熸垚URL閾炬帴
);
configFont(chart);//璁劇疆涓枃鏍煎紡
FileOutputStream fos_jpg = null;
try {
String statImagePath = "d:";//瀛樻斁鍥捐〃鐨勮礬寰?/span>
try {
fos_jpg = new FileOutputStream(statImagePath+ fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
ChartUtilities.writeChartAsJPEG(fos_jpg, 0.5f, chart, 400, 300,null);
} catch (IOException e) {
e.printStackTrace();
}
} finally {
try {
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void configFont(JFreeChart chart){
// 閰嶇疆瀛椾綋
Font xfont = new Font("瀹嬩綋",Font.PLAIN,12) ;// X杞?nbsp;
Font yfont = new Font("瀹嬩綋",Font.PLAIN,12) ;// Y杞?nbsp;
Font kfont = new Font("瀹嬩綋",Font.PLAIN,12) ;// 搴曢儴
Font titleFont = new Font("闅朵功", Font.BOLD , 25) ; // 鍥劇墖鏍囬
CategoryPlot plot = chart.getCategoryPlot();// 鍥懼艦鐨勭粯鍒剁粨鏋勫璞?nbsp;
// 鍥劇墖鏍囬
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
// 搴曢儴
chart.getLegend().setItemFont(kfont);
// X 杞?nbsp;
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(xfont);// 杞存爣棰?nbsp;
domainAxis.setTickLabelFont(xfont);// 杞存暟鍊?nbsp;
domainAxis.setTickLabelPaint(Color.BLUE) ; // 瀛椾綋棰滆壊
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 妯醬涓婄殑label鏂滄樉紺?nbsp;
// Y 杞?nbsp;
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setLabelFont(yfont);
rangeAxis.setLabelPaint(Color.BLUE) ; // 瀛椾綋棰滆壊
rangeAxis.setTickLabelFont(yfont);
}
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(20, "閿鍞浘琛?/span>", "鑻規(guī)灉");
dataset.addValue(20, "閿鍞浘琛?/span>", "姊?/span>");
dataset.addValue(30, "閿鍞浘琛?/span>", "棣欒晧");
dataset.addValue(40, "閿鍞浘琛?/span>", "钁¤悇");
dataset.addValue(50, "閿鍞浘琛?/span>", "妗斿瓙");
return dataset;
}
public static void main(String args[]){
doGet();
}
}
package com.dr.demo1;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
public class Demo1 extends HttpServlet{
private static Logger log = Logger.getLogger(Demo1.class);
public void doGet(HttpServletRequest request,HttpServletResponse response){
log.info("welcome to log4j demo!");
}
}
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.dr.demo1.Demo1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
log4j.rootLogger=INFO,R,stdout
#debug 鏃犳硶鎵撳嵃
#log4j.rootLogger=ERROR,R,stdout
#debug/infor/warn 鏃犳硶鎵撳嵃
#log4j.rootLogger=DEBUG,R,stdout
#閮藉彲浠ユ墦鍗?br />
#log4j.rootLogger=warn,R,stdout
#info/debug鏃犳硶鎵撳嵃
#log4j.rootLogger=fatal,R,stdout
#閮戒笉鍙互鎵撳嵃
#log4j.logger.com.cmcc=DEBUG
# 鏃ュ織淇℃伅瀛樻斁鐨勬枃浠朵綅緗?br />
log4j.appender.R.File = ${catalina.home}/logs/fetionwapim.log
log4j.appender.R.DatePattern = yyyy-MM-dd'.log'
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
# %r 涓庢棩蹇楄姹傜浉鍏崇殑綾誨埆鍚嶇О
# %c 鏃ュ織淇℃伅鎵鍦ㄧ殑綾誨悕
# %m%n 琛ㄧず鏃ュ織淇℃伅鐨勫唴瀹?
]]>
]]> <servlet>
<servlet-name>name1</servlet-name>
<servlet-class>綾葷殑璺緞</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>name2</servlet-name>
<url-pattern>/鏄犲皠鍊?/span></url-pattern>
</servlet-mapping>
package com.dr.servlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Servlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
System.out.println("hello");
}
}
<servlet>
<servlet-name>Servl</servlet-name>
<servlet-class>com.dr.servlet.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servl</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
PrintWriter out=null;
try {
out=response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.println("Hello World Servlet");
}
<form name="f1" id="f1" action="/webproject/test" method="get">
<table>
<tr>
<th>璐﹀彿:</th>
<th><input type="text" name="user" id="user"></th>
</tr>
<tr>
<th>瀵嗙爜:</th>
<th><input type="text" name="password" id="password"/></th>
</tr>
<tr>
<th colspan="5" align="center"><input type="submit" value="鐧誨綍"/></th>
</tr>
</table>
</form>
]]>
2.閫夋嫨Next
3.閫夋嫨Tipical鐒跺悗閫夋嫨Next
4.閫夋嫨Install
5.閫夋嫨Next
6.閫夋嫨Next
7.閫夋嫨Finish錛屽氨瀹屾垚浜哅y SQL 鐨勫畨瑁咃紝鎺ヤ笅鏉ユ槸閰嶇疆My SQL
8.閫夋嫨Next
9.閫夋嫨Detailed configuration錛岀劧鍚庨夋嫨Next
10閫夋嫨Developer Machine錛岄夋嫨Next
11.閫夋嫨Mutilfunction Database錛岄夋嫨Next
12.閫夋嫨Next
13.閫夋嫨Manual Setting錛孋oncurrent Connections閫夋嫨1400錛岄夋嫨Next
14.閫夋嫨Next
15.閫夋嫨澶х殑錛熷彿錛孋haracter Set 閫夋嫨utf8錛岄夋嫨Next
16.鍕鵑?#8220;Include Bin Dirctory in Windows PATH”錛岄夋嫨Next
17.濡傛灉浠ュ墠浣跨敤榪囧叾浠栫増鏈紝閭d箞杈撳叆鍘熸潵鐨勫瘑鐮侊紝鐒跺悗鍦ㄨ緭鍏ユ柊鐨勫瘑鐮侊紝濡傛灉娌℃湁鍙渶杈撳叆鏂扮殑瀵嗙爜錛屽嬀閫?#8220;Enable root access from remote machines”錛岄夋嫨Next
18.閫夋嫨Execute錛屽鏋滃嚭鐜板涓嬬晫闈㈣〃紺洪厤緗垚鍔燂紝鍚﹀垯闇閲嶆柊閰嶇疆
鍑虹幇濡備笅鐣岄潰錛?/p>
2.閫夋嫨next
3.鍕鵑?#8220;I accept the terms of the lincense agreement”錛岄夋嫨next
4.閫夋嫨Change錛屾敼鍙樺畨瑁呰礬寰勶紝涓鑸儏鍐典笅瀹夎鍦–鐩樻牴鐩綍涓嬶細
5.閫夋嫨Browse錛屾敼鍙樺畨瑁呰礬寰勶紝鐒跺悗閫夋嫨next
6.閫夋嫨Install錛屽氨浼氬紑濮嬪畨瑁咃紝鏂囦歡姣旇緝澶э紝鎵浠ュ畨瑁呯殑閫熷害姣旇緝鎱?/p>
鎺ヤ笅鏉ユ槸閫夋嫨workspace
7.閫夋嫨浣犵殑workspace鐒跺悗鍗曞嚮ok灝卞畬鎴愪簡錛?/p>