posts - 8,  comments - 11,  trackbacks - 0
  2007年12月12日

 

,做一个最简单的Applet:

1,编译JAVA类:

    {TOMCAT_HOME} = D:\tomcat6

    假设在D:\tomcat6\webapps\testweb\test目录中新建hello目录,在hello目录中新建javaHelloWorld.java:

 

package hello;

import java.awt.*;

import java.applet.*;

//必须继承Appelet

public class HelloWorld extends Applet {

 public void paint(Graphics g )

 {

  //向外输出的字符串

  g.drawString("Hello HelloWorldd!",5,35);

 }

}

 

CMD命令行中编译该类:

    C:\Documents and Settings\Administrator>d:       

    D:>cd D:\tomcat6\webapps\testweb\test

    D:>javac hello\HelloWorld.java

 

2,在网页中嵌入Applet:

D:\tomcat6\webapps\testweb\test目录中新建testHello.html文件:

 

<HTML>

<TITLE>HelloWorld! Applet</TITLE>

<APPLET

codebase="."

CODE="hello.HelloWorld.class"

name="HelloWorld"

WIDTH=200

HEIGHT=100

ALIGN = middle

> 

</APPLET>

</HTML>

 

 

3,运行查看Applet:

appletviewer是一个专门用来运行查看applet的工具,直接在命令行上敲打就可以

CMD命令行中

    >d:       

    >cd D:\tomcat6\webapps\testweb\test

    >appletviewer testHello.html

如果启动了TOMCAT,也可以在浏览器中浏览,不过有些浏览器不支持,需要JAVA插件才可以看到效果,比如遨游,我是在IE6.0中运行可以看到。

 

 

二,Applet进一步处理:

如果想把网页中的Applet标签转换成<Object>或者<Embed>形式,需要做以下工作,

4,将hello目录打包:

    >d:       

    >cd D:\tomcat6\webapps\testweb\test

    >jar -cvf hello.jar ./hello

 

5,使用htmlconverter工具来转换:

    1)下载htmlconverter==>http://java.sun.com/products/plugin/1.3/docs/html_converter.html

    2)下载后是一个压缩文件,解压缩后成为一个jar包,假设该jar包在D:\tomcat6\webapps\testweb\test

   

    >d:       

    >cd D:\tomcat6\webapps\testweb\test   

    >java -jar htmlconv1_3.jar helloworld.jsp        (注:不清楚htmlconverter怎么用的,可以敲命令查看帮助:java -jar htmlconv1_3.jar -help)

    此时helloworld.jsp中的代码将被转换成如下样式:

 

<HTML>

<TITLE>HelloWorld! Applet</TITLE>

<!--"CONVERTED_APPLET"-->

<!-- HTML CONVERTER -->

<OBJECT classid="clsid:E19F9331-3110-11d4-991C-005004D3B3DB"

WIDTH = 200 HEIGHT = 100 NAME = "HelloWorld" ALIGN = middle  codebase="http://java.sun.com/products/plugin/1.3.0_02/jinstall-130_02-win32.cab#Version=1,3,0,2">

<PARAM NAME = CODE VALUE = "hello.HelloWorld.class" >

<PARAM NAME = CODEBASE VALUE = "." >

<PARAM NAME = ARCHIVE VALUE = "HelloWorld.jar" >

<PARAM NAME = NAME VALUE = "HelloWorld" >

 

<PARAM NAME="type" VALUE="application/x-java-applet;jpi-version=1.3.0_02">

<PARAM NAME="scriptable" VALUE="false">

<COMMENT>

<EMBED type="application/x-java-applet;jpi-version=1.3.0_02"  CODE = "hello.HelloWorld.class" CODEBASE = "." ARCHIVE = "HelloWorld.jar" NAME = "HelloWorld" WIDTH = 200 HEIGHT = 100 ALIGN = middle  scriptable=false pluginspage="http://java.sun.com/products/plugin/1.3.0_02/plugin-install.html"><NOEMBED>

 

