zoukankan      html  css  js  c++  java
  • 简单与实用:SpringMVC的常见使用

    一、前言

            现在的项目大多数都是使用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

  • 相关阅读:
    flask框架+上传文件接口实战【软件测试培训】【多测师_王sir】
    读取Excel中的视频文件地址+requests库下载后存入本地文件夹【软件测试培训】【多测师_王sir】
    UI和接口自动化中的设计模式:单例模式【软件测试培训】【多测师_王sir】
    Python+BeautifulReport生成完美的接口自动化测试报告【多测师_王sir】
    Linux命令中查找以.log结尾文件中不包含某个特定字符串这行的内容【多测师_王sir】
    查询多条数据
    django登录装饰接口封装
    django使用redis作为session缓存
    tinymce配置
    django重写authcenticate方法兼容用户、邮箱、密码认证登录
  • 原文地址:https://www.cnblogs.com/ryelqy/p/10104055.html
Copyright © 2011-2022 走看看