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) | 評論 (1)編輯 收藏

          JPBC ing: 留言板之二:處理jsp中出現的中文亂碼問題--字符過濾器

          ??????在參數傳遞過程中,經常會碰到中文亂碼問題,有好多種解決方法,其中一種就是用到過濾器。

          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過濾器
          ?*?
          @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) | 評論 (0)編輯 收藏

          JPBC ing: 留言板之一:用JAVABEAN與DAO封裝數據的業務邏輯及操作

               摘要: 首先,先用DAO把數據業務邏輯部分分離開來,因為我只用到MySQL,所以就省略了工廠類,定了一個業務邏輯的接口及實現它的類。?????MessageDAO.java?????? package?DAO.iface;import?java.util.List;/**?*//**?*?進行數據操作的業務邏輯類接口的DAO?*?@author?Administrator?*?*/public?int...  閱讀全文

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

          2008年10月9日

          MySQL 存儲過程參數用法 in, out, inout(轉)

               摘要: MySQL 存儲過程參數有三種類型:in、out、inout。它們各有什么作用和特點呢?  閱讀全文

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

          2008年9月28日

          使用SAX解析XML文檔

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

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

          使用DOM解析XML文檔

               摘要: 當使用DOM解析XML文檔時,使用的是DOM的思想,因而不可避免需要將XML文檔轉換成DOM樹。DOM解析器在裝入XML文檔時,已經在內存中將XML文檔的每個元素轉換成DOM樹的每個節點了。

          對于下面的一個簡單XML文檔:

          xml代碼:
            閱讀全文

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

          2008年9月15日

          (轉)Java獲得當前性能信息

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

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

          點對點聊天簡陋版

               摘要: 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) | 評論 (2)編輯 收藏

          2008年9月9日

          數據庫的封裝

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

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

          2008年9月8日

          Simple Columnar Transposition Technique(簡單分欄式變換加密技術)

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

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

          2008年9月4日

          關于時間的處理

               摘要: 在Java中關于時間的處理有很多種方法,在API中也有好幾個關于時間處理的類,如 Date、Canlendar、GregorianCalendar、SimpleDateFormat、timestamp等...貌似很雜,現在一一整理~

          各種時間類的關系如下:  閱讀全文

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

          Strategy(策略模式)

               摘要: 設計原則:
          #找出應用中可能需要變化之處,把它們獨立出來,不要和不需要變化的代碼混在一起(即使是行為)
          #針對接口編程,而不是針對實現編程。(實例化對象時使用多態)
          #多用組合,少用繼承

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

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

          GUI簡單實現凱撒加密法

             凱撒加密法:消息中每個字母換成向后三個字母的字母,例如,明文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         //實例化一個窗體
          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);    //設置窗體大小
          16         this.setTitle("凱撒加密法");
          17         this.setResizable(false);
          18         
          19         jbInit();
          20     }
          21     
          22     private void isLetter() {
          23         //判斷輸入的內容是否為字母
          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         // 產生明文    
          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碼在此區間則減去26(使字符XYZ,xyz循環到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         //    設置窗體內容        
          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();    //判斷輸入的內容是否為字母        
          79             }
          80 
          81         });
          82     }
          83     
          84 }
          85 
              
              現實圖解:   

                往文本框中輸入密文(只限字符),點擊按鈕,即生成相應密文。                           
                 
                                            
                若輸入為非字符,則彈出錯誤框~
               

               簡單的一個程序,說明都不用了。。。

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

          簡單實現柵欄加密法

          Rail Fence Technique:變換加密技術一種。
          ??????????????????? 1、將明文消息寫成對角線序列
          ??????????????????? 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);????????//將輸入的字符串打印到控制臺
          21?????????????????out.println("============柵欄加密技術=============");
          22?????????????????out.println("明文:"+str);
          23?????????????????buf?=?str.toCharArray();????//將輸入的字符串轉變為字符數組
          24?????????????????for(int?i=0;i<buf.length;i++)?{
          25?????????????????????//將位置為0、2、4..放在sb1中,單數放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));????//合并兩個數組????
          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) | 評論 (2)編輯 收藏

          Tomcat6.0 配置

          ??? 在成功安裝JDK的前提下,安裝tomcat6.0(假設安裝路徑為C:,一般選擇FULL安裝,4.0以上版本不用配置環境變量)系統變量中添加以下環境變量(假定你的j2sdk安裝在c:"jdk1.6):?JAVA_HOME=c:"jdk1.6。接著可以啟動tomcat,在IE中訪問http://localhost:8080,如果看到tomcat的歡迎頁面的話說明安裝成功了。
          ??? 然后對tomcat進行配置:
          ??? 第一步:建立自己的jsp?app目錄
          ??????? 1.webapps目錄下新建一個目錄,起名叫myapp;?
          ????? ? 2.myapp下新建一個目錄WEB-INF,注意,目錄名稱是區分大小寫的;?
          ??????? 3.WEB-INF下新建一個文件web.xml,內容如下:
          ?
          ???
          ?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下新建一個測試的jsp頁面,文件名為index.jsp,文件內容如下
          ?

          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看到當前時間的話說明就成功了

          ???
          第二步:建立自己的Servlet:
          ??? 寫入你的第一個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中lib里面的servlet-api.jar文件拷貝到C:"JDK"jre"lib"ext中,編譯HelloWorld.java
          ???
          Servlet必須使用C:"Tomcat"webapps"myapp"WEB-INF這個目錄下面的web.xml文件進行注冊,用EditPlus打開這個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來編譯這個文件。

          ?????
          2.然后在你新建的應用程序目錄myapp下新建一個新的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>
          ????? 確定各個文件的位置,如下
          ?????

          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?幸運的話就會看到:

          ???? Java Bean Test: The author's blog address isHttp://czl.cn

          ???? 這樣就完成了整個Tomcat下的jsp、servlet和javabean的配置。

          ???

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

          ????? 打開 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) | 評論 (0)編輯 收藏

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

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

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

          僅列出標題  
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(16)

          隨筆檔案(16)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 三明市| 烟台市| 鹤岗市| 商河县| 自治县| 荣成市| 巩义市| 宣威市| 大宁县| 洪雅县| 伊宁县| 友谊县| 华阴市| 陇川县| 麻阳| 临夏县| 酉阳| 年辖:市辖区| 灌阳县| 浠水县| 大城县| 新乐市| 玛曲县| 理塘县| 延吉市| 冀州市| 沅陵县| 旅游| 梧州市| 岫岩| 宝清县| 贺州市| 屏东县| 林口县| 新竹市| 藁城市| 怀安县| 交口县| 天镇县| 阜南县| 江都市|