开始写代码之前,我们先来看一下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. java实现数据库连接的工具类

    第一种 (带事务) package com.china.util; import java.sql.Connection; import java.sql.DriverManager; import ...

  2. 解决jQuery load()加载GB2312页面时出现乱码

    jquery的字符集是utf-8,load方法加载完GB2312编码静态页面后,出现中文乱码. 这是jQueryAJAX.html <!DOCTYPE html PUBLIC "-// ...

  3. IE6中png背景图片透明的最好处理方法

    在IE6浏览器下png(24位)的图片显示是不能透明的. 1.处理办法就是用DDPngMin.js <!--[if IE 6]> <script src="js/DDPng ...

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

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

  5. BZOJ2729 [HNOI2012]排队 【高精 + 组合数学】

    题目链接 BZOJ2729 题解 高考数学题... 我们先把老师看做男生,女生插空站 如果两个老师相邻,我们把他们看做一个男生,女生插空站 对于\(n\)个男生\(m\)个女生的方案数: \[n!m! ...

  6. Spring事务管理—aop:pointcut expression 常见切入点表达式及事务说明

    Spring事务管理—aop:pointcut expression 常见切入点表达式及事物说明 例: <aop:config>  <aop:pointcut expression= ...

  7. Visaul Studio 常用快捷键动画演示

    从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘.鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以 ...

  8. [bzoj 1208]STL水过

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208 看网上的题解都用的手写数据结构……然而直接用set的lower_bound就水过去了 ...

  9. Codeforces Round #524 (Div. 2) B. Margarite and the best present

    B. Margarite and the best present 题目链接:https://codeforces.com/contest/1080/problem/B 题意: 给出一个数列:an=( ...

  10. 如何取消PPT中的动画效果

    幻灯片放映——>设置放映式——>勾选放映时不加动画 (office2007)