21 - SpringMVC學習(4) —— SpringMVC註解開發(2)

1 URL模版映射

url模版映射可以restfull軟件架構。

配置接收url模版映射
{}:匹配接受頁面Url路徑參數
@Pathariable{}裏面參數注入後面參數裏面

在這裏插入圖片描述

 @RequestMapping("/edit1/{id}")
    public String edit1(@PathVariable int id, Model model) {
        System.out.println("修改的id:" + id);
        // 通過 ID 查詢數據庫,返回一個 User 對象,把 user 對象存在model
        User user = new User("曹操","男",new Date());
        user.setId(1);

        model.addAttribute("user",user);

        return "user/useredit";
    }

在這裏插入圖片描述
在這裏插入圖片描述

1.1 在web.xml中配置rest路徑

在這裏插入圖片描述
在這裏插入圖片描述

2 轉發和重定

2.1 轉發到同一個控制器的方法

在這裏插入圖片描述

2.2 轉發到不同一個控制器的方法

在這裏插入圖片描述
在這裏插入圖片描述

2.3 重定向,只需要把forward改成redirect

在這裏插入圖片描述

3 RequestParam

@Controller
@RequestMapping("/stu")
public class StudentController {

    /**
     * RequestParam參數描述
     * value:參數名稱
     * defaultValue:默認值
     * required:參數是否必須有值,如果爲true,參數又爲空,會報錯
     * */
    @RequestMapping("test1")
    public String test1(@RequestParam(value = "uid",required = true) Integer uid){

        return "redirect:/user/list.do";
    }
}

4 ResponseBody和RequestBody

@ResponseBody把後臺pojo轉換json對象,返回到頁面。
@RequestBody接受前臺json數據,把json數據自動封裝javaBean


  1. 導入 jar
    在這裏插入圖片描述
  2. 配置文件
    添加個json轉換器
<!--3.配置適配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <!--json轉換器-->
        <property name="messageConverters">
            <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
        </property>
    </bean>

4.1 請求和響應都是 json

  • 模型
    在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加用戶</title>
    <script src="${pageContext.request.contextPath}/js/jquery-1.8.3.js"></script>
    <script>
        function register() {
            // 表單提交
            var url = '${pageContext.request.contextPath}/stu/save.do';
            var name = $('#name').val();
            var gender = $('#gender').val();
            var jsonObj = {name: name, gender: gender};
            var paramters = JSON.stringify(jsonObj);
            console.log('jsonObj:' + jsonObj);
            console.log('jsonStr:' + paramters);

            $.ajax({
                type: 'post',
                url: url,
                contentType: 'application/json;charset=utf-8',
                data: paramters,
                success: function (respData) {
                    console.log('resp: ' + respData);
                }
            })

        }
    </script>
</head>
<body>
<form action="${pageContext.request.contextPath}/stu/save.do" method="post">
    用戶名:<input id="name" type="text" name="name"><br>
    性別:<input id="gender" type="text" name="gender"><br>
    <input type="button" value="提交 json 數據" onclick="register()">
    <input type="submit">
</form>

</body>
</html>



4.1.1 普通版

  • StudentController.java
@Controller
@RequestMapping("/stu")
public class StudentController {

    @RequestMapping("/toReg")
    public String toReg() {
        return "stu/register";

    }
    /*
     * @RequestBody : 把 json 數據轉成模型對象
     *  @ResponseBody : 返回 json 數據
     * */
    @RequestMapping("/save")
    public String save(Student stu) {
        System.out.println("stu:" + stu);
        return "stu/list";

    }

}
  • 普通提交
    在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

4.1.2 json版

  • 控制器
@Controller
@RequestMapping("/stu")
public class StudentController {

    @RequestMapping("/toReg")
    public String toReg() {
        return "stu/register";

    }
    /*
     * @RequestBody : 把 json 數據轉成模型對象
     *  @ResponseBody : 返回 json 數據
     * */
    @RequestMapping("/save")
    public @ResponseBody  Student save(@RequestBody Student stu) {
        System.out.println("stu:" + stu);
        return stu;

    }

}

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

5 Springmvc多視圖

多視圖是一個方法可以返回json/xml等格式的數據


  1. 導入xml格式支持的jar包
    在這裏插入圖片描述

  2. 配置支持多視圖

  <!--配置多視圖-->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <!-- 配置支持媒體類型 -->
        <property name="contentNegotiationManager">
            <bean
                    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
                <property name="mediaTypes">
                    <map>
                        <entry key="json" value="application/json"></entry>
                        <entry key="xml" value="application/xml"></entry>
                    </map>
                </property>
            </bean>
        </property>

        <!-- 指定默認視圖 -->
        <property name="defaultViews">
            <!-- 支持多個視圖 -->
            <list>
                <!-- 對josn格式視圖支持 -->
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"/>

                <!-- xml格式視圖支持 -->
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                    <constructor-arg>
                        <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
                            <property name="classesToBeBound">
                                <list>
                                    <value>com.tzb.backoffice.model.Student</value>
                                </list>
                            </property>
                        </bean>
                    </constructor-arg>
                </bean>
            </list>
        </property>
    </bean>

  1. 控制器提供接口

在這裏插入圖片描述

  1. 測試
    在這裏插入圖片描述
    在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

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