而EasyJWeb引入了很多灵活适用的功能,解决了传统MVC框架中处理页面查找的功能,使用惯例代替配置的方式,可以不用写任何代码或任何配置文件,EasyJWeb自动知道程序所需要的视图,并使用该视图来呈现输出结果。
比如一个简单的需求,我们需要在页面上显示一个用户的信息,这个简单需求涉及到用户向服务器端发送一个记取用户信息的请求,然后用户程序作一些业务处理后(比如从数据中查询或创建新对象等),然后导向到显示页面并显示数据。
User类的内容如下:
public
class
User
...
{
private String name;
private String email;
private Date bornDate;
private Integer loginTimes;
public User(String name,String email,Date bornDate)
...{
this.name=name;
this.email=email;
this.bornDate=bornDate;
this.loginTimes=5;
}
public String getName() ...{
return name;
}
//省略其它getter及setter方法
}
private String name;
private String email;
private Date bornDate;
private Integer loginTimes;
public User(String name,String email,Date bornDate)
...{
this.name=name;
this.email=email;
this.bornDate=bornDate;
this.loginTimes=5;
}
public String getName() ...{
return name;
}
//省略其它getter及setter方法
}
用于显示用户信息的html页面模板,内容如下:
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" />
< title > html模板 </ title >
</ head >
< body >
< h1 > 用户信息 </ h1 >
< p > 姓名:${name} < br />
邮箱:${email} < br />
出生日期:${bornDate} < br />
登录次数:${loginTimes} </ p >
</ body >
</ html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" />
< title > html模板 </ title >
</ head >
< body >
< h1 > 用户信息 </ h1 >
< p > 姓名:${name} < br />
邮箱:${email} < br />
出生日期:${bornDate} < br />
登录次数:${loginTimes} </ p >
</ body >
</ html >
给该模板取名为show.html,并存放在WEB-INF/views/hello目录下。最后我们需要写一个HelloAction,从而实现动态显示各种用户的信息。HelloAction中的代码如下:
package
com.easyjf.demo.mvc;
import java.util.Date;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractPageCmdAction;
public class HelloAction extends AbstractPageCmdAction ... {
public void show(WebForm form)
...{
User user=new User("天一","254400283@qq.com",new Date());
form.addPo(user);
}
}
import java.util.Date;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractPageCmdAction;
public class HelloAction extends AbstractPageCmdAction ... {
public void show(WebForm form)
...{
User user=new User("天一","254400283@qq.com",new Date());
form.addPo(user);
}
}
在web.xml中添加一个自动扫描Action的配置,如下:
然后起动Web服务器,在地址栏中输入, 执行结果如下:
<
context-param
>
< param-name > defaultActionPackages </ param-name >
< param-value >
com.easyjf.demo
</ param-value >
</ context-param >
< param-name > defaultActionPackages </ param-name >
< param-value >
com.easyjf.demo
</ param-value >
</ context-param >
可以看到,HelloAction的show方法中语句非常少,没有一条用来处理关于页面跳转的语句,也没有像Struts那些必须的return语句,EasyJWeb会自动找到相应的用户最想要的模板页面,然后进行输出。
当然,页面的跳转及组织并非固定死了的,如果你不愿意守这个规矩,想把show.html这个模板文件改名为show1.html,并存放到WEB-INF/views/myHello这个目录,则上面的show方法则可以写成如下的形式:
public
Page show(WebForm form)
... {
User user=new User("天一","254400283@qq.com",new Date());
form.addPo(user);
return new Page("/myHello/show1.html");
}
... {
User user=new User("天一","254400283@qq.com",new Date());
form.addPo(user);
return new Page("/myHello/show1.html");
}
另外,对于页面的组织,EasyJWeb是使用Module及模块的形式进行组织的,把多个相关的页面及功能都组装到一个模块中,比如假如上面的HelloAction中还要处理用户编辑,用户删除,用户列表显示等操作,则我们直接在上面的类中添加名为add、del、list等名称的方法即可,同时把相关的模板页面都统一存放在hello这个目录中。