Web MVC框架-视图模板查找及组织

我们知道,一个基于请求转发的Web MVC框架需要解决如何告知框架使用那个视图来进行程序执行结果的显示。对于struts1.x来说,需要在struts-config.xml文件中配置大量的page或者在程序硬编码中执行new Forward 来告知框架实现某个视图的跳转。而对于
struts2.0或者webwork2.0来说,需要在struts.xml文件中使用 returen SUCCESS 或者"",并在配置文件中使用配置来指定具体的输出路径。一堆一堆的代码有的时候把程序员弄得没有脾气。这也是近段时间,ralis势头上涨的原因之一。
而EasyJWeb引入了很大灵活运用,解决了传统MVC框架的查找页面再跳转问题。使用惯例代替配置的方式,可以不写任何代码或者配置文件,EasyJWeb可知道程序要跳转的页面,并且实现改页面要呈现的结果。
比如一个简单的需求,需要把登录用户的信息显示在页面上。这个需求涉及到用户需要把请求传到服务器,服务器接受请求后进行相应的业务处理,然后将相应的信息显示在页面上。
User类的基本信息如下:
public class User{
  private String username;
  private String email;
  private String birthday;
  private int login_time;
  public User(String username,String email,String birthday){
     this.username=username;
     this.password=email;
     this.birthday=birthday;
     login_time=6;//这里只是进行简单的模拟
  }
  public User(){
   
  }
  public void setUsername(String username){
     this.username=username;
  }
  public String getUsername(){
     return username;
  }
  //其他的set与get方法不再写
}
用于显示用户基本信息的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>姓名:${username}<br/>
邮箱:${email}<br/>
出生日期:${birthday}<br />
登录次数:${login_time}</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("追求现实","[email protected]",new Date());   
    form.addPo(user);
}
}
在web.xml中添加一个自动扫描Action的配置,如下:
<context-param>
        <param-name>defaultActionPackages</param-name>
        <param-value>
            com.easyjf.demo
        </param-value>
</context-param>
然后起动Web服务器,在地址栏中输入, 执行结果如下:

可以看到,HelloAction的show方法中语句非常少,没有一条用来处理关于页面跳转的语句,也没有像Struts那些必须的return语句,EasyJWeb会自动找到相应的用户最想要的模板页面,然后进行输出。

当然,页面的跳转及组织并非固定死了的,如果你不愿意守这个规矩,想把show.html这个模板文件改名为show1.html,并存放到WEB-INF/views/myHello这个目录,则上面的
show方法则可以写成如下的形式:
public Page show(WebForm form){
   User user=new User("追求现实","[email protected]",new Date());
   form.addPo(user);
   return new Page("/myHello/show1.html");
}
另外,对于页面的组织,EasyJWeb是使用Module及模块的形式进行组织的,把多个相关的页面及功能都组装到一个模块中,比如假如上面的HelloAction中还要处理用户编辑,用户删除,用户列表显示等操作,则我们直接在上面的类中添加名为add、del、list等名称的方法即可,同时把相关的模板页面都统一存放在hello这个目录中。

你可能感兴趣的:(框架,Web,mvc,struts,webform)