1.过滤静态资源

@ResponseBody注解作用
作用:将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。

作者:笨小孩_ed47
链接:https://www.jianshu.com/p/dd120e61ac0b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

现在可能有这样的场景,页面发送一个ajax请求,明显是一个异步请求,后台需要把一些对象,转换成json的字符串,然后给你响应回去。然后我们就需要用responseBody这个注解就可以完成这个事
我们需要搭建一个异步环境。然后去引入一个jQuery.min.js的文件

然后我们就要在页面上引入这个js文件,然后就可以引用jQuery提供的函数或者方法。

<head><title>Title</title><script src="js/jquery.min.js"></script>
</head>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><script src="js/jquery.min.js"></script><script>//页面加载,绑定单击事件$(function(){$("#btn").click(function(){alert("hello");})});</script>
</head>
<body>
<br/>
<a href="user/testString">testString</a>
<br/>
<a href="user/testVoid">testVoid</a>
<br/>
<a href="user/testForwardOrRedirect">ForwardOrRedirect</a>
<br/>
<!--模拟button按钮-->
<button id="btn">发送ajax请求</button></body>
</html>


编写了以上代码,但是点击按钮,并没有起到作用,原因是前端控制器DispathcerServlet把我们的静态资源都给拦截了,因此我们需要配置告诉前端控制器我们这些静态资源你不要去拦截,我们就用不了它。所以点击事件没有任何效果
所以我们需要告诉DispatcherServlet哪些静态资源是不需要拦截的。
什么是静态资源:css和js还有imgs等都属于静态资源
所以我们需要在springmvc.xml中配置

<!--前端控制器,哪些静态资源不被拦截
location:目录下的所有文件我都不拦截,mapping:跟映射请求相关,也就是以后请求路径上包含/js/,下面的任何文件,我都不会对它进行拦截
-->
<mvc:resources mapping="/js/**" location="/js/"/><!--javascript-->

对于其他的样式和图片拦截。

<mvc:resources mapping="/js/**" location="/js/"/><!--javascript-->
<mvc:resources mapping="/css/**" location="/css/"/><!--css-->
<mvc:resources mapping="/imgs/**" location="/imgs/"/><!--imgs-->

web.xml中

<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping><servlet-name>default</servlet-name><url-pattern>*.css</url-pattern>
</servlet-mapping>

2.响应json数据之发送ajax的请求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><script src="js/jquery.min.js"></script><script>//页面加载,绑定单击事件$(function(){$("#btn").click(function(){//发送ajax$.ajax({//编写json,设置属性和值url:"user/testAjax",contentType:"application/json;charset=UTF-8",data:'{"username":"hehe","password":"123","age":"30"}',dataType:"json",type:"post",success:function (data) {//data服务器端响应的json的数据,进行解析}})});});</script>
</head>
<body>
<!--模拟button按钮-->
<button id="btn">发送ajax请求</button>
<br/>
</body>
</html>
//模拟异步请求和响应
@RequestMapping("/testJson")
public void testJson(@RequestBody String body){System.out.println("testForwardOrRedirect方法执行了");System.out.println(body);
}

3.响应json数据之发送ajax的请求

想把拿过来的JSON数据封装到Javabean中,如果你发的地址跟我们Javabean的属性是相同的,他就可以封装到我们的Javabean对象中。
它需要用到一些jar包。

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><script src="js/jquery.min.js"></script><script>//页面加载,绑定单击事件$(function(){$("#btn").click(function(){//发送ajax$.ajax({//编写json,设置属性和值url:"user/testAjax",contentType:"application/json;charset=UTF-8",data:'{"username":"hehe","password":"123","age":"30"}',dataType:"json",type:"post",success:function (data) {//data服务器端响应的json的数据,进行解析alert(data);alert(data.username);alert(data.password);alert(data.age);}})});});</script>
</head>
<body>
<br/>
<!--模拟button按钮-->
<button id="btn">发送ajax请求</button>
</body>
</html>
//模拟异步请求和响应
@RequestMapping("/testAjax")
public @ResponseBody User testAjax(@RequestBody User user){System.out.println("testForwardOrRedirect方法执行了");//客户端发送ajax的请求,传的是json字符串,后端把json字符串封装到user对象中System.out.println(user);//响应(把数据拿到,假装查询数据库)user.setUsername("haha");user.setAge(40);//做响应,responseBody这个注解能自动将我们对象转为json字符串。return user;
}