</NOEMBED>

</EMBED>

</COMMENT>

</OBJECT>

 

<!--

<APPLET CODE = "hello.HelloWorld.class" CODEBASE = "." ARCHIVE = "HelloWorld.jar" WIDTH = 200 HEIGHT = 100 NAME = "HelloWorld" ALIGN = middle>

 

 

</APPLET>

-->

 

 

<!--"END_CONVERTED_APPLET"-->

 

</HTML>

 

这样转换就已经完成,此时再用appletviewer去查看,效果和前面一致

 

 

 

 

posted @ 2007-12-12 13:19 诗语江南 阅读(4701) | 评论 (0)编辑 收藏
  2007年10月14日
本文转自BeanSoft: http://www.blogjava.net/beansoft/archive/2007/10/09/151368.html

常见的 Tomcat 5 表单编码提交后乱码的解决方案有很多, 有改 Tomcat Connector 属性的, 有加过滤器的. 但是 Tomcat 自带的那个过滤器只解决了 POST 方式的乱码却不能处理 GET 方式的乱码.  在这里那我就给出一个不需要修改任何 Tomcat 配置文件的完美解决中文问题的过滤器的代码:

首先是我们的测试页面:

GET 方式: POST 方式:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>表单测试页面</title>
    </head>
    <body>
    <form action="action.jsp">
    GET 方式: <input type=text name="name" value="GET 中文">
    <input type=submit>
    </form>
    <form action="action.jsp" method="POST">
    POST 方式: <input type=text name="name" value="POST 中文">
    <input type=submit>
    </form>
    </body>
    </html>
    

和普通的表单没有任何区别.

然后就是表单提交页面 action.jsp:

<%@ page language="java" pageEncoding="GBK"%>
    <html>
    <body>
    参数: <%=request.getParameter("name") %> <br>
    </body>
    </html>

接着是过滤器的配置文件 web.xml (用 2.5 版本也可以):

<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <filter>
    <filter-name>TomcatFormFilter</filter-name>
    <filter-class>filters.TomcatFormFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>TomcatFormFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    </web-app>

最后最关键的就是我们的过滤器代码了, 对 GET 方式使用请求包装器, 而 POST 方式则用 setCharacterEncoding():

package filters;
    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;
    import javax.servlet.ServletException;
    import  javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import javax.servlet.http.HttpServletResponse;
    public class TomcatFormFilter implements Filter {
    /**
          * Request.java
          * 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所有的 HttpServletRequest
          * 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只需要用新的 Request 对象替换页面中的
          * request 对象即可.
          */
    class Request extends HttpServletRequestWrapper
    {
    public Request(HttpServletRequest request) {
    super(request);
    }
    /**
             * 转换由表单读取的数据的内码.
             * 从 ISO 字符转到 GBK.
             */
    public String toChi(String input) {
    try {
    byte[] bytes = input.getBytes("ISO8859-1");
    return new String(bytes, "GBK");
    }
    catch (Exception ex) {
    }
    return null;
    }
    /**
             * Return the HttpServletRequest holded by this object.
             */
    private HttpServletRequest getHttpServletRequest()
    {
    return (HttpServletRequest)super.getRequest();
    }
    /**
             * 读取参数 -- 修正了中文问题.
             */
    public String getParameter(String name)
    {
    return toChi(getHttpServletRequest().getParameter(name));
    }
    /**
             * 读取参数列表 - 修正了中文问题.
             */
    public String[] getParameterValues(String name)
    {
    String values[] = getHttpServletRequest().getParameterValues(name);
    if (values != null) {
    for (int i = 0; i < values.length; i++) {
    values[i] = toChi(values[i]);
    }
    }
    return values;
    }
    }
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    HttpServletRequest httpreq = (HttpServletRequest)request;
    if(httpreq.getMethod().equals("POST")) {
    request.setCharacterEncoding("GBK");
    } else {
    request = new Request(httpreq);
    }
    chain.doFilter(request, response);
    }
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    }
    

