下一代的B/S开发框架--Echo 教程(3)

下一代的B/S开发框架--Echo 教程(3)

HelloWorld

编写Echo应用, 只需要一个Servlet和一个Instance, 剩下的就是开发页面了.

/************MainServlet.java************
 * 主Servlet, 唯一的URL入口
 */
import nextapp.echo.*;
import nextapp.echoservlet.EchoServer;

public class MainServlet extends EchoServer {
  public EchoInstance newInstance() {
    return new MainInstance();
  }
}
/************MainInstance.java************
 * 代表本Session, 供MainServelet调用
 */
import nextapp.echo.*;
public class MainInstance extends EchoInstance {
  //返回代表首页的Window
  public Window init() {
    return new HelloWorldWindow();
  }
}
/************HelloWorldWindow.java************
 * 用户Window, 根据需要自行定制. 这里我们演示一些常用控件
*/
import nextapp.echo.*;
public class HelloWorldWindow extends Window {
public Label label = new Label("Hello world");
public HelloWorldWindow() {
ContentPane content = new ContentPane();
setContent(content);
Grid grid = new Grid();
content.add(grid);
grid.add(0,0,label);
grid.add(0,1,new Button("Hello world"));
grid.add(0,2,new RadioButton("Hello world"));
grid.add(0,3,new CheckBox("Hello world"));
grid.add(0,4,new SelectField(new String[]{"Hello world"}));
grid.add(0,5,new TextField("Hello world"));
grid.add(0,6,new TextArea("Hello world"));
}
} //======== web.xml配置 ======= <servlet>
<servlet-name>echo</servlet-name>
<servlet-class>MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>echo</servlet-name>
<url-pattern>/echo</url-pattern>
</servlet-mapping>

运行看看, 纯Java一样写出HTML!

让我们看看事件处理:

/************Test1Window.java************
 * 演示事件处理
 * 请在MainInstance类中返回本new Test1Window()
 */
import nextapp.echo.*;
import nextapp.echo.event.*;
public class Test1Window extends Window implements ActionListener {
  TextField txtInput = new TextField("some worlds");
  Button btnUpdate = new Button("Update");
  Button btnClose = new Button("Close window");
  HelloWorldWindow win = new HelloWorldWindow();
  public Test1Window() {
    ContentPane content = new ContentPane();
    setContent(content);
    content.add(txtInput);
    //增加事件监听
    btnUpdate.addActionListener(this);
    btnClose.addActionListener(this);
    content.add(btnUpdate);
    content.add(btnClose);
    win.setWidth(200);
    win.setHeight(400);
  }
  //事件处理
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == btnUpdate) {
      getEchoInstance().addWindow(win); //注册新窗口
      win.label.setText(txtInput.getText()); //设定里面的文字
    }
    else if (e.getSource() == btnClose) 
      win.dispose(); //关闭窗口
      dispose();
    }
  }
}

从上面的例子可以看到:

  1. 事件响应是对按钮增加了监听器(ActionListener), 由监听器负责对应的事件响应.
  2. 新窗口的打开要取得EchoInstance, 在其中注册新窗口, 即把窗口中的控件增加到Session中.
  3. 如果你关掉新窗口, 它还会马上弹出, 除非你按主窗口的Close按钮. 说明在Session中这个窗口并没有被销毁.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值