SpringMVC響應數據

返回值分類

1、Sting類型

  • controller 方法返回字符串可以指定邏輯視圖名,通過視圖解析器解析爲物理視圖地址。
  • controller 方法在提供了 String 類型的返回值之後,默認就是請求轉發。
控制器代碼
 @RequestMapping("testSuccess")
    public String testSuccess(){
        System.out.println("testSuccess成功運行");
        return "success";
    }
    
<!--視圖解析器配置-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>
通過指定邏輯視圖名,經過視圖解析器解析爲 jsp 物理路徑:/WEB-INF/pages/success.jsp    

2、void類型

  • 需要使用請求轉發或者重定向跳轉到指定的頁面
@RequestMapping(value="/initAdd")
public void initAdd(HttpServletRequest request,HttpServletResponse response) throws
Exception {
System.out.println("請求轉發或者重定向");
// 請求轉發
// request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request,
response);
// 重定向
// response.sendRedirect(request.getContextPath()+"/add2.jsp");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 直接響應數據
response.getWriter().print("你好");
return;
}

3、返回值爲ModelAndView對象

  • 若處理器對請求處理過後,不僅要進行跳轉,而且在跳轉過程中還要傳遞數據(或者修改數據),此時使用ModelAndView較爲方便。
//控制器代碼
@RequestMapping("testModelAndView")
    public ModelAndView testModelAndView(){

        //模擬從數據庫中查到的數據
        User user = new User();
        user.setUsername("lisi");
        user.setName("李四");
        user.setAddress("上海");

        //控制器代碼
        ModelAndView mv = new ModelAndView();
        if(user.getUsername().equals("lisi")){
        	//將對象存到model域中
            mv.addObject("user",user);
            //跳轉到success.jsp
            mv.setViewName("success");
        }else {
       		//跳轉到fail.jsp
            mv.setViewName("fail");
        }
        return mv;
    }
jsp 代碼
<body>
		用戶名:${user.username}<br>
		用戶姓名:${user.name}<br>
		住址:${user.address}<br>
	</body>

SpringMVC提供的提供的轉發和重定向

1、轉發 forward

  • 如果用了 formward :則路徑必須寫成實際視圖 url,不能寫邏輯視圖。
@RequestMapping("testforward")
    public String testforward(){
        System.out.println("testforward成功運行");
        return "forward:/WEB-INF/pages/success.jsp";
    }

2、重定向

  • 如果是重定向到 jsp 頁面,則 jsp 頁面不能寫在 WEB-INF 目錄中,否則無法找到。
@RequestMapping("/testRedirect")
public String testRedirect() {
	System.out.println("testRedirect 方法執行了。。。。");
	return "redirect:testReturnModelAndView";
}

ResponseBody&&RequestBody 響應/獲取 json 數據

<script type="text/javascript" src="js/jquery.min.js"></script>
	<script>
		//頁面加載綁定單擊事件
		$(function () {
			$("#btn").click(function () {
                $.ajax({
                    url:"test/testRequestBody",
                    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>
使用RequestBodey獲取json數據
@RequestMapping("testRequestBody")
    public void testRequestBody(@RequestBody String body){
        System.out.println(body);
    }

使用RequestBody將json轉換爲javabean對象
@RequestMapping("testRequestBody")
    public void testRequestBody(@RequestBody User user){
        System.out.println(body);
    }

使用ResponseBody將javabean對象轉換爲json數據
@RequestMapping("testRequestBody")
    public ResponseBody User testResponseBody(@RequestBody User user){
       return user;
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章