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 阅读(626) | 评论 (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 阅读(534) | 评论 (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 阅读(793) | 评论 (1)编辑 收藏

2008年10月9日

MySQL 存储过程参数用法 in, out, inout(转)

     摘要: MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢?  阅读全文

posted @ 2008-10-09 12:50 nonels 阅读(20575) | 评论 (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 阅读(1750) | 评论 (5)编辑 收藏

使用DOM解析XML文档

     摘要: 当使用DOM解析XML文档时,使用的是DOM的思想,因而不可避免需要将XML文档转换成DOM树。DOM解析器在装入XML文档时,已经在内存中将XML文档的每个元素转换成DOM树的每个节点了。

对于下面的一个简单XML文档:

xml代码:
  阅读全文

posted @ 2008-09-28 11:03 nonels 阅读(298) | 评论 (0)编辑 收藏

2008年9月15日

(转)Java获得当前性能信息

     摘要: 在Java中,可以获得总的物理内存、剩余的物理内存、已使用的物理内存等信息,本例讲解如何取得这些信息,并且获得在Windows下的内存使用率。     首先编写一个MonitorInfoBean类,用来装载监控的一些信息,包括物理内存、剩余的物理内存、已使用的物理内存、内存使用率等字段,该类的代码如下:package com.amigo.performance;/** *//** * 监视信息的J...  阅读全文

posted @ 2008-09-15 01:39 nonels 阅读(221) | 评论 (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 阅读(612) | 评论 (2)编辑 收藏

2008年9月9日

数据库的封装

     摘要: 每每涉及到数据库时,总是死板的硬套那四个步骤,一直对数据库如果封装成类感到疑惑,晚上看了点资料,有了点感悟,就记下来了。
将一些增删改查的基本操作都封装起来,其他类直接调用方法名,进行数据的操作,省了一堆无谓的声明,实例化等。。
  阅读全文

posted @ 2008-09-09 23:01 nonels 阅读(260) | 评论 (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 阅读(802) | 评论 (0)编辑 收藏

2008年9月4日

关于时间的处理

     摘要: 在Java中关于时间的处理有很多种方法,在API中也有好几个关于时间处理的类,如 Date、Canlendar、GregorianCalendar、SimpleDateFormat、timestamp等...貌似很杂,现在一一整理~

各种时间类的关系如下:  阅读全文

posted @ 2008-09-04 21:45 nonels 阅读(209) | 评论 (0)编辑 收藏

Strategy(策略模式)

     摘要: 设计原则:
#找出应用中可能需要变化之处,把它们独立出来,不要和不需要变化的代码混在一起(即使是行为)
#针对接口编程,而不是针对实现编程。(实例化对象时使用多态)
#多用组合,少用继承

策略模式:定义了算法族,分别封装起来,让他们可以互相替换,此模式让算法的变化独立与使用算法的客户
  阅读全文

posted @ 2008-09-04 18:48 nonels 阅读(210) | 评论 (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 阅读(848) | 评论 (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 阅读(1683) | 评论 (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 阅读(658) | 评论 (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 阅读(480) | 评论 (0)编辑 收藏

仅列出标题  
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(2)

随笔分类(16)

随笔档案(16)

搜索

最新评论

阅读排行榜

评论排行榜