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

类别:Java 点击:0 评论:0 推荐:
下一代的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(); } } }

从上面的例子可以看到:

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

 

本文地址:http://com.8s8s.com/it/it17949.htm