怎么样, 是不是很简单也很方便呢?


posted @ 2007-10-14 22:16 诗语江南 阅读(429) | 评论 (0)编辑 收藏
  2007年10月6日
我是在寻找一个家园
背着东风
在异乡的土壤生根
花儿开出了四季
被高大的城墙包围
银色的记忆刻在年轮上
像水上的迷宫
找不到出口
那棵十年前种下的榕树
倒影在水面上
现出了家的轮廓
我用一片树叶将它画下
在我经过的每一个城市
都将留下一片炊烟
那是儿时的烽火
指引着我归来的方向
风从石头的缝隙里钻出来
把我的手臂荡开
风儿啊,你将带我去往何方
这里的楼房像沙丘一样的多
桥梁中间架着坚硬的丝网
那个地方是不是
住着贪睡的猫头鹰
长满白色的芦苇和水仙
会不会看见黄牛卖弄舌头
蜜蜂和牵牛花恋爱
风儿啊,你是不是要在那里安家
把我所有的幻想和渴望
都种在那片土地上
等待春天的检阅
... ...

花儿继续开着
而在到达之前
我仍将背着东风
独自萌芽
posted @ 2007-10-06 23:22 诗语江南 阅读(214) | 评论 (0)编辑 收藏
  2007年10月5日

import java.util.*;
/*
 * @author  诗语江南
 * @function  统计字符串中的重复部分并整理输出,
 *      我用了两种方法来做.
 */
public class StrShowTimes{
 public static void main(String[] r){
  String str = "帅哥,美女,帅哥,野兽,美女,帅哥";

  Map s1 = strTimesWithMap(str);
  Set keys = s1.keySet();
  Iterator it = keys.iterator();
  while(it.hasNext()){
   String key  = (String)it.next();
   int value = (Integer) s1.get(key);
   System.out.print(key + ": " + value+ ", ");
  }
  System.out.println();
  
  strTimesWithArray(str);
 }

 //使用HashMap的方法,该方法比较简单
 public static Map strTimesWithMap(String str){
  //key: 子字符串 String , value: 重复次数 Integer
  Map strMap = new HashMap();
  String[] strArr = str.split(",");
  for(int i =0; i< strArr.length ; i++){
   String key = strArr[i] ;
   if(strMap.containsKey(key)){
    int value = (Integer) strMap.get(key);
    strMap.put(key,++value);
   }else{
    strMap.put(key,1);
   }   
  }  
  return strMap;
 }

 //使用双数组的方法,一个字符串数组存字符串
 //一个整形数组存与字符串数组对应位置上的字符串出现的次数
 public static void strTimesWithArray(String str){
  String[] tempArr = str.split(",");
  int i , end = 0 , len = tempArr.length;
  String[] strArr = new String[len];
  int[] intArr = new int[len];
  boolean isChange ;
  for(i = 0 ; i < len ; i++){
   isChange = false;
   for(int j = 0 ; j < end ; j++){  
    if(tempArr[i].equals(strArr[j])){
     intArr[j] = intArr[j] +1 ;
     isChange = true;   
     break;
    }      
   }
   if(isChange) continue;
   strArr[end] = tempArr[i];
   intArr[end++] = 1; 
  }
  for(i = 0 ; i < end ; i++){
   System.out.print(strArr[i] + ": " + intArr[i] + " ");
  }
 }

}

posted @ 2007-10-05 13:36 诗语江南 阅读(1665) | 评论 (3)编辑 收藏
  2007年9月28日

package sort;
import java.io.*;
import java.util.*;
/*
 * @author  NoGodMe
 * @function  使用冒泡法排序
 */
public class SortBubble {

 public static void main(String[] args) throws IOException {
  SortBubble mp = new SortBubble();
  int[] intBeforeSort = mp.getIntData();
  int[] intAfterSort = mp.sortWithBubble(intBeforeSort);
  for(int i:intAfterSort){
   System.out.println(i);
  }
 }
 
