<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index.jsp</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/data.action?name=餃子">攜帶數據進行頁面跳轉</a>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>main.jsp</title>
</head>
<body>
<h2>顯示頁面跳轉時攜帶的數據......</h2>
<!-- 在經過頁面跳轉后,在跳轉到的頁面里,嘗試獲取之前存放的數據-->
request: ${requestUser}<br>
httpSession: ${sessionUser}<br>
model: ${modelUser}<br>
map: ${mapUser}<br>
modelMap: ${modelMapUser}<br>
<!-- 嘗試直接獲取請求地址中攜帶的參數數據-->
param: ${param.name}
</body>
</html>
package com.example.controller;
import com.example.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
public class DataAction {
@RequestMapping("/data")
//這幾個參數都是SpringMVC內置的,可以直接聲明使用
public String data(HttpServletRequest request, HttpSession httpSession, Model model, Map<Object, Object> map, ModelMap modelMap){
//User實體類含有兩個屬性:name(String), age(int)。無參構造方法。全屬性的有參構造方法,getter,setter,toString方法
User user=new User("荷包蛋", 20);
//將user對象利用各SpringMVC內置對象存放到相應作用域中
request.setAttribute("requestUser", user);
httpSession.setAttribute("sessionUser", user);
model.addAttribute("modelUser", user);
map.put("mapUser", user);
modelMap.addAttribute("modelMapUser", user);
//最后完成頁面轉發跳轉
return "main";
}
}
package com.example.controller;
import com.example.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Map;
@Controller
public class DataAction {
@RequestMapping("/data")
public String data(HttpServletRequest request, HttpSession httpSession, Model model, Map<Object, Object> map, ModelMap modelMap){
User user=new User("荷包蛋", 20);
request.setAttribute("requestUser", user);
httpSession.setAttribute("sessionUser", user);
model.addAttribute("modelUser", user);
map.put("mapUser", user);
modelMap.addAttribute("modelMapUser", user);
//最后完成頁面的重定向跳轉
return "redirect:/admin/main.jsp";
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>main.jsp</title>
</head>
<body>
<h2>main......page......</h2>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>index.jsp</title>
</head>
<body>
<h2>4種轉發和重定向的方式</h2>
<hr>
<a href="${pageContext.request.contextPath}/one.action">1.普通轉發頁面(對請求的默認處理方式)</a><br><br>
<a href="${pageContext.request.contextPath}/two.action">2.action轉發頁面</a><br><br>
<a href="${pageContext.request.contextPath}/three.action">3.普通重定向頁面</a><br><br>
<a href="${pageContext.request.contextPath}/four.action">4.action重定向頁面</a>
</body>
</html>
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class JumpAction {
/**
1.
之前在springmvc.xml中配置了視圖解析器,這是SpringMVC處理頁面跳轉的默認方式,屬于普通轉發跳轉
會將頁面轉發到action方法的返回值和前綴后綴拼接形成的路徑所對應資源頁面
*/
@RequestMapping("/one")
public String one(){
System.out.println("one action被訪問......");
return "main";
}
/** 2.
* 下面是我們注冊的視圖解析器的父類:UrlBasedViewResolver,中的幾個參數
* 通過對底層源代碼的解讀,可知在action方法的返回值字符串中,如果以"redirect:"或者"forward:"開頭則不會執行視圖解析器的路徑拼接
* 而是會按照redirect或forward完成頁面重定向或頁面跳轉
*
* public static final String REDIRECT_URL_PREFIX="redirect:";
* public static final String FORWARD_URL_PREFIX="forward:";
* private String prefix="";
* private String suffix="";
*
* 注意:不管要使用action的頁面轉發或者是action的頁面重定向,由于action方法是控制器內部的方法
* 所以要想訪問action方法必須訪問到控制SpringMVC控制器,而要訪問控制器,前提是要能被SpringMVC核心處理器處理(也就是底層的servlet)
* 而要想被底層servlet處理,必須滿足請求路徑的通配條件,這是我們在web.xml文件中配置好的"*.action"
* 所以要在請求的末尾加上".action"以滿足請求的通配要求,才有資格被交給SpringMVC的控制器中的方法處理
*/
@RequestMapping("/two")
public String two(){
System.out.println("other action被訪問......");
return "forward:/one.action";
}
/**
* 如果是普通重定向,直接重定向到項目資源,不需要控制器中的action方法的處理,請求路徑后不用跟".action",直接寫重定向的資源路徑即可
*
*/
@RequestMapping("/three")
public String three(){
System.out.println("three action被訪問......");
return "redirect:/admin/main.jsp";
}
/**
* 要在請求的末尾加上".action"以滿足請求的通配要求,才有資格被交給SpringMVC的控制器中的方法執行
*
*/
@RequestMapping("/four")
public String four(){
System.out.println("other action被訪問....");
return "redirect:/three.action";
}
}
合靜態html(模擬SpringMVC):
馬克- to-win:馬克 java社區:防盜版實名手機尾號: 73203。
馬克-to-win@馬克java社區:1)在上一個項目中,在src/main目錄下,添加resources/static/index.html:(參考目錄下:BootSpringMVC)注意:在resources根目錄下添加test.html,是訪問不到的。在src/main目錄下,添加resources/templates/result.html,也是訪問不到的。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
index1
<a href="/hello.do">test SpringMvc</a>
</body>
</html>
package com.SpringbootMaven;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
篇幅有限更多請見擴展鏈接:http://www.mark-to-win.com/tutorial/frame_springBoot_SpringBoothtml.html
*請認真填寫需求信息,我們會在24小時內與您取得聯系。