开始写代码之前,我们先来看一下spring MVC概念。一张图能够清晰得说明。

除了controller,我们需要编写大量代码外,其余的都可以通过配置文件直接配置。

MVC的本质即是将业务数据的抽取和业务数据的呈现分开来。controller是连接model和View的桥梁,在这一层,主要是业务逻辑的设置。

ModelAndView有两种形式:Model 和 Map这使得在编写controller中的方法时也有两种参数形式。

首先来看基础代码,这也常用的形式:

//url: /user/show2?userId=123
@RequestMapping(value = "/show2?userId",method = {RequestMethod.GET})
public String showUser2(@RequestParam("userId")Integer userId,Model model){
User user = userService.getUserById(userId);
model.addAttribute(user);
return "showUser";
}

比较传统的方式是使用HttpServletRequest,代码如下:

//url:/user/show1?userId=123
@RequestMapping("show1")
public String showUser(HttpServletRequest request){
int userId = Integer.parseInt(request.getParameter("userId"));
User user = userService.getUserById(userId);
request.setAttribute("user", user);
return "showUser";
}

更为现代一点的方式是使用Map,同时url地址更为简洁,可以直接输入路径变量的值,而不需要再把路径变量也写出来。代码如下:

//url: /user/show3/{userId}
@RequestMapping(value = "/show3/{userId}",method = RequestMethod.GET)
public String showUser3(@PathVariable("userId") Integer userId,Map<String,Object> model){
User user = userService.getUserById(userId);
model.put("user", user);
return "showUser";
}

MVC架构中的controller的几种写法的更多相关文章

  1. MVC架构中的Repository模式 个人理解

    关于MVC架构中的Repository模式   个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接 ...

  2. MVC架构中,用户的请求简单梳理

    MVC架构中,用户的请求分为下面3个步骤: 终端用户发送请求,路由器将请求路由到合适的Controller,Controller是逻辑实体和行为action的集合. Controller将请求映射到特 ...

  3. t-sql 中between and 的一种写法

    t-sql 中between and 的一种写法: where GETDATE() BETWEEN BeginDateTime AND EndDateTime; BeginDateTime,EndDa ...

  4. java中for循环的6种写法

    有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考.   package ForLoop; import java.util.ArrayList; import java.util.Itera ...

  5. controller 有两种写法,讨论一下两种写法的区别:

    controller 有两种写法,讨论一下两种写法的区别: 写法 1: app.controller('myCtrl', function($scope, $location) { $scope.my ...

  6. Angularjs中controller的三种写法

    在Angular中,Directive.Service.Filter.Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service.angularjs中cont ...

  7. angularjs controller的两种写法

    在Angular中,Directive.Service.Filter.Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service.如: app.control ...

  8. 在JavaScript中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

  9. js中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

随机推荐

  1. svn建立主干和分支在分支上开发然后合并到主干

    我们以后打算用svn分支了,如何避免对新事物的恐惧心理呢? 领导: “我们需要慢慢适应,开始的时候我们先用一个项目练手,等熟悉了之后,再把每个项目都建上分支”

  2. CentOS 7 samba 配置

    1.安装samba sudo yum install samba 2.环境配置 a.关闭防火墙 sudo systemctl stop firewalld.service #停止firewallsud ...

  3. delphi中写SQL语句中变量的注意事项

    1.procedure TForm1.btn1Click(Sender: TObject); var   s: String; begin   S := 'select * from TMarketI ...

  4. sql语句编写 有时候一个子查询可以拆分成多个子查询

    sql语句编写 有时候一个子查询可以拆分成多个子查询

  5. window+kafka

    window环境搭建zookeeper,kafka集群 为了演示集群的效果,这里准备一台虚拟机(window 7),在虚拟机中搭建了单IP多节点的zookeeper集群(多IP节点的也是同理的),并且 ...

  6. 【bzoj2659】[Beijing wc2012]算不出的算式 数论

    题目描述 求,其中p和q是奇质数. 输入 只有一行,两个奇质数,分别表示p,q. 输出 一个数,表示算式结果. 样例输入 5 样例输出 6 题解 数论 神TM数学结论题... 当$p\neq q$时, ...

  7. BZOJ 2005 2005: [Noi2010]能量采集 | 容斥原理

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2005 题解: http://blog.csdn.net/popoqqq/article/de ...

  8. 关于连通性问题的Tarjan算法暂结

    关于基础知识的预备桥和割点.双联通分量.强连通分量,支配树.(并不会支配树) 关于有向图的Tarjan,是在熟悉不过的了,它的主要功能就是求强联通分量,缩个点,但是要注意一下构建新图的时候有可能出现重 ...

  9. ambari server内存溢出

    抛出的异常信息如下: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Me ...

  10. Drac6-Web界面无法访问

    1. ssh idracip, and reset RAC -- will need around 10mins /admin1-> racadm racreset RAC reset oper ...