??xml version="1.0" encoding="utf-8" standalone="yes"?>
一,做一个最单的Applet:
1,~译JAVAc:
{TOMCAT_HOME} = D:\tomcat6
假设?/span>D:\tomcat6\webapps\testweb\test目录中新?/span>hello目录Q在hello目录中新?/span>javac?/span>HelloWorld.java:
package hello;
import java.awt.*;
import java.applet.*;
//必须l承Appeletc?/span>
public class HelloWorld extends Applet {
public void paint(Graphics g )
{
//向外输出的字W串
g.drawString("Hello HelloWorldd!",5,35);
}
}
?/span>CMD命o行中~译该类:
C:\Documents and Settings\Administrator>d:
D:>cd D:\tomcat6\webapps\testweb\test
D:>javac hello\HelloWorld.java
2Q在|页中嵌?/span>Applet:
?/span>D:\tomcat6\webapps\testweb\test目录中新?/span>testHello.html文gQ?/span>
<HTML>
<TITLE>HelloWorld! Applet</TITLE>
<APPLET
codebase="."
CODE="hello.HelloWorld.class"
name="HelloWorld"
WIDTH=200
HEIGHT=100
ALIGN = middle
>
</APPLET>
</HTML>
3Q运行查?/span>Applet:
appletviewer是一个专门用来运行查?/span>applet的工P直接在命令行上敲打就可以
?/span>CMD命o行中
>d:
>cd D:\tomcat6\webapps\testweb\test
>appletviewer testHello.html
如果启动?/span>TOMCATQ也可以在浏览器中浏览,不过有些览器不支持Q需?/span>JAVA插g才可以看到效果,比如遨游Q我是在IE6.0中运行可以看到?/span>
二,Appletq一步处理:
如果x|页中的Applet标签转换?/span><Object>或?/span><Embed>形式Q需要做以下工作Q?/span>
4Q将hello目录打包Q?/span>
>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)下蝲后是一个压~文Ӟ解压~后成ؓ一?/span>jar包,假设?/span>jar包在D:\tomcat6\webapps\testweb\test?/span>
>d:
>cd D:\tomcat6\webapps\testweb\test
>java -jar htmlconv1_3.jar helloworld.jsp (注:不清?/span>htmlconverter怎么用的Q可以敲命o查看帮助Q?/span>java -jar htmlconv1_3.jar -help)
此时helloworld.jsp中的代码被转换成如下样式:
<HTML>
<TITLE>HelloWorld! Applet</TITLE>
<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<OBJECT classid="clsid:E
WIDTH = 200 HEIGHT = 100 NAME = "HelloWorld" ALIGN = middle codebase="http://java.sun.com/products/plugin/
<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=
<PARAM NAME="scriptable" VALUE="false">
<COMMENT>
<EMBED type="application/x-java-applet;jpi-version=
</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>
q样转换已l完成,此时再用appletviewerL看,效果和前面一?/span>
常见?Tomcat 5 表单~码提交后ؕ码的解决Ҏ有很? 有改 Tomcat Connector 属性的, 有加qo器的. 但是 Tomcat 自带的那个过滤器只解决了 POST 方式的ؕ码却不能处理 GET 方式的ؕ? 在这里那我就l出一个不需要修改Q?Tomcat 配置文g的完解决中文问题的qo器的代码:
首先是我们的试面:
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>
和普通的表单没有M区别.
然后是表单提交面 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>
最后最关键的就是我们的qo器代码了, ?GET 方式使用h包装? ?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 q行扩充, 不媄响原来的功能q能提供所有的 HttpServletRequest * 接口中的功能. 它可以统一的对 Tomcat 默认讄下的中文问题q行解决而只需要用新的 Request 对象替换面中的 * request 对象卛_. */ class Request extends HttpServletRequestWrapper { public Request(HttpServletRequest request) { super(request); } /** * 转换p单读取的数据的内? * ?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(); } /** * d参数 -- 修正了中文问? */ public String getParameter(String name) { return toChi(getHttpServletRequest().getParameter(name)); } /** * d参数列表 - 修正了中文问? */ 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 { } }
怎么? 是不是很单也很方便呢?
}
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作ؓl束标志,q且-1不计在?br />
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;
}
//冒排序?br />
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;
}
}