理解控制器

本文详细介绍了MVC架构中控制器的基本概念,包括控制器的创建、操作映射、默认视图渲染及视图类型的灵活选择等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建控制器

  每个request都会创建一个控制器实例,用于处理请求,控制器能产生响应并渲染指定的视图。控制器的类名必须以Controller结尾,比如ApplicationController, HelloController等。

2、创建操作

  每个控制器可以有多个操作,每个操作将会映射到URI上,比如

public class BookController extends ApplicationController{
    public void index(){
    }
    public void list(){
    }
    public void show(){
    }
}

 将会映射到/myweb/book/index, /myweb/book/list, /myweb/book/show。

 如果一个操作不存在,将会选择index的操作,比如对于/myweb/book这个URI的请求,将会尝试查找并执行Book控制器中的index动作。

3、隐式对象

 控制器因为继承了Controller,所以可以操作Controller中的一些对象,常用的对象如下:

  • request
  • response
  • session
  • servletContext
  • flash
  • controllerName
  • actionName

 其作用可以从名称中猜到吧。

4、视图

  控制器中每个动作一般都会渲染一个视图,默认将使用JSP视图,即对于上面的Book控制器,将会对应使用/WEB-INF/views/book目录中的index.jsp, list.jsp, show.jsp页面。

  每个控制器将对于一个目录,目录名称对应控制器名称,但必须是小写的,每个动作将对应一个模板文件,这依赖于动作所使用的视图类型。

  框架支持多种视图的类型,并且可以自行扩展,比如可以使用JspView, TextView, JsonView, FreeMarketView, BinaryView等,那么如何使用不同的视图类型呢,这通过动作的返回值进行选择。比如

    public JsonView create() throws Exception{
        Map<String,Object> result = new HashMap<String,Object>();
        result.put("success", true);
        //...
        return new JsonView(result);
    }

 这个create动作将使用JsonView视图,也即返回json的字符串信息。其他使用视图的方式类推,如果没有明确指定何种视图,即返回值是void的情况,将会默认使用Jsp视图。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值