當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SpringMVC響應(yīng)的方式,無(wú)數(shù)據(jù)跳轉(zhuǎn)頁(yè)面,帶數(shù)據(jù)跳轉(zhuǎn)頁(yè)面.Json數(shù)據(jù)返回
頁(yè)面跳轉(zhuǎn)設(shè)定
//轉(zhuǎn)發(fā)會(huì)把后端攜帶的request和Response發(fā)送到前端jsp,在jsp中可以直接使用其中的數(shù)據(jù)//重定向相當(dāng)于頁(yè)面重新刷新,不能夠拿到后端給的request,Response頁(yè)面跳轉(zhuǎn)之重定向與轉(zhuǎn)發(fā)
配置視圖解析器
在web.xml中配置視圖解析器
<!-- 配置視圖解析器,方便訪問(wèn)jsp頁(yè)面,并交給spring管理--><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 視圖解析前綴(訪問(wèn)前綴)--><property name="prefix" value="/WEB-INF/pages/"/> <!-- 視圖解析后綴(訪問(wèn)后綴)--><property name="suffix" value=".jsp"/></bean>配置視圖解析器后controller中方法的返回
@RequestMapping("/forwardPages")public String test01(){//跳轉(zhuǎn)頁(yè)面,默認(rèn)是轉(zhuǎn)發(fā)模式//轉(zhuǎn)發(fā)會(huì)把后端攜帶的request和Response發(fā)送到前端jsp,在jsp中可以直接使用其中的數(shù)據(jù) // return "forward:/WEB-INF/pages/success.jsp";/*WEB-IF下的頁(yè)面必須轉(zhuǎn)發(fā)才能訪問(wèn),重定向訪問(wèn)不到,因?yàn)槲覀冊(cè)趕pring-mvc.xml中配置了視圖解析器,前綴,后綴都有*/return "success";}@RequestMapping("/redirectPages")public String test02(){//重定向到頁(yè)面//重定向相當(dāng)于頁(yè)面重新刷新,不能夠拿到后端給的request,Response//配置了視圖解析器不能這樣寫(xiě)了 // return "redirect:/WEB-INF/pages/success.jsp"; // return "redirect:/pages/success";return "";}@RequestMapping("success")public void test03(){//返回值為void的時(shí)候,他轉(zhuǎn)發(fā)的地址為/WEB-INF/response/pages/success.jsp//會(huì)自動(dòng)幫你把請(qǐng)求的地址和視圖解析器拼接}攜帶數(shù)據(jù)頁(yè)面跳轉(zhuǎn)
方式1:使用HttpServletRequest類型作為參數(shù)進(jìn)行傳遞
@RequestMapping("/showPageAndData1") public String showPageAndData1(HttpServletRequest request) { request.setAttribute("name","小付"); return "page"; }方式2:使用Model類型作為參數(shù)進(jìn)行數(shù)據(jù)傳遞
//帶著數(shù)據(jù)跳轉(zhuǎn)頁(yè)面@RequestMapping("/data")public String test04(Model model){User user = new User();user.setName("小花");user.setAge(18);//傳遞參數(shù)在jsp頁(yè)面去(實(shí)際還是request域中)model.addAttribute("user",user);model.addAttribute("data","model");return "data";}方式3:使用ModelAndView類型作為數(shù)據(jù)傳遞,將該對(duì)象作為返回值傳遞給調(diào)用者
//帶著數(shù)據(jù)跳轉(zhuǎn)頁(yè)面(推薦使用)@RequestMapping("/data/modelAndView")public ModelAndView test05(ModelAndView modelAndView){User user = new User();user.setName("小付");user.setAge(18);//傳遞參數(shù)在jsp頁(yè)面去(實(shí)際還是request域中)modelAndView.addObject("data","modelAndView");modelAndView.addObject("user",user);//設(shè)置跳轉(zhuǎn)的頁(yè)面modelAndView.setViewName("data");return modelAndView;}SpringMVC返回?cái)?shù)據(jù)
方式1:使用Response對(duì)象完成數(shù)據(jù)返回
@RequestMapping("/showData1") public void showData1(HttpServletResponse response) throws IOException { response.getWriter().print("message"); }或者
@RequestMapping("/showData2") @ResponseBody public String showData2(){ return "message"; }返回JSON數(shù)據(jù)
在pom中導(dǎo)入json相關(guān)坐標(biāo)的3個(gè)包
<!--json相關(guān)坐標(biāo)3個(gè)--><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-databind</artifactId><version>2.9.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version></dependency></dependencies>方式1:使用Response返回?cái)?shù)據(jù)的簡(jiǎn)化格式,返回JSON數(shù)據(jù)
@RequestMapping("/showData3") @ResponseBody public String showData3() throws JsonProcessingException { ObjectMapper om = new ObjectMapper(); Book book = new Book(); book.setName("我愛(ài)java"); book.setPrice(88.8d); return om.writeValueAsString(book); }返回JSON數(shù)據(jù)(對(duì)象)
方式2:使用SpringMVC提供的消息類型轉(zhuǎn)換器將對(duì)象與集合數(shù)據(jù)自動(dòng)類型轉(zhuǎn)換成JSON數(shù)據(jù)(同樣要導(dǎo)入json相關(guān)坐標(biāo)的3個(gè)包)
//帶著Json數(shù)據(jù)跳轉(zhuǎn)頁(yè)面(推薦使用)@RequestMapping("/json")//這個(gè)注解代表return回去的是json字符串,加上這個(gè)注解,就不會(huì)提供頁(yè)面跳轉(zhuǎn),只會(huì)響應(yīng)數(shù)據(jù)@ResponseBodypublic User test06(){User user = new User();user.setName("小付");user.setAge(18);//@ResponseBody因?yàn)榧恿诉@個(gè)注解,和導(dǎo)入了json相關(guān)坐標(biāo)的3個(gè)包,就會(huì)幫我們轉(zhuǎn)成json返回到頁(yè)面return user;}返回JSON數(shù)據(jù)(集合)
//帶著Json數(shù)據(jù)跳轉(zhuǎn)頁(yè)面(推薦使用)@RequestMapping("/json/map")//這個(gè)注解代表return回去的是json字符串,加上這個(gè)注解,就不會(huì)提供頁(yè)面跳轉(zhuǎn),只會(huì)響應(yīng)數(shù)據(jù)@ResponseBodypublic Map<String,Object> test07(){User user = new User();user.setName("小付");user.setAge(18);User user2 = new User();user2.setName("小花");user2.setAge(18);Map<String, Object> map = new HashMap<>();map.put("xiaofu",user);map.put("xiaohua",user2);//@ResponseBody因?yàn)榧恿诉@個(gè)注解,和導(dǎo)入了json相關(guān)坐標(biāo)的3個(gè)包,就會(huì)幫我們轉(zhuǎn)成json返回到頁(yè)面return map;}Servlet相關(guān)接口
HttpServletRequest/HttpServletResponse/HttpSession
@RequestMapping("/servletApi") public String servletApi(HttpServletRequest request, HttpServletResponse response, HttpSession session){ System.out.println(request); System.out.println(response); System.out.println(session); request.setAttribute("name","小付"); System.out.println(request.getAttribute("name")); return "page.jsp"; }
總結(jié)
以上是生活随笔為你收集整理的SpringMVC响应的方式,无数据跳转页面,带数据跳转页面.Json数据返回的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SpringMVC的请求参数,类型转换器
- 下一篇: SpringMVC自定义拦截器与异常处理