SpringMVC---02---實現頁面的跳轉 轉向與重定向

Unique程式碼小強發表於2020-10-14

簡單的jsp頁面

Hello.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="/helloInput1.do?username=mao1&password=123" >連結</a>
    <a href="/helloInput3.do?ids=1&ids=2" >多條刪除連結</a>
    <br>
    <form action="helloInput2.do" method="post">
        ID:<input type="text" name="id" > <br>
        Balance:<input type="text" name="balance" > <br>
        Date : <input type="date" name="birthday"> <br>
        UID:<input type="text" name="user.uid" > <br>
        username:<input type="text" name="user.name" > <br>
         <button type="submit">提交</button>
    </form>
</body>
</html>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>Hello World!</h2>
<!--簡單資料型別 -->
${user}
<br>
<!--物件資料型別 -->
${requestScope.account.id}  ${requestScope.account.balance}
<br>
<c:forEach items="${requestScope.accountList}" var="at">
    ${at.id}  ${at.balance} <br>
</c:forEach>
<hr>
${m}
</body>
</html>

Controller層

InputController類

import cn.csy.account.entity.Account;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;

@Controller
public class InputController {
    @RequestMapping("/toHello")
    public String hello(){
        return "hello";
    }
    @RequestMapping("/helloInput1")
    public String helloInput1(String username,String password){
        System.out.println(username);
        System.out.println(password);
        //轉向
        String m = "forward:/index.do";
        //重定向
        String n = "redirect:/toFile.do";
        return n;
    }

    @RequestMapping("/helloInput2")
    public String helloInput2(@ModelAttribute("m") Account a, @DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday){
        System.out.println(a);
        System.out.println(birthday);
        return "index";
    }
}

注意:這裡的跳轉路徑簡寫的原因是因為在springmvc.xml配置檔案中新增了檢視解析器的原因
如下:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

對於轉向和重定向來說,不能使用檢視解析器
如上邊程式碼helloInput1方法中的寫法.

helloInput2中的引數@ModelAttribute(“m”) Account a可以理解為是將Account作為物件起別名為m,傳遞給jsp頁面,然後再前端頁面進行接收.而a則是從前端傳遞過來的引數封裝到Account中的,然後命名為a,本類物件通過a呼叫Account物件.
如:

${m}

相關文章