一、前言

现在的项目大多数都是使用SpringMVC作为MVC框架。SpringMVC的学习成本较低,容易上手,简单实用。

二、应用

1、@Controller & @RequestMapping

控制层需要有@Controller的注解,一来标记这个类作为一个对象,二来标记这个是SpringMVC的控制层,用于接受请求。一般情况下需要在类的上面标记@RequestMapping,来接收请求,解析请求路径。

2、ModelAndView

这是一个常用的方法,用于处理同步请求。通过addObject(String,Object)方法,可以将数据传送到页面,一般通过C标签和EL表达式获取值。

视图通过setViewName的方法,返回到视图解析器。视图名称在视图解析器中拼接前后缀后获取视图并返回给客户端。

3、$.post & ResponseEntity<Map<String,Object>>(String id) 

在实际开发的过程中,我们经常用到Ajax来进行前后端交互。

$.post("${pageContext.request.contextPath }/Test/getData",{"id":"1"},function(data){
alert(data);
});

在后台我们需要通过@ResponseBody来指定返回页面数据,而不是页面跳转

@RequestMapping("/getData")
@ResponseBody
public String getData(String id) {
System.out.println(id);
return "'type':'10'";
}

如果我们需要传多个参数,上述的方式就需要在js中解析json字符串。因此各家公司有各家公司的做法,他们都会封装自己的框架,来提高开发效率。当然SpringMVC的开发者不会那么笨,让用户用上面这种方式操作,他们也封装了一套方法

@RequestMapping("/getData")
public ResponseEntity<Map<String,Object>> getData(String id){
Map<String,Object> map = new HashMap<String,Object>();
System.out.println(id);
map.put("type", "10");
map.put("flag","1");
return new ResponseEntity<Map<String,Object>>(map,HttpStatus.OK);
}

相对而言,前台取数据就比较方便:

$.post("${pageContext.request.contextPath }/Test/getData.do",{"id":"1"},function(data){
alert(data.type);
console.log(data.flag);
});

4、@RequestParam & @PathParam

@RequestParam用于接受参数,一般情况下SpringMVC会自动映射字段,可以不加这个注解。当遇到比如名称不同,上传文件的时候,这个注解就显得必要了。

另外一个比较重要的注解是@PathParam。我没记错的话,CSDN之前是用asp来做的,但是他的文章保存路径依然没有变化,大家在用看CSDN博客的时候有没有注意到url最后那串数字是啥来的?

从SpringMVC的角度来看,那应该是一个id,一个字段,用于后台数据库查询的

@RequestMapping("/test/{id}")
public ResponseEntity<Map<String,Object>> test(@PathParam("id")String id){
Map<String,Object> map = new HashMap<String,Object>();
System.out.println(id);
return new ResponseEntity<Map<String,Object>>(map,HttpStatus.OK);
}

通过@PathParam 我们可以获取到路径上的值,用作查询条件,查询出文章。

5、文件上传与下载

在实际开发的过程中,我们不仅会用同步、异步请求,同时还会用作文件的上传和下载。

Spring MVC 实现文件的上传和下载这篇博客包含了文件上传和下载的常用方法,有空不妨看下,当实际开发时用上文件上传和下载的时候,有这个成功案例可以参考。

三、结束语

本文没有阐述SpringMVC的基本原理,没有阐述MVC的思想,也不是SpringMVC的完整教程。本文旨在阐述SpringMVC的基本使用,由于SpringMVC本生实用性很强,简洁度很高,即使没有基础过SpringMVC的同学都通过本文了解到SpringMVC的基本使用,再参考其他文章、教程,两三天上手是没有问题的。文章如有不当之处,还请各位不吝赐教,加以指正。

Reference:

[1] 黄勇, 从 MVC 到前后端分离, https://my.oschina.net/huangyong/blog/521891

[2] Sunnier, 史上最全最强SpringMVC详细示例实战教程, https://www.cnblogs.com/sunniest/p/4555801.html

[3] Hello.NET, SpringMVC注解@Component、@Repository、@Service、@Controller区别, https://www.cnblogs.com/mfc-itblog/p/6854504.html

[4] 钱春华,  Spring MVC 实现文件的上传和下载, http://blog.csdn.net/qian_ch/article/details/69258465

[5] ryelqy, SpringMVC之使用ResponseEntity, https://blog.csdn.net/ryelqy/article/details/76650808

最新文章

  1. Mysql大范围分页优化案例
  2. EASYUI 表单(FORM)用法
  3. 跨平台开源通讯组件elastic communication
  4. Android -- TextView、button方法详解(1)
  5. U3D使anim,unity,prefab文件不显示乱码
  6. ASP流程控制语句
  7. 数学类杂志SCI2013-2014影响因子
  8. DataTable中数据针对某列数据去重
  9. bzoj 4244 括号序列dp
  10. Tesseract-ocr 工具使用记录
  11. HTTP/1.1 请求方法
  12. 《温故而知新》JAVA基础四
  13. 解决IE9下交通银行网上银行无法输入密码的问题
  14. 960CSS框架,之前有用过 了解下框架基本原理
  15. textarea 元素的 placeholder 属性不显示
  16. Scala的控制结构和函数
  17. 一个PHP操作大变量的例子
  18. centos创建子用户
  19. angularJS的MVC的用法
  20. VS报错之混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

热门文章

  1. Linux环境下:vmware安装Windows报错误-缺少所需的CD/DVD驱动器设备驱动程序
  2. English--动词时态
  3. 【转载】C#使用InsertRange方法往ArrayList集合指定位置插入另一个集合
  4. 英特尔加速 Android 应用
  5. VMware网络连接三种模式bridged、host-only、NAT
  6. CDA数据分析【第二章:数据收集与导入】
  7. Win10下免安装版JDK8环境变量配置
  8. windows10安装redis
  9. docker命令小全 this is my note.
  10. (三)MongoDB增、删、改、查