SpringMVC的响应JSON数据和过滤静态资源相关推荐

  1. 响应json数据之过滤静态资源

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. 如何通过SpringMVC框架响应JSON数据

    1. 通过SpringMVC框架响应JSON数据 在SpringMVC框架(含SpringBoot框架)中,当处理请求的方法之前添加了@ResponseBody后,或在控制器类之前使用的是@RestC ...

  3. Spring MVC--使用fastjson替换jackson来响应json数据

    使用fastjson替换jackson来响应json数据. springmvc-config.xml <?xml version="1.0" encoding="U ...

  4. springMVC之与json数据交互方法

    2019独角兽企业重金招聘Python工程师标准>>> 因为我也要返回json数据.所以需要这个注解@ResponseBody,把Java对象转换成json字符串 注意:  1.@R ...

  5. 学习AJAX必知必会(2)~Ajax基本使用,设置请求行、请求体、请求头,服务端响应JSON数据

    一.Ajax的基本使用 1.核心对象 XMLHttpRequest,AJAX 的所有操作都是通过该对象进行的. 2.发送ajax请求(4个步骤): 创建xhr对象,然后open方法初始化,设置请求方式 ...

  6. Nginx与Tomcat实现请求动态数据与请求静态资源的分离

    上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数 ...

  7. 解决SpringMvc后台接收json数据中文乱码问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.使用ajax从前台页面传输数据到后台controller控制器的时候,出现中文乱码(问号???). 之前在网上找了各种解决 ...

  8. 响应json数据之响应json格式数据

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html ...

  9. tomcat 中部署的应用响应json数据乱码解决办法

    原来响应的json中中文乱码 找到 Tomcat\conf\server.xml文件,加上 URIEncoding='UTF-8' <!-- 原配置 <Connector connecti ...

最新文章

  1. mysql多大_mysql的innodb表到底占用多大的空间?
  2. P300脑机接口及数据集处理
  3. 将一个信号同步到clk中的通式
  4. 怎么画单极交流放大电路波形图_珠海放大IC怎么样
  5. Java IO: 流
  6. RoboMaster 2017:机器人版的「王者农药」,工程师们的竞技时代
  7. MyBatis学习总结(13)——Mybatis查询之resultMap和resultType区别
  8. [转]PHP或ASP   中Cookie禁用了,Session还能用吗?
  9. WinMerge 操作界面汉语版(截图),以及简单功能介绍
  10. 【NOIP1997】【Luogu1548】棋盘问题(枚举正方形个数)
  11. Ubuntu下设置Pycharm/unity的桌面快捷方式
  12. 软件设计师考试考点分析总结
  13. Pandas数据分析3-统计、可视化、创建数据框、时间序列、删除数据
  14. 高数——零点定理、介值定理的应用
  15. Linux VGA驱动移植实验
  16. iOSButton文字和图片摆放的个字方式
  17. 银河麒麟linux找不到网卡,中标麒麟Linux v7系统下设置双网卡bond或team绑定详细过程-网卡设置...
  18. helm开发环境部署gitea
  19. 【数据说第九期】如何分析用户行为数据,来驱动业务增长?
  20. mysql数据库实战演练_SQL 语句实战演练

热门文章

  1. iPhone又降价了!京东、苏宁安排上了 iPhone XS系列最高直降1700元
  2. 程序员加班一周休病假,犯了小错误遭开除,老板怒斥程序员不中用
  3. 各种排序算法稳定性的总结!!!
  4. 主流语言实现冒泡排序算法
  5. php中调用go代码,php中的goto的用法实例(代码)
  6. ps如何修改图片大小尺寸_如何查看图片尺寸,大小及如何修改图片尺寸—淘宝美工入门课03...
  7. MFC小笔记:简单画图
  8. Oracle和Mysql的不同
  9. docker-compose 配置kafka_Docker Compose 引用环境变量
  10. 【ElasticSearch】ES 的 path.data 配置多个盘的路径,查询效率与单个存储盘的效率比,哪个效率高些?