 //获取从命令行输入的N个数字,以-1作为结束标志,并且-1不计算在内
 public int[] getIntData() throws IOException{
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  List<Integer> intList = new ArrayList<Integer>();
  String temp = null;
  while( (temp = br.readLine()) != null ){
   if(temp.length() == 0) continue;
   int i = Integer.parseInt(temp.trim());
   if(i == -1) break;
   intList.add(i);
  }
  
  int[] intArr = new int[intList.size()];
  int count = 0;
  for(Integer i:intList){
   intArr[count++] = i.intValue();
  }
  
  return intArr;
 }
 
 //冒泡排序法
 public int[] sortWithBubble(int[] data){
  int temp;
  boolean isChange = false;
  for(int i = 0 ; i < data.length - 1 ; i++){
   isChange = false;
   for(int j = 0 ; j < data.length - 1; j++){
    if(data[j] > data[j + 1]){
     temp = data[j];
     data[j] = data[j + 1];
     data[j + 1] = temp;
     isChange = true;
    }
   }
   if(!isChange) break;
  }
  return data;
 }
 
}

posted @ 2007-09-28 00:14 诗语江南 阅读(296) | 评论 (0)编辑 收藏
  2007年9月24日

/*
  *@author 诗语江南
  *@function 将字符串反序输出(测试形如"My name is 天才"的字符串,
反序后为"才天 is name My")
  *@parameter 要反序的字符串
  *@return  反序后的字符串
  */
 public static String rev(String num){
  String[] nums = num.split(" ");
  StringBuffer sb = new StringBuffer();
  for(int i = nums.length-1; i>=0; i--){
   StringBuffer sb2 = null;
   if(nums[i].length() > 1){
    if(isContainZh(nums[i])){
     sb2 = new StringBuffer(nums[i]);
     sb2.reverse();
    }
   }
   if(sb2 != null)
    nums[i] = sb2.toString();
   sb.append(nums[i] + " ");
  }
  return sb.toString();
 }
 
 //判断一个字符串是否有汉字
 public static boolean isContainZh(String str){
  boolean b = false;
  if(str.length() > 1){
   byte[] bs = str.getBytes();
   if(bs.length != str.length()){
    b = true;
   }
  }
  return b;
 }

posted @ 2007-09-24 01:27 诗语江南 阅读(3414) | 评论 (3)编辑 收藏
  2007年9月18日
     摘要: 0、 需要标识符
a) 不在函数内
1、 非法表达式开始
b) 可能:丢失括号 .
2. no data found
a) 可能:setInt(1,100)中,没有100这个值
3. 找不到符号
a) 可能:没导入包
4. 指定了无效URL
a) 可能:数据库名或IP错误,即连接出错
  阅读全文
posted @ 2007-09-18 00:44 诗语江南 阅读(5985) | 评论 (4)编辑 收藏

云丝当笔
大地做纸

很安静的来
点点滴滴
断断续续
连成一个字母
一行语句
一首小诗
我跟黑客说
我在写世界上最优雅的代码
它将蔓延
像爱滋一样
侵入每个人的脉络
你们都将成为机器
成为一块微小的芯片
我是你们的母体
我是你们
我是你
我在敲打一架钢琴
看拉
最优秀的钢琴家们
多瑙河的两岸
蓝色的交响乐正在上演
没有谁是真正的领袖
我们都在流浪
唱着属于自己的歌
编着自己的故事
这个世界很乱
每个人都在寻找出路
站在地图上
游离的电子纵横交错
我把病毒投进河流
整个天空都被压缩
我哽咽着
看着自己死去
凌晨四点
屏幕上现出四个字
           --游戏结束

posted @ 2007-09-18 00:03 诗语江南 阅读(242) | 评论 (1)编辑 收藏
仅列出标题  
<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(2)

随笔分类

随笔档案

友情连接

搜索

  •  

最新评论

阅读排行榜

评论排行榜