2008年10月16日

          JPBC ing: 留言板之三:留言板JSP代碼

               摘要: <! DOCTYPE?HTML?PUBLIC?"-//W3C//DTD?HTML?4.01?Transitional//EN" > <% @?page?language = " ...  閱讀全文

          posted @ 2008-10-16 23:54 nonels 閱讀(644) | 評(píng)論 (1)編輯 收藏

          JPBC ing: 留言板之二:處理jsp中出現(xiàn)的中文亂碼問(wèn)題--字符過(guò)濾器

          ??????在參數(shù)傳遞過(guò)程中,經(jīng)常會(huì)碰到中文亂碼問(wèn)題,有好多種解決方法,其中一種就是用到過(guò)濾器。

          CharacterEncodingFilter.java
          package?filter;

          import?java.io.IOException;

          import?javax.servlet.Filter;
          import?javax.servlet.FilterChain;
          import?javax.servlet.FilterConfig;
          import?javax.servlet.ServletException;
          import?javax.servlet.ServletRequest;
          import?javax.servlet.ServletResponse;
          /**
          ?*?jsp中文亂碼的Filter過(guò)濾器
          ?*?
          @author?nonels
          ?*
          ?
          */


          public?class?CharacterEncodingFilter?implements?Filter?{
          ????
          protected?String?encoding;????//????字符編碼
          ????protected?boolean?ignore;????//????是否忽略大小寫
          ????public?void?init(FilterConfig?filterConfig)?throws?ServletException?{
          ????????encoding?
          =?filterConfig.getInitParameter("encoding");
          ????????String?value?
          =?filterConfig.getInitParameter("ignore");
          ????????
          if?(value?==?null)?{
          ????????????ignore?
          =?true;
          ????????}
          ?else?if?(value.equalsIgnoreCase("true"))?{
          ????????????ignore?
          =?true;
          ????????}
          ?else?if?(value.equalsIgnoreCase("yes"))?{
          ????????????ignore?
          =?true;
          ????????}

          ????}


          ????
          public?void?doFilter(ServletRequest?request,?ServletResponse?response,
          ????????????FilterChain?filterChain)?
          throws?IOException,?ServletException?{
          ????????
          if?(ignore?==?true?||?encoding?!=?null)?{
          ?????????????request.setCharacterEncoding(encoding);
          ?????????????filterChain.doFilter(request,?response);
          ????????}

          ????}


          ????
          public?void?destroy()?{
          ????????encoding?
          =?null;
          ????}

          ????

          }


          XML中的配置加上以下:
          ??????<filter>
          ????????
          <filter-name>CharacterEncodingFilter</filter-name>
          ????????
          <filter-class>filter.CharacterEncodingFilter</filter-class>
          ????????
          <init-param>
          ????????????
          <param-name>ignore</param-name>
          ????????????
          <param-value>true</param-value>
          ????????
          </init-param>
          ????????
          <init-param>
          ????????????
          <param-name>encoding</param-name>
          ????????????
          <param-value>GBK</param-value>
          ????????
          </init-param>
          ????
          </filter>
          ????
          <filter-mapping>
          ????????
          <filter-name>CharacterEncodingFilter</filter-name>
          ????????
          <url-pattern>/*</url-pattern>
          ????
          </filter-mapping>

          posted @ 2008-10-16 23:51 nonels 閱讀(551) | 評(píng)論 (0)編輯 收藏

          JPBC ing: 留言板之一:用JAVABEAN與DAO封裝數(shù)據(jù)的業(yè)務(wù)邏輯及操作

               摘要: 首先,先用DAO把數(shù)據(jù)業(yè)務(wù)邏輯部分分離開(kāi)來(lái),因?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...  閱讀全文

          posted @ 2008-10-16 23:45 nonels 閱讀(809) | 評(píng)論 (1)編輯 收藏

          2008年10月9日

          MySQL 存儲(chǔ)過(guò)程參數(shù)用法 in, out, inout(轉(zhuǎn))

               摘要: MySQL 存儲(chǔ)過(guò)程參數(shù)有三種類型:in、out、inout。它們各有什么作用和特點(diǎn)呢?  閱讀全文

          posted @ 2008-10-09 12:50 nonels 閱讀(20601) | 評(píng)論 (7)編輯 收藏

          2008年9月28日

          使用SAX解析XML文檔

               摘要: 步驟1.一個(gè)簡(jiǎn)單的XML文檔:???XML代碼:<?xml?version="1.0"?encoding="GBK"?>??<StudentInfo>??????<student>??????????<name>趙海波</name>??????????<sex>男</sex>??????????<lesson...  閱讀全文

          posted @ 2008-09-28 11:09 nonels 閱讀(1771) | 評(píng)論 (5)編輯 收藏

          使用DOM解析XML文檔

               摘要: 當(dāng)使用DOM解析XML文檔時(shí),使用的是DOM的思想,因而不可避免需要將XML文檔轉(zhuǎn)換成DOM樹(shù)。DOM解析器在裝入XML文檔時(shí),已經(jīng)在內(nèi)存中將XML文檔的每個(gè)元素轉(zhuǎn)換成DOM樹(shù)的每個(gè)節(jié)點(diǎn)了。

          對(duì)于下面的一個(gè)簡(jiǎn)單XML文檔:

          xml代碼:
            閱讀全文

          posted @ 2008-09-28 11:03 nonels 閱讀(319) | 評(píng)論 (0)編輯 收藏

          2008年9月15日

          (轉(zhuǎn))Java獲得當(dāng)前性能信息

               摘要: 在Java中,可以獲得總的物理內(nèi)存、剩余的物理內(nèi)存、已使用的物理內(nèi)存等信息,本例講解如何取得這些信息,并且獲得在Windows下的內(nèi)存使用率。???? 首先編寫一個(gè)MonitorInfoBean類,用來(lái)裝載監(jiān)控的一些信息,包括物理內(nèi)存、剩余的物理內(nèi)存、已使用的物理內(nèi)存、內(nèi)存使用率等字段,該類的代碼如下:package?com.amigo.performance;/**?*//**?*?監(jiān)視信息的J...  閱讀全文

          posted @ 2008-09-15 01:39 nonels 閱讀(236) | 評(píng)論 (0)編輯 收藏

          點(diǎn)對(duì)點(diǎn)聊天簡(jiǎn)陋版

               摘要: CharServer.javaimport?java.net.*;import?java.util.*;import?java.io.*;public?class?ChatServer{????ServerSocket?server?=?null;????ArrayList<ClientConn>?clients?=?new?ArrayList<ClientConn>();...  閱讀全文

          posted @ 2008-09-15 01:30 nonels 閱讀(631) | 評(píng)論 (2)編輯 收藏

          2008年9月9日

          數(shù)據(jù)庫(kù)的封裝

               摘要: 每每涉及到數(shù)據(jù)庫(kù)時(shí),總是死板的硬套那四個(gè)步驟,一直對(duì)數(shù)據(jù)庫(kù)如果封裝成類感到疑惑,晚上看了點(diǎn)資料,有了點(diǎn)感悟,就記下來(lái)了。
          將一些增刪改查的基本操作都封裝起來(lái),其他類直接調(diào)用方法名,進(jìn)行數(shù)據(jù)的操作,省了一堆無(wú)謂的聲明,實(shí)例化等。。
            閱讀全文

          posted @ 2008-09-09 23:01 nonels 閱讀(281) | 評(píng)論 (0)編輯 收藏

          2008年9月8日

          Simple Columnar Transposition Technique(簡(jiǎn)單分欄式變換加密技術(shù))

               摘要: 簡(jiǎn)單分欄式變換加密技術(shù):
          (1)將明文消息一行一行寫入預(yù)定長(zhǎng)度的矩形中
          (2)一列一列讀消息,但不一定按1、2、3列的順序,也可以按隨機(jī)順序,如2、3、1
          (3)得到的消息就是密文消息
          注:密鑰為字符的話,就根據(jù)ASII碼的大小進(jìn)行組合。  閱讀全文

          posted @ 2008-09-08 11:57 nonels 閱讀(828) | 評(píng)論 (0)編輯 收藏

          2008年9月4日

          關(guān)于時(shí)間的處理

               摘要: 在Java中關(guān)于時(shí)間的處理有很多種方法,在API中也有好幾個(gè)關(guān)于時(shí)間處理的類,如 Date、Canlendar、GregorianCalendar、SimpleDateFormat、timestamp等...貌似很雜,現(xiàn)在一一整理~

          各種時(shí)間類的關(guān)系如下:  閱讀全文

          posted @ 2008-09-04 21:45 nonels 閱讀(225) | 評(píng)論 (0)編輯 收藏

          Strategy(策略模式)

               摘要: 設(shè)計(jì)原則:
          #找出應(yīng)用中可能需要變化之處,把它們獨(dú)立出來(lái),不要和不需要變化的代碼混在一起(即使是行為)
          #針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)編程。(實(shí)例化對(duì)象時(shí)使用多態(tài))
          #多用組合,少用繼承

          策略模式:定義了算法族,分別封裝起來(lái),讓他們可以互相替換,此模式讓算法的變化獨(dú)立與使用算法的客戶
            閱讀全文

          posted @ 2008-09-04 18:48 nonels 閱讀(226) | 評(píng)論 (0)編輯 收藏

          GUI簡(jiǎn)單實(shí)現(xiàn)凱撒加密法

             凱撒加密法:消息中每個(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(30208030);
          62         btnBrightText.setText("生成明文:");
          63         btnBrightText.setBounds(309010030);
          64         jpf.setBounds(160208030);
          65         jpf.setEchoChar('*');
          66         jtf2.setBounds(160908030);
          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è)程序,說(shuō)明都不用了。。。

          posted @ 2008-09-04 15:51 nonels 閱讀(873) | 評(píng)論 (1)編輯 收藏

          簡(jiǎn)單實(shí)現(xiàn)柵欄加密法

          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?}


          posted @ 2008-09-04 15:48 nonels 閱讀(1704) | 評(píng)論 (2)編輯 收藏

          Tomcat6.0 配置

          ??? 在成功安裝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中訪問(wèn)http://localhost:8080,如果看到tomcat的歡迎頁(yè)面的話說(shuō)明安裝成功了
          ??? 然后對(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.打開(kāi)瀏覽器,輸入
          http://localhost:8080/myapp/index.jsp看到當(dāng)前時(shí)間的話說(shuō)明就成功了

          ???
          第二步:建立自己的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打開(kāi)這個(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來(lái)編譯這個(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的配置。

          ???

          ?? 第四步:配置虛擬目錄

          ????? 打開(kāi) Tomcat6.0"conf"server.xml 文件,在 <Host> 和 </Host> 之間加入????

          <Context?path="/myapp"?docBase="D:"myapp"?debug="0"?reloadable="true"?crossContext="true"?/>

          posted @ 2008-09-04 15:43 nonels 閱讀(676) | 評(píng)論 (0)編輯 收藏

          例子說(shuō)明String的堆(heap)棧(stack)信息

               摘要: String是一個(gè)特殊的包裝類數(shù)據(jù)。即可以用String str = new String("abc");的形式來(lái)創(chuàng)建,也可以用String str = "abc";的形式來(lái)創(chuàng)建。前者是規(guī)范的類的創(chuàng)建過(guò)程,即在Java中,一切都是對(duì)象,而對(duì)象是類的實(shí)例,全部通過(guò)new()的形式來(lái)創(chuàng)建。Java 中的有些類,如DateFormat類,可以通過(guò)該類的getInstance()方法來(lái)返回一個(gè)新創(chuàng)建的類,似乎違反了此原則。其實(shí)不然。該類運(yùn)用了單例模式來(lái)返回類的實(shí)例,只不過(guò)這個(gè)實(shí)例是在該類內(nèi)部通過(guò)new()來(lái)創(chuàng)建的,而getInstance()向外部隱藏了此細(xì)節(jié)。那為什么在String str = "abc";中,并沒(méi)有通過(guò)new()來(lái)創(chuàng)建實(shí)例,是不是違反了上述原則?其實(shí)沒(méi)有。
            閱讀全文

          posted @ 2008-09-04 14:22 nonels 閱讀(503) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題  
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類(16)

          隨筆檔案(16)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 乌拉特后旗| 东乡| 无极县| 招远市| 东乌珠穆沁旗| 烟台市| 安化县| 平陆县| 进贤县| 双峰县| 金川县| 襄垣县| 黄浦区| 祁门县| 虎林市| 永新县| 嵊州市| 诸暨市| 香港| 天全县| 桂东县| 永济市| 金川县| 武夷山市| 隆德县| 鹤峰县| 嘉义市| 南昌县| 贞丰县| 嘉义县| 扬中市| 汉中市| 岱山县| 泰安市| 永福县| 蒲江县| 宁远县| 襄汾县| 徐水县| 长治市| 轮台县|