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

1 註解案例

  • DispatcherServlet-servlet.xml
<!--註解配置控制器-->
    <!--1.配置掃描包-->
    <context:component-scan base-package="com.tzb.backoffice.web.controller"></context:component-scan>

    <!--2.配置註解處理映射-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

    <!--3.配置適配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

    <!--4. 配置資源視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--前綴-->
        <property name="prefix" value="/WEB-INF/views/"></property>
        
        <!--後綴-->
        <property name="suffix" value=".jsp"></property>
    </bean>
  • 控制器
package com.tzb.backoffice.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("/list")
    public String list() {
        return "user/userlist";
    }

}

在這裏插入圖片描述

2 RequestMapping

配置請求路徑映射路徑
在這裏插入圖片描述

@RequestMapping(“list”)
@RequestMapping(/list.do)
@RequestMapping(value=/list.do)
@RequestMapping(value = "/list3",method=RequestMethod.POST) 只能使用POST方法
@RequestMapping(value = "/list3",method=RequestMethod.Get) 只能使用GET方法

2.1 自定義根路徑

在這裏插入圖片描述

3 請求參數

3.1 封裝參數分析

  • 參數類型有:基本類型,int,String等等基本類型, Pojo類
  • Struts2參數:基於屬性封裝,在action會添加屬性,提供set方法。
  • Springmvc參數封裝:基於方法進行封裝。

3.2 接收int,String,Date,數組類型

  1. 添加頁面
    在這裏插入圖片描述
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>註冊頁面</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/user/register.do" method="post">
    用戶名:<input type="text" name="username"><br>
    密碼:<input type="text" name="password"><br>
    性別:<input type="text" name="gender"><br>
    年齡:<input type="text" name="age"><br>
    生日:<input type="text" name="birthday"><br>
    愛好:<input type="checkbox" name="hobbyIds" value="1">足球
    <input type="checkbox" name="hobbyIds" value="2">籃球
    <input type="checkbox" name="hobbyIds" value="3">羽毛球<br>
    <input type="submit">
</form>
</body>
</html>

3.2.1 第一種接收參數方式

@Controller
@RequestMapping("/user")
public class UserController {

    // 也可以不加 /, 或者寫成 value = "list"
    @RequestMapping("/list")
    public String list() {
        return "user/userlist";
    }

    @RequestMapping("toRegister")
    public String toRegister() {
        return "user/register";
    }

    /**
    * 第一種接收表單參數的方式
    * 默認日期格式: 月/日/年
    * */
    @RequestMapping("register")
    public String register(String username,String password,
                           int age,String gender, Date birthday,
                            String[] hobbyIds){
        System.out.println(username);
        System.out.println(password);
        System.out.println(age);
        System.out.println(birthday);
        System.out.println(ArrayUtils.toString(hobbyIds));

        return "user/info";
    }

}

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

3.2.2 接收pojo類型

在這裏插入圖片描述

  • UserController.java
 /*
    * 第二種接收表單參數的方式
    * */
    @RequestMapping("/register2")
    public String register2(User user){
        System.out.println(user);
        return "user/info";
    }

在這裏插入圖片描述

3.2.3 接收包裝類型參數

  • 模型
package com.tzb.backoffice.model;

public class UserExt {
    
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "UserExt{" +
                "user=" + user +
                '}';
    }
}

在這裏插入圖片描述

在這裏插入圖片描述

3.2.4 接收集合類型

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

3.2.5 接收 Map 類型

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

在這裏插入圖片描述

4 Spring與Struts的區別

4.1 實現機制

Struts2是基於過濾器實現的。
Springmvc基於servlet實現。

4.2 運行速度

  • Servlet比過濾器快。

  • Struts2是多例
    每一次請求,都會創建一個Action對象
    請求來了以後,struts2創建多少個對象:ActionContext,valuestack,UAction,ActionSuport,ModelDriven

  • Springmvc是單例。
    同一個Controller請求,只會創建一個Controller

4.3 參數封裝

  • Struts基於屬性進行封裝,Action有參數屬性。
  • Springmvc基於方法封裝,參數是寫在Controller的方法

5 頁面回顯

在這裏插入圖片描述

  • 導入 jstl jar
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>用戶列表</title>
</head>
<body>
用戶列表
<table border="1">
    <tr>
        <td>名字</td>
        <td>性別</td>
        <td>日期</td>
    </tr>
    <c:forEach items="${userList}" var="user">
        <tr>
            <td>${user.username}</td>
            <td>${user.gender}</td>
            <td>${user.birthday}</td>
        </tr>
    </c:forEach>
</table>

</body>
</html>

在這裏插入圖片描述

5.1 修改數據

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

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