`
kang275284
  • 浏览: 163476 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Web MVC框架-命令及页面跳转

阅读更多
<script type="text/javascript" src="http://wz.csdn.net/javascripts/vote.js"></script><script type="text/javascript" src="http://blog.csdn.net/count.aspx?ID=1934413&amp;amp;Type=Rank"></script>

   对于开发对于页面连接尤如蜘蛛网一样,经常会有一堆具有千头万绪的关联页面组成的大中型Web应用来说,如何组织及处理页面的跳转成为一个MVC框架非常关键因素。Struts1之所以能得到大家的认可,是因为他基本解决了数据与视图分离的问题,之所以Struts升级一个版本到Struts2后不再“Struts”了,核心原因除了框架核心技术落后、很多地方受限制以外,一个原因是他无法很好地组织及处理页面跳转问题。当然尽管升级到了Struts2,但相对于Rails等新兴MVC的框架来说,显得死板了很多。
   而EasyJWeb在页面组织及处理页面跳转等方面,提供了很多更加灵活的功能,很多思想来自于Spring MVC、Rails等一些新兴Web框架的精髓,他能让你用比较简洁的代码、甚至不用代码来实现页面的跳转。
  在Web应用程序开发中,我们经常遇到如下的需求:
  1、从这个页面连接到另外一个页面;
  2、在服务器执行完某一段程序后,把输出导向另外一个页面;
  3、在服务器端执行完某一段程序后,把输出导向到另外一段程序继续执行;
  4、在服务器程序执行完后,选择使用一个页面呈现用户输出;
  5、页面跳转要具有较强的环境适应能力,比如部署在跟目录下跟部署到其它Context目录下都能执行正确的跳转;
  6、还有更变态的,比如EasyJF官网,要求使用动态地址访问的时候,看到的地址全是动态,当使用静态地址访问的时候,地址全是静态的,Java Web服务器不能工作了,Apache或IIS也要保证网页能正常访问。
  7、有的人喜欢使用/user/edit/1这样的url,有的人喜欢使用/user.ejf?cmd=edit&id=1这样的url,我们要求不管使用哪一种url样式访问页面,连接都会非常友好的变成用户喜爱的形式。

   可以说,现在很少有框架能完全满足或者为用户考虑到如此复杂多变而对于我们国人来说应用性又非常广泛的需求。一些框架即使提供上面一些功能也是以书写复杂的代码及配置文件为代价的。在EasyJWeb中,提供了上面所列的这些功能,并提供了非常简洁的调用接口及方法。
   针对上面的几点,EasyJWeb的解决方案:
  1,这个用<a>标签,不用说了。
  2、在服务器执行完某一段程序后,把输出导向另外一个页面;
  返回html类型的Page对象。
  3、在服务器端执行完某一段程序后,把输出导向到另外一段程序继续执行;
   使用forward或者go方法。
  4、在服务器程序执行完后,选择使用一个页面呈现用户输出;
   使用page方法。
  5、页面跳转要具有较强的环境适应能力,比如部署在跟目录下跟部署到其它Context目录下都能执行正确的跳转;
  在页面模板中使用$html.url,比如:<a href="$html.url('user.list')">用户列表</a>。
  6、不同地址样式转移
  在页面模板中使用$html.forward,比如<a href="$html. forward'('news.technic')">技术前沿</a>。这样动态的时候访问到的是news.ejf?cmd= technic,静态的时候访问到的是/news/technic.html。
  7、传统及现代的URL样式转换
   仍然是使用$html.url,或$html.forward标签,他能感知你的url样式。比如:<a href="$html.url('user.add')">添加用户</a>。你使用user.ejf?cmd=lsit,访问应用,则当点添加user.ejf?cmd=add。而如果你使用/ejf/user/list访问应用,则编辑按钮的连接变成ejf/user/add。
  
  在代码中,除了可以使用最原始的return new Page()方式返回用户的视图模板以外,还可以使用一些快捷方法来实现灵活的视图查询及跳转。比如,go、forward、page等方法。下面看一个用户添删改查的示例中的Action代码如下:

import com.easyjf.container.annonation.Inject;
import com.easyjf.core.support.query.QueryObject;
import com.easyjf.util.CommUtil;
import com.easyjf.web.WebForm;
import com.easyjf.web.core.AbstractPageCmdAction;
import com.easyjf.web.tools.IPageList;

public class UserAction extends AbstractPageCmdAction ...{
 
 @Inject
 
private UserService service;
 
 
public void setService(UserService service) ...{
  
this.service = service;
 }

 
/** *//**
  * 显示添加用户的界面user/edit.html
  
*/

 
public void add()
 
...{
  page(
"edit");
 }

 
public void edit(WebForm form)
 
...{
  String id
=(String)form.get("id");
  User user
=this.service.getUser(new Long(id));
  form.addPo(user);
 }

 
public void save(WebForm form)
 
...{
  User user
=form.toPo(User.class);
  
if(hasErrors())
  
...{
   page(
"edit");
   
return;
  }

  service.saveUser(user);
  forward(
"list");
 }

 
public void update(WebForm form)
 
...{
  String id
=(String)form.get("id");
  User user
=this.service.getUser(new Long(id));
  form.toPo(user,
true);
  
if(hasErrors())
  
...{
   page(
"edit");
   
return;
  }

  service.updateUser(user);
  forward(
"list");
 }

 
public void delete(WebForm form)
 
...{
  String id
=(String)form.get("id");
  User user
=this.service.getUser(new Long(id));
  service.delUser(user);
  go(
"list");
 }

 
public void list(WebForm form)
 
...{
  QueryObject qo
=form.toPo(QueryObject.class);
  IPageList pageList
=service.queryUser(qo);
  CommUtil.saveIPageList2WebForm(pageList, form);  
 }

}


UserService接口:
public interface UserService ...{
 
/** *//**
  * 根据id查询用户
  * 
  * 
@param id
  * 
@return
  
*/

 User getUser(Long id);

 
/** *//**
  * 保存用户
  * 
  * 
@param user
  
*/

 
void saveUser(User user);

 
/** *//**
  * 修改用户信息
  * 
  * 
@param user
  
*/

 
void updateUser(User user);

 
/** *//**
  * 删除用户
  * 
  * 
@param user
  
*/

 
void delUser(User user);

 
/** *//**
  * 查询用户信息
  * 
@param query 
  * 
@return 分页信息及记录集
  
*/

 IPageList queryUser(IQueryObject query);
}


 
分享到:
评论

相关推荐

    轻量级java web MVC框架

    一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: &lt;context-param&gt; ...

    基于MVC框架的SpringWeb应用程序源码

    基于MVC框架的SpringWeb应用程序源码 用户从登录页面输入用户名和密码,尝试登录系统, 如果登录失败,跳转至失败页面并提示失败信息, 如果登录成功,跳转至成功页面显示欢迎信息

    基于框架的Web开发-第一个springMVC的例子.doc

    和mvc同一层次的resources文件夹,里面放系统配置文件applicationContext.xml顶层包mvc,下面分三个子包domain,service和web,mvc.web包里放控制器类WEB-INF文件夹下放置web.xml文件和mySpring-servlet.xml文件Web...

    基于easy-mvc的后台管理系统源码 v1.1 BackstageManagementBasedEasyMvc.rar

    easy-mvc框架特点: * 摒弃微软庞大的mvc库,只有1个dll * 自动扫描DAL接口并实现注册,无需指定实现类 * 自定义getRequest和getResponse实现请求和响应的处理 * 自定义返回值,实现跳转页面或返回JSON等功能。...

    Web 框架之 SSH 框架的简单搭建的整理(基于Eclipse,搭建演示完整工程,jar、代码 、html)

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。 ———————————————— ...

    play framework 框架手册 word 版

    跳转到其他URL - 36 - Action链 - 36 - 定制web编码 - 37 - 拦截器 - 38 - @Before - 38 - @After - 39 - @Catch - 40 - @Finally - 41 - 控制器继承 - 42 - 使用@With注释添加更多的拦截器 - 42 - Because Java ...

    play框架手册

    MVC应用程序模型 - 7 - app/controllers - 8 - app/models - 8 - app/views - 8 - 请求生命周期 - 8 - 标准应用程序布局layout - 9 - app目录 - 9 - public目录 - 10 - conf目录 - 10 - lib目录 - 11 - 开发生命周期...

    基于Springboot2+Bootstrap3开发的动漫主题网站

    一个动漫主题的网站,支持播放、评论、弹幕、收藏等操作; 并提供画板、商城、游戏等其他附属板块 该系统分为主站和后台管理两...Web MVC框架: Struts2 ORM框架: Hibernate for JPA IOC与AOP框架: Spring 安全框架: Shiro

    其他类别JdonFramework开源框架 v5.1 Build20071025-jdonframework-5.1.rar

    JdonFramework提供了一套完整的MVC(模型-视图-控制器)架构模式实现,使得开发者可以更加专注于业务逻辑的编写,而非底层的页面跳转和数据处理。它支持灵活的数据库操作,提供丰富的标签库,以及便捷的API接口,...

    单页面和多页面开发及应用

    -Ember.js是基于模型-视图-控制器(MVC)软件架构模型的客户端侧JavaScript Web应用程序框架。它允许开发人员在一个框架中通过常用的习惯用语和最佳实践来创建可伸缩的单页面应用程序。该框架提供丰富的对象模型、...

    JavaWeb-register-And-login:运用MVC模式web框架jsp,实现简单注册登陆

    JavaWeb-register-And-login一个运用了MVC模式及JavaWeb三大框架的注册和登录系统在网上找的一个项目,对比着敲了一遍。MVC模式实现模型(domain)、视图(jsp)、控制器(servlet)三者的分离JavaWeb三大框架实现Web层、...

    基于JavaWeb + Mysql + Layui实现的宿舍管理系统源码+数据库+演示截图+项目说明.zip

    - JavaScript用于异步刷新页面和跳转页面。 本次高校宿舍管理系统能够满足用户的基本需求,方便快捷,既节省了时间,提高了效率,又节约了开发成本,给宿舍管理带来了极大的改善。 &gt;开发工具: - 操作系统:...

    ssh 框架jar包

    其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据...

    SpringMvc完整的HelloWorld工程源码下载(含依赖jar包).txt

    该源码是一个java web项目工程,主要是测试Spring的web层MVC框架,主要包括src、WebRoot主目录,其中src为java源码目录,包括HelloController.java文件,WebRoot主要web工程的相关资源存放目录。项目截图如下所示,...

    基于模型-视图-控制器的Web应用程序框架设计

    传统的web应用程序会在表现层包含管理用户交互的代码,例如:一个页面可以决定用户将要跳转的下一个页面。...本文基于MVC模式,提出了一个可扩展的框架,简化了对从web页面独立出来的业务逻辑代码的处理,有利

    AisMVC.zip

    我们团队开发web项目一般采用前后端分离,所以后端的的Controller层的功能仅仅只有提供ajax接口,页面集成后的跳转,过滤器和拦截器,所以我就想着自己写一款仿springmvc的mvc框架作为自己和团队以后的开发中小型项目的...

    Java知识拾遗:三大框架的技术起源

    Struts、Hibernate和Spring是我们Java开发中...但是这种结构仍然存在问题:如JSP页面中需要使用符号嵌入很多的 Java代码,造成页面结构混乱,Servlet和Javabean负责了大量的跳转和运算工作,耦合紧密,程序复用度低等等

    javaWeb_struts2框架实现简单用户注册登录

    3.控制器采用action开发,替代传统的servlet,直接跳转页面返回一个字符串即可,需配置struts.xml对应的jsp。 4.struts2,可以直接对表单提交的数据封装成对象,简洁!当然需要在web.xml中配置核心filter—...

    工业电子中的基于模型-视图-控制器的Web应用程序框架设计

    传统的web应用程序会在表现层包含管理用户交互的代码,例如:一个页面可以决定用户将要跳转的下一个页面。...本文基于MVC模式,提出了一个可扩展的框架,简化了对从web页面独立出来的业务逻辑代码的处理,有利

Global site tag (gtag.js) - Google Analytics