Chinaunix首页 | 论坛 | 博客
  • 博客访问: 220592
  • 博文数量: 46
  • 博客积分: 2598
  • 博客等级: 少校
  • 技术积分: 499
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-02 09:49
文章分类

全部博文(46)

文章存档

2011年(5)

2010年(19)

2009年(16)

2008年(6)

分类: Java

2010-05-14 11:07:27

有朋友问到一个问题,applet与servlet通讯,平时用servlet,applet还没有用过,仅知道applet是在浏览器中执行的java程序. 马上查资料写了一个小例子,如下
测试/开发环境, linux, firefox , netbeans6.8, jdk6

先写一个applet, 如图
在netbeans中创建一个applet窗体




第二步,定义类名 Userinfo


第三步, 设计自己的界面, 这里简单做了一个界面


在'登录'按钮和'页面跳转'按钮的动作事件中编写程序:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
            // TODO 页面跳转

            this.getAppletContext().showDocument(new URL(""));
        }
        catch (MalformedURLException ex) {
            ex.printStackTrace();
        }

    }

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO 登录

        String name = this.jTextField1.getText();
        try {
            URL url = new URL("" + name);
            URLConnection connection = url.openConnection(); // 连接url

            java.io.InputStream is = connection.getInputStream(); // 得到服务端的回应


            StringBuffer sb = new StringBuffer();
            int c = is.read();
            while (c > 0){
                sb.append((char)c);
                c = is.read();
            }
            this.jTextField2.setText(sb.toString());
            if (sb.toString().equals("ok")){
                this.getAppletContext().showDocument(new URL(""));
            }
        }
        catch (MalformedURLException ex) {
            Logger.getLogger(Useinfo.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch (IOException ex) {
            Logger.getLogger(Useinfo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


url对象一定要指明协议 http

然后在写一个服务端, 服务端使用servlet比较好, 这里只写了一个jsp, 其实一样.
先写一个包含applet的页面 index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
   "">


   
       
        JSP Page
   
   
        dd
       




       

Hello World!


   


标记就是使用applet,code是applet程序的类,包含包名
codebase是访问applet类的路径, codebase+code 组成一个完整的url部分.

再写一个处理页面,userinfo.jsp
这段程序的作用就是接收客户端发来的请求,接收参数, 然后将处理结果返回

<%
            String name = request.getParameter("name");

            if (name.endsWith("makei")){
                out.print("ok");
                }
            else{
                out.print("fail");
                }
%>


要注意的是, jsp里面不要输出没有用的内容, 所以这里使用servlet比较好.

程序就写完了.

下面我们部署applet.
先拷贝applet生成后的class文件,要连同包一起拷贝, 可以从netbeans的'文件'侧栏'里


然后赋值到web项目里




现在启动web服务器 tomcat或其他, 访问






阅读(2491) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~