Controller设计

MVC模型中,浏览器端和服务器端的交互总是以一个明确的URL作为中心,辅之以参数请求,我们可以非常明确地获取到一次交互中所有的Http信息,Controller层的设计差异是不同MVC框架之间最主要的差异,也就是Controlle如何响应页面请求,下面介绍几种常见MVC的Controller设计

Servlet

参数列表 —— Http请求被封装为一个HttpServletRequest对象(或者ServletRequest对象),而Http响应封装为一个HttpServletResponse对象(或者ServletResponse对象)
返回值 —— 方法不存在返回值
Servlet为参数-参数(Param-Param)实现模式

Struts1
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response);
  • 保留了HttpServletRequest和HttpServletResponse这两大接口作为参数
  • 将返回值改为ActionForward,并由Struts1.X框架通过处理ActionForward完成对响应结果的处理
  • 增加了ActionMapping和ActionForm两大参数,前者表示Http请求的一个简要概括,后者表示一个数据模型,用以承载整个请求生命周期中的数据

Struts1为参数-返回值(Param-Return)实现模式

Struts2
public class UserController {  

    private User user  

    public String execute() {  
        // 这里加入业务逻辑代码  
        return "success";  
    }  

    // 这里省略了setter和getter方法  
}  
  • 在Controller中彻底杜绝引入HttpServletRequest或者HttpServletResponse这样原生Servlet对象
  • 将请求参数和响应数据都从响应方法中剥离到了Controller中的属性变量

Struts2的Controller看起来更像是一个POJO,整个Controller类彻底与Web容器解耦,摆脱了Servlet束缚,可以方便地进行单元测试

SpringMVC
@Controller  
@RequestMapping  
public class UserController {      
    @RequestMapping("/register")  
    public ModelAndView register(String email, String password) {  
        // 在这里调用具体的业务逻辑代码  
        return new ModelAndView("register-success");  
    }   
}  
  • 使用参数-返回值(Param-Return)实现模式来打造Controller。SpringMVC屏蔽了内在的处理细节,呈现出来的是与请求参数名称一一对应的参数列表。而返回值ModelAndView则表示Http的响应是一个数据与视图的结合体,表示Http的处理结果
  • 引入Annotation来完成请求-响应的映射关系,配置简化
  • 泛化参数和返回值的含义

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值