단순 코드 기록/Spring

Spring_Redirect_Forwarding

일일일코_장민기 2024. 2. 14. 10:28
728x90
Controller
package com.app.test;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class TestController {

	@RequestMapping(value =  "/main", method = RequestMethod.GET)
	public String main() {
		System.out.println("main - GET");
		return "main";
	}

	@RequestMapping(value =  "/redirect", method = RequestMethod.GET)	//redirect요청이면 setAttribute는 전달되지 않음(null)
	public String aaa(Model m, HttpServletRequest request) {			//addAttribute도 전달 X(공백)

			m.addAttribute("userid", "홍길동");							//redirect요청 시에 주소에 parameter로 전달
			request.setAttribute("passwd", "5678");
			
		System.out.println("redirect - GET");
		return "redirect:main?userid=aaa";								//getParameter로 출력
	}

	@RequestMapping(value =  "/forward", method = RequestMethod.GET)	//파라미터로 데이터 전송, GetParameter사용 불가(null)
	public String bbb(Model m, HttpServletRequest request) {			//addAttribute는 전달

			m.addAttribute("userid", "홍길동");							//EL, req.getAtt 모두 전달
			request.setAttribute("passwd", "1234");						//EL, req.getAtt 모두 전달
			
		System.out.println("forward - GET");
		return "forward:main";
	}

	@RequestMapping(value =  "/flash", method = RequestMethod.GET)		//EL태그, req.getAtt로 출력 // req.getParam은 null
	public String aaa(RedirectAttributes r) {							//servlet.context.xml의 <anootatin-drriven/>이 필수(없으면 실행이 안 됨)

			r.addFlashAttribute("userid", "홍길동");						//Object로 저장 가능
			r.addFlashAttribute("passwd", "5678");
			
		System.out.println("redirect - GET");
		return "redirect:main";											
	}
}
main.jsp
<%@page import="com.app.test.LoginDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

	id. EL Tag :${userid}<br>
	id. req.getAtt : <%= request.getAttribute("userid") %><br>
	id. req.getParam : <%= request.getParameter("userid") %><br>
	
	<hr>
	
	pw. EL Tag :${passwd}<br>
	pw. req.getAtt : <%= request.getAttribute("passwd") %><br>
	pw. req.getParam : <%= request.getParameter("passwd") %><br>
	
	
</body>
</html>

 

 

Redirect
Hello world!
id. EL Tag :
id. req.getAtt : null
id. req.getParam : aaa
pw. EL Tag :
pw. req.getAtt : null
pw. req.getParam : null

 

Forward

 

Hello world!
id. EL Tag :홍길동
id. req.getAtt : 홍길동
id. req.getParam : null
pw. EL Tag :1234
pw. req.getAtt : 1234
pw. req.getParam : null

 

Flash

 

Hello world!
id. EL Tag :홍길동
id. req.getAtt : 홍길동
id. req.getParam : null
pw. EL Tag :5678
pw. req.getAtt : 5678
pw. req.getParam : null

'단순 코드 기록 > Spring' 카테고리의 다른 글

Spring_Intercept_for_login  (0) 2024.02.14
Spring_Intercept  (0) 2024.02.14
Spring_URLMAPPING  (0) 2024.02.14
Spring_Exception  (0) 2024.02.13
Spring_returnType  (0) 2024.02.13