2008年10月16日
摘要: <!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<%
@ page language
=
"
...
阅读全文
摘要: 首先,先用DAO把数据业务逻辑部分分离开来,因为我只用到MySQL,所以就省略了工厂类,定了一个业务逻辑的接口及实现它的类。 MessageDAO.java
package DAO.iface;import java.util.List;/** *//** * 进行数据操作的业务逻辑类接口的DAO * @author Administrator * */public int...
阅读全文
2008年10月9日
摘要: MySQL 存储过程参数有三种类型:in、out、inout。它们各有什么作用和特点呢?
阅读全文
2008年9月28日
摘要: 步骤1.一个简单的XML文档: XML代码:<?xml version="1.0" encoding="GBK"?> <StudentInfo> <student> <name>赵海波</name> <sex>男</sex> <lesson...
阅读全文
摘要: 当使用DOM解析XML文档时,使用的是DOM的思想,因而不可避免需要将XML文档转换成DOM树。DOM解析器在装入XML文档时,已经在内存中将XML文档的每个元素转换成DOM树的每个节点了。
对于下面的一个简单XML文档:
xml代码:
阅读全文
2008年9月15日
摘要: 在Java中,可以获得总的物理内存、剩余的物理内存、已使用的物理内存等信息,本例讲解如何取得这些信息,并且获得在Windows下的内存使用率。 首先编写一个MonitorInfoBean类,用来装载监控的一些信息,包括物理内存、剩余的物理内存、已使用的物理内存、内存使用率等字段,该类的代码如下:package com.amigo.performance;/** *//** * 监视信息的J...
阅读全文
摘要: CharServer.javaimport java.net.*;import java.util.*;import java.io.*;public class ChatServer{ ServerSocket server = null; ArrayList<ClientConn> clients = new ArrayList<ClientConn>();...
阅读全文
2008年9月9日
摘要: 每每涉及到数据库时,总是死板的硬套那四个步骤,一直对数据库如果封装成类感到疑惑,晚上看了点资料,有了点感悟,就记下来了。
将一些增删改查的基本操作都封装起来,其他类直接调用方法名,进行数据的操作,省了一堆无谓的声明,实例化等。。
阅读全文
2008年9月8日
摘要: 简单分栏式变换加密技术:
(1)将明文消息一行一行写入预定长度的矩形中
(2)一列一列读消息,但不一定按1、2、3列的顺序,也可以按随机顺序,如2、3、1
(3)得到的消息就是密文消息
注:密钥为字符的话,就根据ASII码的大小进行组合。
阅读全文
2008年9月4日
摘要: 在Java中关于时间的处理有很多种方法,在API中也有好几个关于时间处理的类,如 Date、Canlendar、GregorianCalendar、SimpleDateFormat、timestamp等...貌似很杂,现在一一整理~
各种时间类的关系如下:
阅读全文
摘要: 设计原则:
#找出应用中可能需要变化之处,把它们独立出来,不要和不需要变化的代码混在一起(即使是行为)
#针对接口编程,而不是针对实现编程。(实例化对象时使用多态)
#多用组合,少用继承
策略模式:定义了算法族,分别封装起来,让他们可以互相替换,此模式让算法的变化独立与使用算法的客户
阅读全文
凯撒加密法:消息中每个字母换成向后三个字母的字母,例如,明文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(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(); //判断输入的内容是否为字母
79 }
80
81 });
82 }
83
84 }
85
现实图解:
往文本框中输入密文(只限字符),点击按钮,即生成相应密文。
若输入为非字符,则弹出错误框~
简单的一个程序,说明都不用了。。。
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 }
在成功安装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" />
摘要: String是一个特殊的包装类数据。即可以用String str = new String("abc");的形式来创建,也可以用String str = "abc";的形式来创建。前者是规范的类的创建过程,即在Java中,一切都是对象,而对象是类的实例,全部通过new()的形式来创建。Java 中的有些类,如DateFormat类,可以通过该类的getInstance()方法来返回一个新创建的类,似乎违反了此原则。其实不然。该类运用了单例模式来返回类的实例,只不过这个实例是在该类内部通过new()来创建的,而getInstance()向外部隐藏了此细节。那为什么在String str = "abc";中,并没有通过new()来创建实例,是不是违反了上述原则?其实没有。
阅读全文