和时间赛跑
我要追上时间
和时间赛跑的人!
我的首页
文章
相册
圈子
留言
管理
 
    当前所在页面:首页>>文章>>第一个EasyJWeb实例
第一个EasyJWeb实例
    作者:erikchang 来源: 发表时间:2008-01-01

 
 
 EasyJWeb也是驱动请求的MVC框架,他有自身的IOC和AOP,当然功能上和Spring相比存在很大的差别,在使用EasyJWeb进行web开发的时候,在Bean的管理以及事务支持等方面还是使用Spring比较好。
   在使用EasyJWeb开发前要给以下jar文件添加到classpath中:
   easyjweb-core-1.0-m3.jar
  dom4j-1.6.1.jar
easydbo-0.9.1.jar
velocity-1.5.jar
velocity-dep-1.5.jar
jaxen-1.1.jar
log4j-1.2.14.jar
commons-fileupload-1.2.jar
commons-logging-1.1.jar
   首先还是定义一个实体类User,代码如下:
package spring.chapter6.easyjweb.domain;
publicclass User {
    private String userName;
    private String passWord;
 
    public String getUserName() {
       returnuserName;
    }
 
    publicvoid setUserName(String userName) {
       this.userName = userName;
    }
 
    public String getPassWord() {
       returnpassWord;
    }
 
    publicvoid setPassWord(String passWord) {
       this.passWord = passWord;
    }
}
定义一个action,在easyjweb中action可以继承AbstractCmdAction也可以继承AbstractPageAction,这个根据自己的喜好,至于他们的区别这里不多重复,有兴趣可以参考EasyJWeb相关文档,UserAction代码如下:
package spring.chapter6.easyjweb.action;
import spring.chapter6.easyjweb.domain.User;
import com.easyjf.web.Module;
import com.easyjf.web.Page;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractCmdAction;
publicclass UserAction extends AbstractCmdAction {
    public Page doInit(WebForm form, Module module) {
       returnnew Page("/index.html");
    }
    public Page doShow(WebForm form, Module module) {
       User user = new User();
       form.toPo(user);
       form.addResult("user", user);
       returnnew Page("/show.html");
    }
}
AbstractCmdAction默认执行方法是doInit(),当请求是user.ejf时调用默认方法,请求时uesr.ejf?cmd=show时调用show()方法,这个是easyjweb中的一种命名约束,UserAction中定义了2个方法,第一个直接打开一个页面index.html,在easyjweb中页面默认的路径是WEB-INF/views/,执行doshow()方法后,有一个form.toPo(user),这里就是给表单对象转换成实体类,这里和Spring的SimpleFormController中的command一样,表单字段名称要和实体类属性一样。
接着编写web.xml,定义servlet以及相关配置文件的读取,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
       <param-name>easyjwebConfigLocation</param-name>
       <param-value>/WEB-INF/mvc.xml</param-value>
    </context-param>
    <!--定义EasyJWeb的主控Servlet -->
    <servlet>
       <servlet-name>easyjf</servlet-name>
       <servlet-class>com.easyjf.web.ActionServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>easyjf</servlet-name>
        <url-pattern>*.ejf</url-pattern><!--所有.ejf的扩展名都由easyjweb来处理-->
    </servlet-mapping>
    <!-- 定义字符处理Filter -->
    <filter>
       <filter-name>CharsetFilter</filter-name>
       <filter-class>com.easyjf.web.CharsetFilter</filter-class>
       <init-param>
           <param-name>encoding</param-name>
           <param-value>UTF-8</param-value>
       </init-param>
       <init-param>
           <param-name>ignore</param-name>
           <param-value>true</param-value>
       </init-param>
    </filter>
    <filter-mapping>
       <filter-name>CharsetFilter</filter-name>
       <servlet-name>easyjf</servlet-name>
    </filter-mapping>
</web-app>
首先定义了<context-param>来读取指定的easyjweb配置文件,这里为/WEB-INF/下的mvc.xml,然后指定了servlet,在最后指定了一个Filter,Filter用来统一编码,对所有的中文均采用UTF-8格式来防止中文乱码的出现。
编写easyjweb的配置文件mvc.xml,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<easyjf-web xmlns="http://www.easyjf.com/schema/easyjf/web"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.easyjf.com/schema/easyjf/web http://www.easyjf.com/schema/easyjf/web/easyjf-web-0.0.1.xsd">
    <modules>
       <module name="user" path="/user"
           action="spring.chapter6.easyjweb.action.UserAction">
       </module>
    </modules>
</easyjf-web>
easjweb的配置文件也是基于schema的,最外层使用<easyjf-web>标签,<modules>标签表示所有的应用模块,<module>表示单个应用模块,每一个<module>对应一个action,<module>中的name属性用来标识该模块,在程序中可以使用module.findPage(模块名)来导向模块页面,path属性表示请求的方式,“path="/user"”表示请求为user.ejf的时候交给action指定的程序来处理,这里表示每当user.ejf的请求都交给UserAction来处理。
index.html代码以及show.html代码如下:
index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第一个EasyJWeb实例</title>
</head>
<body>
<form action="/FirstEasyJWebProject/user.ejf?cmd=show" method="post">用户名:<input
    type="text" name="userName" value="" /><br>
密码:<input type="password" name="passWord" value="" /><br>
<input type="submit" value="提交" /></form>
</body>
</html>
表单的字段名为userName和passWord,和User实例类中的属性一样,这样在调用form.toPo()就直接将表单转换成User对象了。
show.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>第一个EasyJWeb实例</title>
</head>
<body>
${user.userName}您好!您的密码是:${user.passWord}.
</body>
</html>
代码中使用了velocity标签,velocity标签是easyjweb默认的标签,在使用easyjweb的过程中也可以使用freemarker等其他标签,使用方法可以参考官方网站的介绍,这里不多重复。
 
 

(阅读 )   评论数(:0)
评论】 【收藏】
评论:共0条

发表评论:
发表人:
评论: 
    
 
关于我们 | 诚聘英才 | 联系我们 | 广告业务 | 网站地图 | 法律声明

EasyJF开源团队版权所有  建议使用1024*768分辨率