下一代的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中这个窗口并没有被销毁.

|