2008年9月4日
摘要: <!
DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN"
>
<%
@?page?language
=
"
...
閱讀全文
摘要: 首先,先用DAO把數(shù)據(jù)業(yè)務(wù)邏輯部分分離開來,因?yàn)槲抑挥玫組ySQL,所以就省略了工廠類,定了一個(gè)業(yè)務(wù)邏輯的接口及實(shí)現(xiàn)它的類。?????MessageDAO.java??????
package?DAO.iface;import?java.util.List;/**?*//**?*?進(jìn)行數(shù)據(jù)操作的業(yè)務(wù)邏輯類接口的DAO?*?@author?Administrator?*?*/public?int...
閱讀全文
摘要: MySQL 存儲(chǔ)過程參數(shù)有三種類型:in、out、inout。它們各有什么作用和特點(diǎn)呢?
閱讀全文
摘要: 步驟1.一個(gè)簡(jiǎn)單的XML文檔:???XML代碼:<?xml?version="1.0"?encoding="GBK"?>??<StudentInfo>??????<student>??????????<name>趙海波</name>??????????<sex>男</sex>??????????<lesson...
閱讀全文
摘要: 當(dāng)使用DOM解析XML文檔時(shí),使用的是DOM的思想,因而不可避免需要將XML文檔轉(zhuǎn)換成DOM樹。DOM解析器在裝入XML文檔時(shí),已經(jīng)在內(nèi)存中將XML文檔的每個(gè)元素轉(zhuǎn)換成DOM樹的每個(gè)節(jié)點(diǎn)了。
對(duì)于下面的一個(gè)簡(jiǎn)單XML文檔:
xml代碼:
閱讀全文
摘要: 在Java中,可以獲得總的物理內(nèi)存、剩余的物理內(nèi)存、已使用的物理內(nèi)存等信息,本例講解如何取得這些信息,并且獲得在Windows下的內(nèi)存使用率。???? 首先編寫一個(gè)MonitorInfoBean類,用來裝載監(jiān)控的一些信息,包括物理內(nèi)存、剩余的物理內(nèi)存、已使用的物理內(nèi)存、內(nèi)存使用率等字段,該類的代碼如下:package?com.amigo.performance;/**?*//**?*?監(jiān)視信息的J...
閱讀全文
摘要: CharServer.javaimport?java.net.*;import?java.util.*;import?java.io.*;public?class?ChatServer{????ServerSocket?server?=?null;????ArrayList<ClientConn>?clients?=?new?ArrayList<ClientConn>();...
閱讀全文
摘要: 每每涉及到數(shù)據(jù)庫(kù)時(shí),總是死板的硬套那四個(gè)步驟,一直對(duì)數(shù)據(jù)庫(kù)如果封裝成類感到疑惑,晚上看了點(diǎn)資料,有了點(diǎn)感悟,就記下來了。
將一些增刪改查的基本操作都封裝起來,其他類直接調(diào)用方法名,進(jìn)行數(shù)據(jù)的操作,省了一堆無(wú)謂的聲明,實(shí)例化等。。
閱讀全文
摘要: 簡(jiǎn)單分欄式變換加密技術(shù):
(1)將明文消息一行一行寫入預(yù)定長(zhǎng)度的矩形中
(2)一列一列讀消息,但不一定按1、2、3列的順序,也可以按隨機(jī)順序,如2、3、1
(3)得到的消息就是密文消息
注:密鑰為字符的話,就根據(jù)ASII碼的大小進(jìn)行組合。
閱讀全文
摘要: 在Java中關(guān)于時(shí)間的處理有很多種方法,在API中也有好幾個(gè)關(guān)于時(shí)間處理的類,如 Date、Canlendar、GregorianCalendar、SimpleDateFormat、timestamp等...貌似很雜,現(xiàn)在一一整理~
各種時(shí)間類的關(guān)系如下:
閱讀全文
摘要: 設(shè)計(jì)原則:
#找出應(yīng)用中可能需要變化之處,把它們獨(dú)立出來,不要和不需要變化的代碼混在一起(即使是行為)
#針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。(實(shí)例化對(duì)象時(shí)使用多態(tài))
#多用組合,少用繼承
策略模式:定義了算法族,分別封裝起來,讓他們可以互相替換,此模式讓算法的變化獨(dú)立與使用算法的客戶
閱讀全文
凱撒加密法:消息中每個(gè)字母換成向后三個(gè)字母的字母,例如,明文ATUL變成密文DWXO。
MainKaisa.java
1 import javax.swing.JFrame;
2
3 public class MainKaisa {
4
5 /**
6 * @param nonles
7 */
8 public static void main(String[] args) {
9 //實(shí)例化一個(gè)窗體
10 KaisaFrame kaisaFrame = new KaisaFrame();
11 kaisaFrame.setVisible(true);
12 kaisaFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
13
14 }
15
16 }
Kaisa.java
1 mport java.awt.event.ActionEvent;
2 import java.awt.event.ActionListener;
3 import javax.swing.*;
4
5 public class KaisaFrame extends JFrame {
6
7 JLabel jlDackText = new JLabel();
8 JButton btnBrightText = new JButton();
9 JPasswordField jpf = new JPasswordField();
10 JTextField jtf2 = new JTextField();
11 char[] buf;
12
13
14 public KaisaFrame() {
15 this.setSize(300,200); //設(shè)置窗體大小
16 this.setTitle("凱撒加密法");
17 this.setResizable(false);
18
19 jbInit();
20 }
21
22 private void isLetter() {
23 //判斷輸入的內(nèi)容是否為字母
24 buf = jpf.getPassword();
25 for(char c:buf) {
26 if(Character.isLetter(c) == false) {
27 JOptionPane.showMessageDialog(this, "不能為非字符", "Error", JOptionPane.ERROR_MESSAGE);
28 jpf.setText("");
29 jtf2.setText("");
30 return;
31 } else {
32 makeBrightText();
33 }
34 }
35 }
36
37 private void makeBrightText() {
38 // 產(chǎn)生明文
39 char[] arr = new char[buf.length];
40 int index=0,temp;
41 for(char c:buf) {
42 temp = c+3; //字母后移三位
43 if( (temp>90 && temp<97) || temp>122 ) {
44 //若ASCII碼在此區(qū)間則減去26(使字符XYZ,xyz循環(huán)到XAB,xab)
45 temp = temp - 26;
46 arr[index++] = (char)temp;
47 } else {
48 arr[index++] = (char)temp;
49 }
50 }
51
52 String str = new String(arr);
53 jtf2.setText(str);
54
55 }
56
57 private void jbInit() {
58 // 設(shè)置窗體內(nèi)容
59 this.setLayout(null);
60 jlDackText.setText("輸入密文:");
61 jlDackText.setBounds(30, 20, 80, 30);
62 btnBrightText.setText("生成明文:");
63 btnBrightText.setBounds(30, 90, 100, 30);
64 jpf.setBounds(160, 20, 80, 30);
65 jpf.setEchoChar('*');
66 jtf2.setBounds(160, 90, 80, 30);
67 jtf2.setEditable(false);
68
69 this.add(jlDackText);
70 this.add(jpf);
71 this.add(btnBrightText);
72 this.add(jtf2);
73
74 btnBrightText.addActionListener(new ActionListener(){
75
76 @Override
77 public void actionPerformed(ActionEvent e) {
78 isLetter(); //判斷輸入的內(nèi)容是否為字母
79 }
80
81 });
82 }
83
84 }
85
現(xiàn)實(shí)圖解:
往文本框中輸入密文(只限字符),點(diǎn)擊按鈕,即生成相應(yīng)密文。
若輸入為非字符,則彈出錯(cuò)誤框~
簡(jiǎn)單的一個(gè)程序,說明都不用了。。。
Rail Fence Technique:變換加密技術(shù)一種。
??????????????????? 1、將明文消息寫成對(duì)角線序列
??????????????????? 2、將第一步寫出的明文讀入序列
?? RailFence.java
?1?import?java.io.BufferedReader;
?2?import?java.io.FileWriter;
?3?import?java.io.IOException;
?4?import?java.io.InputStreamReader;
?5?import?java.io.PrintWriter;
?6?
?7?public?class?RailFence?{
?8?
?9?????public?static?void?main(String[]?args)?{????????
10?????????char[]?buf;
11?????????String?str?=?new?String("");
12?????????StringBuffer?sb1?=?new?StringBuffer("");
13?????????StringBuffer?sb2?=?new?StringBuffer("");
14?????????
15?????????BufferedReader?in?=?new?BufferedReader(new?InputStreamReader(System.in));
16?????????try?{
17?????????????PrintWriter?out?=?new?PrintWriter(new?FileWriter("d:""czl.txt"));
18?????????????while((str=in.readLine())!=?null)?{
19?????????????????if(str.equalsIgnoreCase("exit"))?break;????//退出操作
20?????????????????System.out.println("明文:"+str);????????//將輸入的字符串打印到控制臺(tái)
21?????????????????out.println("============柵欄加密技術(shù)=============");
22?????????????????out.println("明文:"+str);
23?????????????????buf?=?str.toCharArray();????//將輸入的字符串轉(zhuǎn)變?yōu)樽址麛?shù)組
24?????????????????for(int?i=0;i<buf.length;i++)?{
25?????????????????????//將位置為0、2、4..放在sb1中,單數(shù)放sb2中
26?????????????????????if(i%2?==?0)????
27?????????????????????????sb1.append(buf[i]);????????????
28?????????????????????else
29?????????????????????????sb2.append(buf[i]);
30?????????????????}
31?????????????????out.println("密文:"+sb1.append(sb2));????//合并兩個(gè)數(shù)組????
32?????????????}
33?????????????out.flush();
34?????????????out.close();
35?????????}?catch?(IOException?e)?{
36?????????????e.printStackTrace();
37?????????}
38?????????
39?????}
40?
41?}
???
在成功安裝JDK的前提下,安裝tomcat6.0(假設(shè)安裝路徑為C:,一般選擇FULL安裝,4.0以上版本不用配置環(huán)境變量)系統(tǒng)變量中添加以下環(huán)境變量(假定你的j2sdk安裝在c:"jdk1.6):?
JAVA_HOME=c:"jdk1.6。接著可以啟動(dòng)tomcat,在IE中訪問http://localhost:8080,如果看到tomcat的歡迎頁(yè)面的話說明安裝成功了。
??? 然后對(duì)tomcat進(jìn)行配置:
???
第一步:建立自己的jsp?app目錄:
??????? 1.在webapps目錄下新建一個(gè)目錄,起名叫myapp;?
????? ? 2.myapp下新建一個(gè)目錄WEB-INF,注意,目錄名稱是區(qū)分大小寫的;?
??????? 3.WEB-INF下新建一個(gè)文件web.xml,內(nèi)容如下:?
???
?1?<?xml?version="1.0"?encoding="ISO-8859-1"?>
?2?
?3?<!DOCTYPE?web-app
?4?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"
?5?"http://java.sun.com/dtd/web-app_2_3.dtd">
?6?
?7?<web-app>
?8?<display-name>My?Web?Application</display-name>
?9?<description>
10?A?application?for?test.
11?</description>
12?</web-app>
??
? ?
4.在myapp下新建一個(gè)測(cè)試的jsp頁(yè)面,文件名為index.jsp,文件內(nèi)容如下
? 1?<html>
2?<body>
3?<center>
4?Now?time?is:?<%=new?java.util.Date()%>
5?</center>
6?</body>
7?</html>
??? 5.重啟Tomcat?
???? ?? 6.打開瀏覽器,輸入http://localhost:8080/myapp/index.jsp看到當(dāng)前時(shí)間的話說明就成功了
??? 第二步:建立自己的Servlet:
??? 寫入你的第一個(gè)Servlet:
??? 在你新建的Application myapp/WEB-INF/classes/test目錄下新建HelloWorld.java
??? ?1?package?test;
?2?
?3?import?java.io.*;
?4??import?javax.servlet.*;
?5??import?javax.servlet.http.*;
?6??public?class?HelloWorld?extends?HttpServlet
?7???{
?8?????public?void?doGet(HttpServletRequest?request,HttpServletResponse?response)throws ServletException,IOException
?9????{
10?????response.setContentType("text/html");
11?????PrintWriter?out?=?response.getWriter();
12?????out.println("<html><head><title>");
13?????out.println("This?is?my?first?Servlet");
14?????out.println("</title></head><body>");
15?????out.println("<h1>Hello,World!</h1>");
16?????out.println("</body></html>");
17????
18????}
19????}
??? 把Tomcat中l(wèi)ib里面的servlet-api.jar文件拷貝到C:"JDK"jre"lib"ext中,編譯
HelloWorld.java
??? Servlet必須使用C:"Tomcat"webapps"myapp"WEB-INF這個(gè)目錄下面的web.xml文件進(jìn)行注冊(cè),用EditPlus打開這個(gè)web.xml文件,在<web-app></web-app>添加下面這段程序:
???
?1?package?test;
?2?public?class?TestBean
?3?{
?4?????private?String?name?=null;
?5?????public?TestBean(String?nameInit){
?6?????????this.name?=?nameInit;
?7?????}
?8?????public?void?setName(String?newName){
?9?????????this.name=newName;
10?????}
11?????public?String?getName(){
12?????????return?this.name;
13?????}
14?}
?????? 然后照樣用javac TestBean.java來編譯這個(gè)文件。
????? 2.然后在你新建的應(yīng)用程序目錄myapp下新建一個(gè)新的jsp文件:testBean.jsp
?????? ?1?<%@?page?import="test.TestBean"?%>
?2?<html>
?3?<head>
?4?<title>Test?Bean</title>
?5?</head>
?6?<body>
?7?<center>
?8?<%
?9????TestBean?testBean?=?new?TestBean("Http://czl.cn");
10??%>
11?Java?Bean?Test:
12?????The?author's?blog?address?is<%=testBean.getName()%>
13?</center>
14?</body>
15?</html>
????? 確定各個(gè)文件的位置,如下
????? myapp"index.jsp
myapp"testBean.jsp
myapp"WEB-INF"web.xml
myapp"WEB-INF"classes"test"HelloWorld.class
myapp"WEB-INF"classes"test"TestBean.class
?????? ???? 3.重啟Tomcat如果需要的話,在瀏覽器輸入:http://localhost:8080/myapp/testBean.jsp?幸運(yùn)的話就會(huì)看到:
???? Java Bean Test: The author's blog address isHttp://czl.cn
????
這樣就完成了整個(gè)Tomcat下的jsp、servlet和javabean的配置。
??? ?? 第四步:配置虛擬目錄
????? 打開 Tomcat6.0"conf"server.xml 文件,在 <Host> 和 </Host> 之間加入????
<Context?path="/myapp"?docBase="D:"myapp"?debug="0"?reloadable="true"?crossContext="true"?/>
摘要: String是一個(gè)特殊的包裝類數(shù)據(jù)。即可以用String str = new String("abc");的形式來創(chuàng)建,也可以用String str = "abc";的形式來創(chuàng)建。前者是規(guī)范的類的創(chuàng)建過程,即在Java中,一切都是對(duì)象,而對(duì)象是類的實(shí)例,全部通過new()的形式來創(chuàng)建。Java 中的有些類,如DateFormat類,可以通過該類的getInstance()方法來返回一個(gè)新創(chuàng)建的類,似乎違反了此原則。其實(shí)不然。該類運(yùn)用了單例模式來返回類的實(shí)例,只不過這個(gè)實(shí)例是在該類內(nèi)部通過new()來創(chuàng)建的,而getInstance()向外部隱藏了此細(xì)節(jié)。那為什么在String str = "abc";中,并沒有通過new()來創(chuàng)建實(shí)例,是不是違反了上述原則?其實(shí)沒有。
閱讀全文