`
kang275284
  • 浏览: 165371 次
  • 性别: 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);
}


 
分享到:
评论

相关推荐

    mvc页面跳转实例

    在ASP.NET MVC框架中,有多种实现页面跳转的方式。一种是使用`Redirect()`或`RedirectToAction()`方法,它们会生成一个HTTP 302重定向响应,将客户端浏览器引导到新的URL。例如,在控制器的动作方法中,你可以写: ...

    轻量级java web MVC框架

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

    框架---mvc

    使用MVC框架,开发者可以快速构建健壮的Web应用程序,同时保持代码的整洁和高效。 总的来说,MVC模式是一种强大的设计思想,它通过分离职责,提高了软件的可维护性和可扩展性。在选择和使用MVC框架时,开发者应根据...

    MVC框架的理解

    ### MVC框架的理解 MVC(Model-View-Controller)架构模式是软件工程中常用的一种设计模式,主要用于简化复杂的用户界面程序开发。它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller...

    MVC框架的实现原理,

    在本篇中,我们将重点探讨MVC框架的实现原理,并结合SSH(Struts、Spring、Hibernate)框架进行讲解。 在MVC模式中,`Model`代表模型层,负责处理业务逻辑和数据操作。`View`是视图层,主要用于展示数据,而`...

    漂亮 TP框架表单提交跳转页面

    标题中的“漂亮 TP框架表单提交跳转页面”指的是使用ThinkPHP(简称TP)框架进行Web开发时,关于表单提交后如何实现页面跳转的一个技术主题。在Web应用中,表单提交是用户与服务器交互的重要方式,而跳转页面则关乎...

    NET_Web开发震撼之变:.NET_MVC框架

    .NET Web开发领域中,.NET MVC框架是一个至关重要的里程碑,它极大地改变了Web应用程序的设计和开发方式。MVC,即Model-View-Controller,是一种广泛采用的软件设计模式,尤其适用于构建可维护、可扩展和高度分化的...

    Spring MVC点击链接,跳转到指定页面

    在Spring MVC框架中,网页间的跳转是通过控制器(Controller)处理请求并返回视图(View)来实现的。在给定的场景中,我们有一个简单的应用,用户在`index.jsp`页面上点击一个链接,目标是跳转到`success.jsp`页面。...

    spring-mvc-documentation-linesh-translation

    - **允许其他MVC实现**: Spring Web MVC 支持与其他MVC框架集成,提供了一种灵活的方式来扩展应用程序的功能。 - **DispatcherServlet**: DispatcherServlet 是 Spring MVC 的核心组件之一,负责接收 HTTP 请求并将...

    基于C# MVC开发的WEB API通用框架 附带 微信 支付宝支付集成

    WEB API是C# MVC框架的一个扩展,专门用于构建RESTful Web服务。它允许开发者使用HTTP协议来创建、读取、更新和删除(CRUD)资源。WEB API支持多种数据格式,如JSON和XML,使得移动应用、浏览器和其他客户端可以...

    自己手写PHP MVC 框架

    控制器可以处理复杂的逻辑,如验证输入、跳转页面等,避免了视图和模型的直接耦合。 **路由(Routing)**: 路由是MVC框架的关键部分,它负责解析URL并映射到相应的控制器和方法。通过定义路由规则,可以灵活地设置...

    Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转

    在本主题中,我们将深入探讨Spring框架的Web应用程序开发,特别是如何通过简单的控制器来实现页面间的跳转。《Spring4 In Action》是Spring框架的经典学习资料,第五版的2.2章节聚焦于Spring MVC,它是Spring框架...

    ASP.NET-MVC-QQ-Connect.rar

    通过这个ASP.NET-MVC-QQ-Connect示例,开发者不仅可以学习到如何在ASP.NET MVC项目中实现QQ登录,还能理解OAuth 2.0授权机制,以及如何在MVC框架下处理第三方登录的完整流程。这对于想要构建社交功能或者希望利用QQ...

    用servlet模拟struts_mvc框架

    **Servlet模拟Struts_MVC框架详解** 在Java Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将业务逻辑、数据处理和用户界面分离,提高了代码的可维护性和可扩展性。Struts是Apache组织...

    web程序-后端框架搭建

    在构建Web应用程序时,后端框架的搭建是至关重要的步骤,它为整个系统提供结构、逻辑和交互的基础。本教程将聚焦于"web程序-后端框架搭建",特别是使用Spring Boot来创建一个传统的Web信息管理系统。让我们深入探讨...

    基于PHP的Q快速mvc框架for Win.zip

    4. **路由机制**:Q快速MVC框架内置了路由系统,可以根据URL自动匹配控制器和方法,实现URL的美化和更加灵活的页面跳转。 5. **库和插件**:框架通常包含一系列预定义的库和插件,如数据库连接管理、表单验证、会话...

    Student-Layui-MVC-main.zip

    “MVC框架项目源码”则提供了一个实际的Web应用示例,通过分析和运行这些源代码,学习者可以更直观地理解MVC模式在实际开发中的应用。源码可能包含了Model类、Service层、DAO层、Controller层以及对应的视图文件,如...

    PHP实例开发源码-禅道php mvc框架.zip

    【PHP MVC框架详解】 ...通过以上步骤,你将能够熟练地使用禅道PHP MVC框架进行Web开发,享受到它带来的高效和便捷。在不断学习和实践中,你还可以探索更多高级特性和最佳实践,提升自己的PHP开发技能。

    MVC2 带页面跳转的消息提示框 JS实现,很好用的

    MVC2是ASP.NET MVC框架的一个版本,它为开发者提供了构建动态、数据驱动的网页应用的强大工具。在本案例中,我们将探讨如何在MVC2中使用JavaScript实现一个带有页面跳转功能的消息提示框。 首先,消息提示框通常...

Global site tag (gtag.js) - Google Analytics