spring MVC 返回值信息和ResponseBody的響應json數據


 

 

spring mvc的界面返回:

如果我們定義的返回類型是String 那么我們返回的時候直接寫入 我們的界面的名字就可以了  springmvc會自動去找到我們的界面,如果是void類型的返回那么 是沒有返回值的,如果沒有返回值這個時候我們定義了 請求信息但是沒有返回 跳出去那么 就會報錯  就需要自定義界面返回

 

    /**
     * void定義的方法是沒有返回值的   如果我們想要定義返回值就需要 使用request和respone信息來進行定義
     * @param request
     * @param response
     */
    @RequestMapping("void") //controller請求
    public void testvoid(HttpServletRequest request, HttpServletResponse response) throws Exception{

        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);  //你想要跳轉的界面
     return;
}

 

還可以進行界面重定向

response.sendRedirect(request.getContextPath()+"/index.jsp");  //因為不定直接請求到WEB-INF下的界面我們只能請求webapp下的了

 

界面直接輸出:

    @RequestMapping("/void")
    public void testvoid(HttpServletRequest request, HttpServletResponse response) throws Exception{

//        request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);  //你想要跳轉的界面

        //因為不定直接請求到WEB-INF下的界面我們只能請求webapp下的了
//        response.sendRedirect(request.getContextPath()+"/index.jsp");


        //設置中文亂碼

        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");

        //直接請求進行的響應
        response.getWriter().print("hello"); //界面直接輸出的是hello

        return;
    }

 

 

ModelAndView

返回值也可以直接定義是ModelAndView 的類型而不是字符串

 

    @RequestMapping("/model")
    public ModelAndView testmodelandView(){
        ModelAndView mv = new ModelAndView();

        // modeladnView有兩個我們常用的屬性
        User user = new User();
        user.setUsername("老王");
        user.setU_password("123456");

        //addObject把一個對象傳遞到mv中然后添加到界面
        mv.addObject("user",user);

        //設置跳轉的界面
        mv.setViewName("user");
        return mv;
    }

 

 

ResponseBody響應json數據

 

1. DispatcherServlet會攔截到所有的資源,導致一個問題就是靜態資源(imgcssjs)也會被攔截到,從而

不能被使用。解決問題就是需要配置靜態資源不進行攔截,在springmvc.xml配置文件添加如下配置 1. mvc:resources標簽配置不過濾

1. location元素表示webapp目錄下的包下的所有文件
2. mapping元素表示以/static開頭的所有請求路徑,如/static/a 或者/static/a/b

 

 
<!-- 設置靜態資源不過濾 -->
<mvc:resources location="/css/" mapping="/css/**"/><!-- 樣式 --> 
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 圖片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->

 

 

 

使用@RequestBody獲取請求體數據

 

// 頁面加載
// 頁面加載 $(function(){
// 綁定點擊事件 $("#btn").click(function(){
        $.ajax({
            url:"user/testJson",
            contentType:"application/json;charset=UTF-8",
            data:'{"addressName":"aa","addressNum":100}',
            dataType:"json",
            type:"post",
            success:function(data){
                alert(data);
                alert(data.addressName);
            }
}); });
}); /**
  

 

 

 

上面是前端往后端發送數據那么是 json的  我們需要其余的包導入來進行轉化

json字符串和JavaBean對象互相轉換的過程中,需要使用jacksonjar

 
<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>
    </dependency>

 

 

 

 

controller獲得請求體中的數據

* 獲取請求體的數據 * @param body
*/
@RequestMapping("/testJson")
public void testJson(@RequestBody String body) {  // 利用RequestBody的信息來進行前端json信息的獲取
    System.out.println(body);  //
}

 

使用@RequestBody注解把json的字符串轉換成JavaBean的對象

上面是取出數據 那么我們傳遞的數據怎么把它轉化為 json呢 這個時候就要用到 @ResponseBody

 

@RequestMapping("/testJson")
public @ResponseBody Address testJson(@RequestBody Address address) {
    System.out.println(address); 
    address.setAddressName("上海");
     return address;
}
  

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM