ava要運(yùn)行html代碼,需要運(yùn)行在服務(wù)器端,也就是servlet容器中,經(jīng)過(guò)容器編譯解析,返回html靜態(tài)內(nèi)容,示例如下:
成都創(chuàng)新互聯(lián)公司是專業(yè)的濂溪網(wǎng)站建設(shè)公司,濂溪接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行濂溪網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
在servlet里面寫就可以了
引入一系列包
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
public class Servlet1 extends HttpServlet {
public void doGet(ServletRequest req,ServletResponse res)throws ServletException, IOException{try{PrintWriter pw=res.getWriter();//在瀏覽器輸出需要
pw.println("scriptscript");}catch(exception e){="" e.printstacktrace();="" 為發(fā)現(xiàn)調(diào)試錯(cuò)誤}}}=""
推薦你幾本書,按順序?qū)W習(xí)就好了,剛開始學(xué)的時(shí)候代碼不會(huì)寫很正常,但是應(yīng)該要模仿著寫,該背的還是要背,有些模式得背得很熟,當(dāng)然是不是死記硬背是要理解了背,最后自己找點(diǎn)題目練練,多敲敲代碼就行了
一、Java編程入門類
對(duì)于沒(méi)有Java編程經(jīng)驗(yàn)的程序員要入門,隨便讀什么入門書籍都一樣,這個(gè)階段需要快速的掌握J(rèn)ava基礎(chǔ)語(yǔ)法和基本用法,宗旨就是“囫圇吞棗不求甚解”,先對(duì)Java熟悉起來(lái)再說(shuō)。用很短的時(shí)間快速過(guò)一遍Java語(yǔ)法,連懵帶猜多寫寫代碼,要“知其然”。
1、《Java編程思想》
它對(duì)于基本的面向?qū)ο笾R(shí)有比較清楚的交待,對(duì)Java基本語(yǔ)法,基本類庫(kù)有比較清楚的講解,可以幫助打下一個(gè)良好的Java編程基礎(chǔ)。這本書的缺點(diǎn)是實(shí)在太厚,也比較羅嗦,不適合現(xiàn)代人快節(jié)奏學(xué)習(xí),因此看這本書要懂得取舍,不是每章每節(jié)都值得一看的,挑重點(diǎn)的深入看就可以了
2、《Agile Java》中文版
這本書一大特點(diǎn)是以單元測(cè)試和TDD來(lái)貫穿全書的,在教Java各種重要的基礎(chǔ)知識(shí)的過(guò)程中,潛移默化的影響編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語(yǔ)法為基礎(chǔ)講解,要學(xué)習(xí)JDK5.0的新語(yǔ)法也不錯(cuò)。還有這本書對(duì)于內(nèi)容取舍也非常得當(dāng),Java語(yǔ)言畢竟類庫(kù)龐大,可以講的內(nèi)容太多,這本書選擇的內(nèi)容以及內(nèi)容的多寡都很得當(dāng),可以以最少的時(shí)間掌握J(rèn)ava最重要的知識(shí),順便培養(yǎng)出來(lái)優(yōu)秀的編程思路,真是一本不可多得的好書
二、Java編程進(jìn)階類
打下一個(gè)良好的Java基礎(chǔ),還需要更多的實(shí)踐經(jīng)驗(yàn)積累,培養(yǎng)良好的編程習(xí)慣,提高代碼質(zhì)量
1、《重構(gòu) 改善既有代碼的設(shè)計(jì)》
這本書名氣很大,不用多介紹,可以在閑暇的時(shí)候多翻翻,多和實(shí)踐相互印證。這本書產(chǎn)生影響是潛移默化的。
2、《測(cè)試驅(qū)動(dòng)開發(fā) by Example》
本書最大特點(diǎn)是很薄,看起來(lái)沒(méi)有什么負(fù)擔(dān)。這本書的作用是通過(guò)實(shí)戰(zhàn)培養(yǎng)TDD的思路
三、Java架構(gòu)師之路
到這個(gè)階段,應(yīng)該已經(jīng)非常嫻熟的運(yùn)用Java編程,而且有了一個(gè)良好的編程思路和習(xí)慣了,但是可能還缺乏對(duì)應(yīng)用軟件整體架構(gòu)的把握,現(xiàn)在就是邁向架構(gòu)師的第一步
1、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著作,非常經(jīng)典,從這本書中的代碼誕生了 springframework。但是好像這本書沒(méi)有中譯本。
2、《Expert One-on-One J2EE Development without EJB》
這本書由gigix組織翻譯,多位業(yè)界專家參與,雖然署名譯者是JavaEye,其實(shí)JavaEye出力不多,實(shí)在是忝居譯者之名。以上兩本書都是Rod Johnson的經(jīng)典名著,Java架構(gòu)師的必讀書籍。
3、《企業(yè)應(yīng)用架構(gòu)模式》
Martin的又一本名著,這本書更適合做框架的人去看
4、《敏捷軟件開發(fā)原則、模式與實(shí)踐》
Uncle Bob的名著,敏捷的經(jīng)典名著,這本書比較特別,與其說(shuō)是講軟件開發(fā)過(guò)程的書,不如說(shuō)講軟件架構(gòu)的書,本書用了很大篇幅講各種面向?qū)ο筌浖_發(fā)的各種模式
四、軟件開發(fā)過(guò)程
了解軟件開發(fā)過(guò)程不單純是提高程序員個(gè)人的良好編程習(xí)慣,也是增強(qiáng)團(tuán)隊(duì)協(xié)作的基礎(chǔ)。
1、《UML精粹》
UML其實(shí)和軟件開發(fā)過(guò)程沒(méi)有什么必然聯(lián)系,卻是軟件團(tuán)隊(duì)協(xié)作溝通,撰寫軟件文檔需要的工具。但是UML真正實(shí)用的圖不多,看看這本書已經(jīng)足夠了,完全沒(méi)有必要去啃《UML用戶指南》之類的東西。
2、《解析極限編程 擁抱變化》
XP這是Kent Beck名著的第二版,中英文對(duì)照,必讀書籍。
3、《統(tǒng)一軟件開發(fā)過(guò)程》
UP其實(shí)UP和敏捷并不一定沖突,UP也非常強(qiáng)調(diào)迭代,測(cè)試,但是UP強(qiáng)調(diào)的文檔和過(guò)程驅(qū)動(dòng)卻是敏捷所不取的
4、《敏捷建模》
AMScott Ambler的名著,這本書非常的progmatic,既敏捷又UP,把敏捷和UP統(tǒng)一起來(lái)了,又提出了很多progmatic的建議和做法
import?java.util.Scanner;
import?java.util.Calendar;
public?class?Yugi?{
public?static?void?main(String[]?args)?{
Scanner?scanner?=?new?Scanner(System.in);
System.out.println("輸入一個(gè)時(shí)間:?");
String[]?strs?=?scanner.nextLine().trim().split("[^\\d]+");
scanner.close();
Calendar?calendar?=?Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,?Integer.parseInt(strs[0]));
calendar.set(Calendar.MINUTE,?Integer.parseInt(strs[1]));
calendar.set(Calendar.SECOND,?Integer.parseInt(strs[2]));
calendar.add(Calendar.SECOND,?1);
System.out.format("下一秒是:%1$tH點(diǎn)%1$tM分%1$tS秒",?calendar);
}
}
public class FenShu{
int fenZi,fenMu;
double value;
FenShu(int fenZi,int fenMu){
this.fenZi=fenZi;
this.fenMu=fenMu;
value=(double)fenZi/fenMu;
}
boolean isGreaterThan(FenShu f){
if(valuef.value){
return true;
}
else{
return false;
}
}
boolean isSmallerThan(FenShu f){
if(valuef.value){
return true;
}
else{
return false;
}
}
boolean isEqualsTo(FenShu f){
if(value==f.value){
return true;
}
else{
return false;
}
}
public static void main(String args[]){
FenShu f1=new FenShu(1,3);
FenShu f2=new FenShu(2,3);
System.out.println(f1.isGreaterThan(f2));
System.out.println(f1.isSmallerThan(f2));
System.out.println(f1.isEqualsTo(f2));
}
}
很簡(jiǎn)單的應(yīng)用,為了節(jié)省字?jǐn)?shù),代碼注釋我就不加了
首先是顯示層,LoinWindow:
import?java.awt.FlowLayout;
import?java.awt.GridBagConstraints;
import?java.awt.GridBagLayout;
import?java.awt.GridLayout;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.FocusEvent;
import?java.awt.event.FocusListener;
import?javax.swing.JButton;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
import?javax.swing.JTextField;
import?javax.swing.border.EmptyBorder;
public?class?LoinWindow?extends?JFrame?implements?ActionListener,?FocusListener?{
private?JPanel?mainPanel,?namePanel,?btnPanel;
private?JTextField?tfName,?tfPsd;
private?JButton?btnLogin,?btnCancel;
private?static?final?int?WIDTH?=?300;
private?static?final?int?HEIGHT?=?200;
private?LoginService?service?=?new?LoginService();
public?LoinWindow()?{
super("登錄窗體");
}
public?void?launch()?{
setSize(WIDTH,?HEIGHT);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridLayout?mainLayout?=?new?GridLayout(2,?1);
mainLayout.setVgap(10);
mainPanel?=?new?JPanel(mainLayout);
GridBagLayout?nameLayout?=?new?GridBagLayout();
namePanel?=?new?JPanel(nameLayout);
namePanel.setBorder(new?EmptyBorder(10,?10,?10,?10));
JLabel?nameLabel?=?new?JLabel("姓名:");
tfName?=?new?JTextField();
JLabel?psdLabel?=?new?JLabel("密碼:");
tfPsd?=?new?JTextField();
JLabel?blank?=?new?JLabel("?");
namePanel.add(nameLabel);
namePanel.add(tfName);
namePanel.add(blank);
namePanel.add(psdLabel);
namePanel.add(tfPsd);
GridBagConstraints?s?=?new?GridBagConstraints();
s.fill?=?GridBagConstraints.BOTH;
s.gridwidth?=?1;
s.weightx?=?0;
s.weighty?=?0;
nameLayout.setConstraints(nameLabel,?s);
s.gridwidth?=?0;
s.weightx?=?1;
s.weighty?=?0;
nameLayout.setConstraints(tfName,?s);
s.gridwidth?=?0;
s.weightx?=?4;
s.weighty?=?0;
nameLayout.setConstraints(blank,?s);
s.gridwidth?=?1;
s.weightx?=?0;
s.weighty?=?0;
nameLayout.setConstraints(psdLabel,?s);
s.gridwidth?=?3;
s.weightx?=?1;
s.weighty?=?0;
nameLayout.setConstraints(tfPsd,?s);
FlowLayout?btnLayout?=?new?FlowLayout();
btnLayout.setAlignment(FlowLayout.CENTER);
btnPanel?=?new?JPanel(btnLayout);
btnLogin?=?new?JButton("確定");
btnCancel?=?new?JButton("取消");
btnPanel.add(btnLogin);
btnPanel.add(btnCancel);
btnCancel.addActionListener(this);
btnLogin.addActionListener(this);
mainPanel.add(namePanel);
mainPanel.add(btnPanel);
setContentPane(mainPanel);
tfName.addFocusListener(this);
tfPsd.addFocusListener(this);
pack();
setSize(WIDTH,?HEIGHT);
setLocationRelativeTo(null);
}
@Override
public?void?actionPerformed(ActionEvent?e)?{
Object?source?=?e.getSource();
if(source?==?btnCancel)?{
System.exit(0);
}?else?if(source?==?btnLogin)?{
String?username?=?tfName.getText();
String?password?=?tfPsd.getText();
boolean?success?=?service.login(username,?password);
if(success)?{
warn("成功",?"登錄成功!");
}?else?{
warn("失敗",?"您輸入的用戶名或密碼錯(cuò)誤?!");
}
}
}
@Override
public?void?focusGained(FocusEvent?arg0)?{
}
@Override
public?void?focusLost(FocusEvent?e)?{
Object?source?=?e.getSource();
if(source?==?tfName)?{
String?username?=?tfName.getText();
try?{
service.matchUsername(username);
}?catch?(LoginException?e1)?{
warn("驗(yàn)證錯(cuò)誤",?e1.getMessage());
}
}?else?if(source?==?tfPsd)?{
String?password?=?tfPsd.getText();
try?{
service.matchPassword(password);
}?catch?(LoginException?e1)?{
warn("驗(yàn)證錯(cuò)誤",?e1.getMessage());
}
}
}
private?void?warn(String?title,?String?msg)?{
JOptionPane.showMessageDialog(null,?msg,?title,?JOptionPane.INFORMATION_MESSAGE);
}
public?static?void?main(String[]?args)?{
new?LoinWindow().launch();
}
}
然后是模型層:LoginDao
public?class?LoginDao?{
public?boolean?login(String?username,?String?password)?{
if(username.equals("admin")??password.equals("12345"))?{
return?true;
}
return?false;
}
}
LoginService
import?java.util.regex.Pattern;
public?class?LoginService?{
private?static?final?Pattern?LOGIN_PATTERN?=?Pattern.compile("[a-zA-Z]+");
private?static?final?Pattern?PASSWORD_PATTERN?=?Pattern.compile("[1-9]+");
private?LoginDao?dao?=?new?LoginDao();
public?boolean?matchUsername(String?username)?throws?LoginException?{
if(null?==?username?||?username.isEmpty())?{
return?false;
}
if(!LOGIN_PATTERN.matcher(username).matches())?{
throw?new?LoginException("您輸入的用戶名不合法,請(qǐng)輸入英文!");
}
return?true;
}
public?boolean?matchPassword(String?password)?throws?LoginException?{
if(null?==?password?||?password.isEmpty())?{
return?false;
}
if(!PASSWORD_PATTERN.matcher(password).matches())?{
throw?new?LoginException("您輸入的密碼不合法,請(qǐng)輸入數(shù)字!");
}
return?true;
}
public?boolean?login(String?username,?String?password)?{
if(null?==?username?||?username.isEmpty())?{
return?false;
}
if(null?==?password?||?password.isEmpty())?{
return?false;
}
if(!dao.login(username,?password))?{
return?false;
}
return?true;
}
}
LoginException
public?class?LoginException?extends?Exception?{
public?LoginException(String?arg0)?{
super(arg0);
}
}
不知道分層設(shè)計(jì)思想是不是我想的這樣
package?test;
import?java.awt.FlowLayout;
import?java.text.SimpleDateFormat;
import?java.util.Calendar;
import?java.util.Date;
import?java.util.GregorianCalendar;
import?javax.swing.JFrame;
import?javax.swing.JLabel;
public?class?FrameDemo?extends?JFrame?implements?Runnable?{
public?void?run()?{
try{
while(true){
Date?date=new?Date();
SimpleDateFormat?sdf=new?SimpleDateFormat("yyyy年MM月");
SimpleDateFormat?sdf1=new?SimpleDateFormat("dd");
SimpleDateFormat?sdf2=new?SimpleDateFormat("hh:mm:ss");
String?week=getWeekOfDate(date);
GregorianCalendar?ca?=?new?GregorianCalendar();??
String?apm="";
int?check=ca.get(GregorianCalendar.AM_PM);
if(check==0){
apm="上午";
}else?if(check==1){
apm="下午";
}
JLabel?jl?=?new?JLabel("html"
+?"div?align='center'"+sdf.format(date)+"/div"
+?"div?align='center'font?size=50"+sdf1.format(date)+"/font日/div"
+?"div?align='center'"+week+"/div"
+?"div?align='center'"+apm+sdf2.format(date)+"/div"
+?"/html");
add(jl);
setLayout(new?FlowLayout());
setSize(150,150);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
Thread.sleep(1000);
//jl.setText(null);
remove(jl);
}
}catch(Exception?e){}
}
public?static?String?getWeekOfDate(Date?dt)?{
String[]?weekDays?=?{"星期日",?"星期一",?"星期二",?"星期三",?"星期四",?"星期五",?"星期六"};
Calendar?cal?=?Calendar.getInstance();
cal.setTime(dt);
int?w?=?cal.get(Calendar.DAY_OF_WEEK)?-?1;
if?(w??0)
w?=?0;
return?weekDays[w];
}
public?static?void?main(String[]?args)?{
FrameDemo?mr?=?new?FrameDemo();
Thread?t1?=?new?Thread(mr);
t1.start();
}
}