springMvc中前端获取后台数据的方式 📅 2026/7/28 15:42:07 最新项目中需要用到不跳转获取后台数据List对象集合百度操作一波发现CSDN的帖子真水根本没有一遍讲的比较全面的而且帖子大多数是错的可能作者执行成功了但是那只是你刚好条件巧合罢了换个条件你就失败了所以帖子没深度。所以我花了两天时间整理试验一波总结如下有不对的地方请大家指出虚心求教。跳转获取1 ServletServlet是最底层的方式需要HttpServletRequest和HttpServletResponse相配合把相关值保存在request、session、cookie、application作用域的某一个如何获取相关作用域我在这里不作详解之后直接用el这只是其中的一种方式语句读取。相关代码如下RequestMapping(allCity3) public String queryAllCity3(HttpServletRequest request, HttpServletResponse response) { ListCity cities cityService.queryAllCity(); for (City city : cities) { city.setAreas(null); } // 保存到session中 /*HttpSession session request.getSession(); session.setAttribute(cities, cities);*/ // 保存到request中 request.setAttribute(cities, cities); // 返回的页面这里配合相应的springMvc视图解析器 return main; }注以上代码还不是最底层的视图层就用了springMvc的视图解析配置上面代码“return “main””如何你想更底层直接使用request或response实现跳转代码我就不贴了。2 ModelAndView把数据保存到ModelAndView中直接传送到前端页面用jstl当然不止一种方式就不多说读取。相应的代码如下// 以下代码是控制器controller里面的方法的子代码 // 把要保存的数据保存进ModelAndView中 modelAndView.addObject(areaStatisticsList, areaStatisticsList); // 设置跳转页面 modelAndView.setViewName(areaStatistics); // 返回值 return modelAndView;ajax获取ajax获取也就是异步获取一般不进行页面跳转作为页面局部刷新的一种解决方案。1 HttpServletResponse这个是Servlet的解决方案也是底层解决方案。其他高级的方案大都是建立在其基础上的。配合空返回void的controller类方法使用使用利用其内部对象PrintWriter把传送值输送到前端之后ajax回调函数调用其数据实现页面局部更新。相关代码如下try { // 设置响应格式如果不加会出现中文乱码 response.setContentType(html/text;charsetutf-8); // 把数据输送到前端供ajax回调函数调用 response.getWriter().print(cities); } catch (IOException e) { e.printStackTrace(); }2 ResponseBodyResponseBody作为springMvc控制层的返回数据的注解感觉这个可以有更好表述是springMvc框架推荐的方法解决方案。默认最终转换为json数据也就是返回值是json格式分两组方式转换2.1 人工转换个人自己命名的人工转换就是在控制层直接装换成json格式的字符串下面举了一个list对象集合转换成JSONArray格式的字符串的例子代码如下// 对应json的maven依赖json工具依赖包太多我没有做过多的研究或许其他依赖包也能人工转换呢有待大家一起去研究 dependency groupIdnet.sf.json-lib/groupId artifactIdjson-lib/artifactId version2.2.3/version classifierjdk15/classifier!-- 指定jdk版本 -- /dependency RequestMapping(value queryAreasByCity, produces {text/html;charsetutf-8}) ResponseBody public String queryAreaByCityName(RequestParam(cName) String cName){ City city cityService.queryCityByCName(cName); ListArea areas city.getAreas(); // 转换为JSONArray类型 JsonConfig config new JsonConfig(); config.setExcludes(new String[]{city, enterprises}); JSONArray jsonArray JSONArray.fromObject(areas, config); String json jsonArray.toString(); return json; }2.2 spring配置方式spring配置方式就是把转换成json工作交给spring管理也就是controller层返回值是List也会自动转换成JSON格式字符串直接在springMvc层配置相关转换器bean。相关代码如下// maven依赖 !--javabean转换成json的依赖-- dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-core/artifactId version${jackson.version}/version /dependency dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version${jackson.version}/version /dependency dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-annotations/artifactId version${jackson.version}/version /dependency // springMvc框架的springIOC配置方法一 !-- 启动Spring MVC的注解功能完成请求和注解POJO的映射 -- bean classorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter property namemessageConverters list ref beanstringHttpMessageConverter/ !--json转换器-- ref beanmappingJacksonHttpMessageConverter / /list /property /bean bean idstringHttpMessageConverter classorg.springframework.http.converter.StringHttpMessageConverter property name supportedMediaTypes list valuetext/plain;charsetUTF-8/value /list /property /bean bean idmappingJacksonHttpMessageConverter classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverter property name supportedMediaTypes list valueapplication/json;charsetUTF-8/value bean classorg.springframework.http.MediaType constructor-arg index0 valuetext/ constructor-arg index1 valueplain/ constructor-arg index2 valueUTF-8/ /bean bean classorg.springframework.http.MediaType constructor-arg index0 value*/ constructor-arg index1 value*/ constructor-arg index2 valueUTF-8/ /bean bean classorg.springframework.http.MediaType constructor-arg index0 valuetext/ constructor-arg index1 value*/ constructor-arg index2 valueUTF-8/ /bean bean classorg.springframework.http.MediaType constructor-arg index0 valueapplication/ constructor-arg index1 valuejson/ constructor-arg index2 valueUTF-8/ /bean /list /property /bean // springMvc框架的springIOC配置方法二 mvc:annotation-driven mvc:message-converters !--后台对前端的转换器-- bean classorg.springframework.http.converter.StringHttpMessageConverter !--解决乱码问题-- property namesupportedMediaTypes list valuetext/plain;charsetUTF-8/value /list /property /bean bean classorg.springframework.http.converter.json.MappingJackson2HttpMessageConverter/ /mvc:message-converters /mvc:annotation-driven注上面提到的两种配置转换器方法我也是从网上找来的我实践了一下都可以。至于原理我就不多探讨了。总结springMvc中以上两种获取后台数据的方式都按照两种思路来进行的一是采用Servlet原始解决方案二是采用SpringMvc现行的解决方案。跳转方式传给前端的是model数据按照键值对来传值按照属性访问ajax方式传给前端的数据有多种形式json、html、text等后台的model数据传给前端需要进行数据转换一般转换成json格式其他数据我没研究但是我觉得没必要研究js的语言基本格式是json在前端你最终还是需要转换成json个人之间然而request和response里面好像实现了model转换成json字符串我试验了一下确实有可能理解有问题欢迎大家指出SpringMvc则需要转换成json字符串。