MVC架构中的controller的几种写法
开始写代码之前,我们先来看一下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的几种写法的更多相关文章
- MVC架构中的Repository模式  个人理解
		
关于MVC架构中的Repository模式 个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接 ...
 - MVC架构中,用户的请求简单梳理
		
MVC架构中,用户的请求分为下面3个步骤: 终端用户发送请求,路由器将请求路由到合适的Controller,Controller是逻辑实体和行为action的集合. Controller将请求映射到特 ...
 - t-sql 中between and 的一种写法
		
t-sql 中between and 的一种写法: where GETDATE() BETWEEN BeginDateTime AND EndDateTime; BeginDateTime,EndDa ...
 - java中for循环的6种写法
		
有些写法上的说明写的过于武断,可能有很多不当之处,仅供参考. package ForLoop; import java.util.ArrayList; import java.util.Itera ...
 - controller 有两种写法,讨论一下两种写法的区别:
		
controller 有两种写法,讨论一下两种写法的区别: 写法 1: app.controller('myCtrl', function($scope, $location) { $scope.my ...
 - Angularjs中controller的三种写法
		
在Angular中,Directive.Service.Filter.Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service.angularjs中cont ...
 - angularjs controller的两种写法
		
在Angular中,Directive.Service.Filter.Controller都是以工厂方法的方式给出,而工厂方法的参数名对应着该工厂方法依赖的Service.如: app.control ...
 - 在JavaScript中创建命名空间的几种写法
		
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
 - js中创建命名空间的几种写法
		
在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...
 
随机推荐
- 微信公众号开发java框架:wx4j(KefuUtils篇)
			
wx4j-KefuUtils介绍 函数说明:添加客服 参数:Kefu对象 返回值:微信服务器响应的json字符串 public String addKefu(Kefu kefu) 函数说明: 参数:K ...
 - lintcode-92-背包问题
			
92-背包问题 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 注意事项 你不可以将物品进行切割. 样例 如果有4个物品[2, 3, 5, 7] 如果背包 ...
 - java csv list cant not repeat
			
require: /** * before: * file A1.csv {1,2,3,4,5} * file A2.csv {2,3,9,10,11} * file B1.csv {5,12,13, ...
 - Resources for Browser/Webkit/GPU
			
Tali Garsiel's site: http://taligarsiel.com/ Webkit Main Flow Chromium Project: http://www.chromium. ...
 - 前端将markdown转换成html
			
实现过程: 1. npm引入:npm install marked --save 2.在需要的文件(.ts)里import Marked from "marked"; 如果.j ...
 - capacilitys 持续集成
			
目前看好像是说以docker为例来看看这个权限到底是怎么来的? 可以通过在二进制上setcap得到,也可以通过函数自己用setcap得到,两种方法,docker肯定是第二种方法啊,docker中间肯定 ...
 - java生成唯一的id编号
			
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
 - P2127 序列排序
			
题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格式 输入格式 ...
 - BZOJ4651/UOJ220 [Noi2016]网格
			
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
 - C&C++——extern
			
1.C 调用C++的函数或变量 C 调用C++的函数或变量,在C++的头文件声明为extern "C" ,C调用的时候只使用extern 声明. 可见,extern "C ...