티스토리 뷰
Client가 뭔가 요청하면 브라우저는 요청을 서버로 보내주지
서버는 요청을 보관해두려고 HttpServletRequest 객체를 사용하는데,
요청에 대한 결과가 전송될 때까지 유지/사용 가넝해~
이 범위를 바로 RequestScope라고 하쥐
한마디로 HttpServletRequest 객체에 데이터, 객체 저장 가능하고
RequestScope내에서 이용될 수 있다는거야
XML ver
프로젝트 생성
Project Explorer에서 빈공간에 우클릭하면 Dynamic Web Project 만들 수 있다!
여기까진 할 수 있잖아
방금 만든 그 프로젝트를 Maven Project로 만들어주자!
혹시 다시 Maven 제거하고 싶다면, 위의 그림처럼 Disabled Maven Nature 해주믄 되니꽈
아! 메이븐 설정하고 프로젝트에 오류뜨면 그냥 alt+F5로 마무리해주십시다
Maven 기본설정 해보자!
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- pom모델버전 -->
<modelVersion>4.0.0</modelVersion>
<!-- 프로젝트 생성하는 조직의 고유 아이디 like 도메인 이름 -->
<groupId>Ex01JavaSetting</groupId>
<!-- Maven 프로젝트 식별하는 아이디 like 프로젝트명 -->
<artifactId>Ex01JavaSetting</artifactId>
<!-- 프로젝트 현재 버전 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 어떤 형태로 프로젝트를 패키징할 지 결정 -->
<packaging>war</packaging>
<!-- 소스의 디렉토리 구조, 빌드 산출물 디렉토리 구조, 빌드시 사용할 플러긴 정보 관리 -->
<build>
<!-- sourceDirectory : 자바 소스 코드를 관리하는 디렉토리 -->
<sourceDirectory>src/main/java</sourceDirectory>
<!-- Maven제공 기능은 플러긴 기반으로 작동 따라서 설정 필요 -->
<plugins>
<!-- 컴파일 플러그인 설정 -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<!-- 16>14변경 -->
<release>14</release>
</configuration>
</plugin>
<!-- 배포 패키징 플러긴 설정 -->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</version>
<!-- configuration 추가 -->
<configuration>
<!-- 배포할 위치 directory -->
<warSourceDirectory>src</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
<!-- 라이브러리 버전관리 : properties -->
<properties>
<javax.servlet-version>4.0.1</javax.servlet-version>
<javax.servlet.jsp-version>2.3.3</javax.servlet.jsp-version>
<javax.servlet.jsp.jstl-version>1.2</javax.servlet.jsp.jstl-version>
<org.springframework>5.2.2.RELEASE</org.springframework>
</properties>
<!-- 라이브러리 셋팅 : dependencies 프로그램과 의존관계인 라이브러리 관리 -->
<dependencies>
<!-- servlet-api 라이브러리 적용 위한 설정 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<!-- 버전관리는 properties에서 하기 때문에 변수처럼 사용하기 -->
<version>${javax.servlet-version}</version>
<scope>provided</scope>
</dependency>
<!-- javax.servlet.jsp-api 라이브러리 적용 위한 설정 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<!-- 버전관리는 properties에서 하기 때문에 변수처럼 사용하기 -->
<version>${javax.servlet.jsp-version}</version>
<scope>provided</scope>
</dependency>
<!-- javax.servlet/jstl 라이브러리 적용 위한 설정 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<!-- 버전관리는 properties에서 하기 때문에 변수처럼 사용하기 -->
<version>${javax.servlet.jsp.jstl-version}</version>
</dependency>
<!-- spring-webmvc 라이브러리 적용 위한 설정 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<!-- 버전관리는 properties에서 하기 때문에 변수처럼 사용하기 -->
<version>${org.springframework}</version>
</dependency>
</dependencies>
</project>
Spring MVC XML 기본설정
일단 Spring MVC를 어떻게 구현할지 구조부터 대충 살펴보면,
전에 JSP MVC 패턴때 bean.xml 만들어서 bean을 정의해주었지
그 역할을 이젠 web.xml 이용해서 XML버전으로 만들어보자
아까 Java버전으로 치자면 ServletConfigClass의 역할을 얘가 하는거여
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<!-- 현재 웹 애플리케이션에러 받아들이는 모든 요청에 대해 appServlet이란 이름으로 정의된 서블릿 사용 -->
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 설정 정보를 분석해 controller 선택하는 서블릿 지정 -->
<servlet>
<servlet-name>appServlet</servlet-name>
<!-- Spring MVC에서 저공하는 기본 서블릿 지정 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- Spring MVC 설정을 위한 XML파일 지정 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/servlet-context.xml</param-value>
</init-param>
<!-- 로드는 딱 한 번만 시키기 : 서버 꺼질 때까지 한 번만 실행 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Bean정의할 XML 파일 지정 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/root-context.xml</param-value>
</context-param>
<!-- 리스너 설정 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 파라미터 인코딩 필터 설정 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
이제 web.xml에서 context-param을 보면 bean을 정의할 xml파일을 지정해두었잖아?
root-context.xml 그걸 한 번 만들어보자
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
간단하지? bean을 설정할 수 있는 xmlns, xmls:xsi, xsi:schemaLocation을 삽입해준게 전부야
이번엔 web.xml에서 servlet을 보면 설정 정보 분석해서 controller를 선택해주는 서블릿 경로를 만들어뒀어
servlet-context.xml이건데, 그걸 한 번 해보자고
<?xml version="1.0" encoding="UTF-8"?>
<!-- mvc는 beans:beans로 태그 변경해야 인식함 -->
<beans:beans
xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 스캔한 패키지 내부 클래스 중 @Controller 있는 클래스 controller로써 로딩하도록 설정 -->
<annotation-driven />
<!-- 스캔할 bean들이 모여있는 패키지 지정 -->
<context:component-scan
base-package="kr.co.goodee39.controller" />
<!-- Controller의 메서드에서 반환하는 문자열 앞, 뒤에 붙일 경로 정보 셋팅 -->
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
<!-- 정적파일(img, video, audio) 로드 설정 -->
<resources mapping="/**" location="/resources/" />
</beans:beans>
Java때랑 내용이 같은데, 표현법이 다른거야
annotaion-driven은 클래스에 @Controller달린걸 찾을 수 있게 도와주는 아이야
context:component-scan으로 controller 찾아낼 경로 설정해주고,
beans:bean에서는 아까 Java에서 경로 자동으로 /WEB-INF/views/파일명.jsp 완성되도록 설정했어
prefix, suffix가 위치에 따른 설정인거쥐
마찬가지로 정적파일 즉 오디오, 사진, 비디오를 위한 파일을 불러오기 위한 폴더를 설정해주는데
resources로 할 수 있다.
mapping="/**"라는건 어떤 위치이든 뭐 그런 뜻일까...?ㅎㅎㅎㅎ
Controller 클래스 만들기
아까 위에서 web.xml보면 servlet에서 appServlet이란 이름으로 설정한 controller 선택 서블릿이 있는데,
servlet-context.xml라고 파일 하나 만들었좌나,
그리고 @Controller로 지정한 파일 알 수 있도록 annotaion-driven 태그 달아줬고,
context:component-scan으로 controller 찾아낼 경로 설정까지 했으니 이제 @Controller단 클래스를 하나 만들기야
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class HomeController {
//ServletAppContext에서 설정한 configureViewResolvers()메소드 통해서
///WEB-INF/views/index.jsp로 변환됨
@RequestMapping(value="/", method=RequestMethod.GET)
public String home() {
return "index";
}
}
별건 없어
그냥 무슨 역할하는지 보자고!
위에서 계속 언급했듯 이 클래스는 controller의 역할을 할 클래스이므로 어노테이션으로 이름표 달아주고,
메소드를 하나 만드는데, 이 메소드는 무어냐
첫 페이지 역할, 그러니까 home 역할을 할 페이지를 설정하는 메서드야
그래서 이름도 home이야 후후
value는 우리 JSP MVC 패턴에서 servlet만들면 맨 상단에
@WebServlet("/블라블라")하는 공간이 있어 (ㄴㅇㄹ는 무시혀~ 걍 쓴거임)
저 블라블라는 보통 servlet이름이 들어가는데, 파일을 실행시켜서 이동한다거나 하면
url에 저기 작성된 이름이 뒤에 뜨더라고?
근데 이걸 /만 남기고 지워주면?!
그냥 RequestDispatcher rdp = request.getRequestDispatcher("");에서 설정한 jsp파일이 home으로 떠부러
servlet이라는 위치가 jsp파일 앞전에 안붙기 때문이지!
그거랑 같은 이치야 value = "/"는
아무턴, return "문자열";은 이따가 만들 home이 될 jsp파일 이름을 넣어준거야
이 controller가 실행되면 index라는 홈이름이 아까 위에서 servlet-context.xml로 설정한 beans를 통해
prefix="/WEB-INF/views/"와 suffix=".jsp"를 만나 /WEB-INF/views/문자열.jsp가 되는거지
그리고 index.jsp에 이미지가 있다면 resources태그 통해서
src 앞에 /resources/가 콱 붙어주겠지~
이 아래부터는 Java버전이랑 동일합니다!
HomeController에서 설정한 첫 페이지가 되어줄 index.jsp를 만들자
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="test1">Test1</a><br />
<a href="test2">Test2</a><br />
<a href="test3">Test3</a><br />
<a href="test4">Test4</a><br />
<a href="test5">Test5</a><br />
</body>
</html>
총 5가지의 RequestScope에 대한 테스트를 해볼그야
a태그니까 전부 GET방식을 사용할게!
VO를 하나 만들어주자~
public class DataBean1 {
private String data1;
private String data2;
public DataBean1() {
// TODO Auto-generated constructor stub
}
public String getData1() {
return data1;
}
public void setData1(String data1) {
this.data1 = data1;
}
public String getData2() {
return data2;
}
public void setData2(String data2) {
this.data2 = data2;
}
}
controller에서 test5()메서드에서 커맨드객체로 가져가서 사용할꾸
Controller 만들기
아우 설명하기 짜증나서 나눴다.
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import kr.co.goodee39.vo.DataBean1;
@Controller
public class TestController {
//requestScope
//index.jsp에서 test1 해당하는 a태그 클릭시, result1로 data1을 들고 이동!
@GetMapping("/test1")
public String test1(HttpServletRequest request) {
request.setAttribute("data1", "문자열1");
//redirect는 페이지 요청 후 페이지 전달만 하고 이미 소멸된 상태이기 때문에 setAttribute로 설정한 data1은 전달되지 않음
/* return "redirect:/result1"; */
//forward는 서버상에서 코드 흐름 자체가 이동하기 때문에 setAttribute로 설정한 data이 전달됨
return "forward:/result1";
}
@GetMapping("/result1")
public String result1(HttpServletRequest request) {
String data1 = (String)request.getAttribute("data1");
System.out.println("data1 : "+data1);
return "result1";
}
}
1-1) test1() 메서드
HttpServletRequest 객체를 이용해 request를 선언하고, 그 안에 data1이라는 속성으로 "문자열1"이란 데이터를 삽입!
이걸 forward 방식으로 보내쥬자~
1-2) result1() 메서드
result1.jsp 페이지로 이동하기 위한 메서드를 만들었음!
setAttribute로 설정을 했으니, getAttribute로 가져와서 한 번 출력이나 해보자구
마찬가지로 HttpServletRequest 객체 이용해 getAttribute로 뽑아오기
이동하는데 데이터 잘 가지고 가는건지 확인한는거지
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import kr.co.goodee39.vo.DataBean1;
@Controller
public class TestController {
//index.jsp에서 test2 해당하는 a태그 클릭시, result2페이지로 data2을 들고 이동!
//Model의 Scope확인
@GetMapping("/test2")
public String test2(Model model) {
//requestScope로 데이터만 넘겨주고 model은 초기화됨
model.addAttribute("data2", "문자열2");
return "forward:/result2";
}
@GetMapping("/result2")
public String result2(Model model, HttpServletRequest request) {
String model_data2 = (String)model.getAttribute("data1");
//model에는 data2남아있지 않으므로 null로 출력됨
//model_data2 : null
System.out.println("model_data2 : "+model_data2);
String request_data2 = (String)request.getAttribute("data2");
//requestScope영역에는 data2가 넘겨진 상태이므로 값이 잘 출력됨
//request_data2 : 문자열2
System.out.println("request_data2 : "+request_data2);
return "result2";
}
}
2-1) test2() 메서드
Model객체를 커맨드해 내부 메서드인 addAttribute를 사용해도 됨!
결과는 request.setAttribute와 다를 바가 없지
2-2) result2() 메서드
result2.jsp로 이동하기 위한 페이지인데, 여기서 어디까지 데이터가 닿는지 출력이나 해봅시다.
Model 객체 타입으로 출력했을때와 HttpServletRequest 객체 타입으로 출력하는구~
이미 주석에 써있기는 하지만, Model객체 타입은 null이 나온다..?
이게 신기한게, test2()메서드에서 model통해서 addAttribute하잖아?
그럼 RequestScope영역으로 전달을 해주긴 해줘,
근데 해주고 바로 Model객체 타입의 model은 초기화가 돼
그래서 result2메서드의 model.getAttibute로 출력하면 null이 나오는거야
반면, HttpServletRequest 객체 이용해서 getAttribute로 출력해보면
타란~ 하고 나온다 이거지..
결론은 requestScope로 전달이 되기 때문에 RequestScope로 출력해야 출력이 가능허다 뭐 그런,~
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import kr.co.goodee39.vo.DataBean1;
@Controller
public class TestController {
//index.jsp에서 test3 해당하는 a태그 클릭시, result3페이지로 data3을 들고 이동!
//WebRequest의 Scope확인
@GetMapping("/test3")
public String test3(Model model) {
//requestScope로 데이터만 넘겨주고 model은 초기화됨
model.addAttribute("data3", "문자열3");
return "forward:/result3";
}
@GetMapping("/result3")
public String result3(WebRequest request) {
String data3 = (String)request.getAttribute("data3", WebRequest.SCOPE_REQUEST);
//requestScope영역에는 data3이 넘겨진 상태이므로 값이 잘 출력됨 WebRequest도 어쨌든 request니까
//data3 : 문자열3
System.out.println("data3 : "+data3);
return "result3";
}
}
3-1) test3()메서드
test2()메서드와 마찬가지로 Model객체 이용해서 데이터를 result3.jsp로 전달한다
3-2) result3() 메서드
HttpServletRequest가 Spring에서는 WebRequest로 대체되기도 한다고 지난 번에 배워봤으니
여기서 한 번 시도 해보자구! 어쨌든 얘도 RequestScope이니꽈~
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import kr.co.goodee39.vo.DataBean1;
@Controller
public class TestController {
//index.jsp에서 test4 해당하는 a태그 클릭시, result4페이지로 data4을 들고 이동!
//ModelAndView의 Scope확인
@GetMapping("/test4")
public ModelAndView test4(ModelAndView mav) {
//requestScope로 데이터만 넘겨주고 ModelAndView는 초기화됨
mav.addObject("data4", "문자열4");
mav.setViewName("forward:/result4");
return mav;
}
@GetMapping("/result4")
public ModelAndView result4(ModelAndView mav, HttpServletRequest request) {
//getModel()을 먼저 하는 이유는, mav내부에 지금 View까지 한 번에 담겨진 상태이므로
//Map형태로 만든 뒤에 출력하는 것
String mav_data4 = (String)mav.getModel().get("data4");
//ModelAndView에는 data2 남아있지 않으므로 null로 출력됨
//mav_data4 : null
System.out.println("mav_data4 : "+mav_data4);
String request_data4 = (String)request.getAttribute("data4");
//requestScope영역에는 data3이 넘겨진 상태이므로 값이 잘 출력됨
//request_data4 : 문자열4
System.out.println("request_data4 : "+request_data4);
mav.setViewName("/result4");
return mav;
}
}
4-1) test4() 메서드
Model의 사촌, ModelAndView로도 한 번 데이터를 보내 보자구!
ModelAndView 객체 통해 선언한 변수에
addObject 속성으로 데이터 설정하고, setViewName 속성으로 데이터 이동시킬 페이지까지 한 번에 설정해서
변수를 통째로 반환한다
4-2) result4() 메서드
ModelAndView는 그의 커즌 Model과는 달리 RequestScope 영역에 있는지 함 보자고,
(같은 피인데 뭐 다르겄어..?ㅎㅎㅎㅎ)
이번에는 HttpServlerRequest 객체 타입으로도 함 뽑아보고~
얘는 되겠지 누가봐도 RequestScope니까
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.ModelAndView;
import kr.co.goodee39.vo.DataBean1;
@Controller
public class TestController {
//index.jsp에서 test5 해당하는 a태그 클릭시, result5페이지로 data5을 들고 이동!
@GetMapping("/test5")
public String test5(@ModelAttribute("bean1") DataBean1 bean1) {
//requestScope로 데이터만 넘겨주고 bean1는 초기화됨
bean1.setData1("문자열6");
bean1.setData2("문자열7");
return "forward:/result5";
}
@GetMapping("/result5")
//DataBean1타입 bean1과 WebRequest타입 request 둘 다 선언시에 출력 안됨..
/*public String result5(@ModelAttribute("bean1") DataBean1 bean1, WebRequest request) {
System.out.println("bean1.data1 : "+bean1.getData1());
//bean1.data1 : null
System.out.println("bean1.data2 : "+bean1.getData2());
//bean1.data2 : null
*/
public String result5(WebRequest request) {
DataBean1 request_data1 = (DataBean1)request.getAttribute("bean1", WebRequest.SCOPE_REQUEST);
System.out.println("request_data1 : "+request_data1.getData1());
//request_data1 : 문자열6
System.out.println("request_data2 : "+request_data1.getData2());
//request_data2 : 문자열7
return "result5";
}
}
5-1) test5()메서드
만들어 놓았던 DataBean1을 사용할 때가 왔다!
커맨드 객체로 불러오고, 결과 페이지에서 bean1으로 호출하기 위해 @ModelAttribute 어노테이션 깔꼼하게 써주자
DataBean1 객체 타입의 변수 bean1 선언, DataBean1의 setter 메서드 사용해 data1, data2 데이터 설정~
5-2) result5() 메서드
결과 페이지 이동 메서드이나, 여기서도 한 번 Request으로 출력해보되, DataBean1객체 타입으로 쇽
근데 잠깐, 여기서 객체 타입으로 불러온답시고는 커맨드객체로 DataBean1 가져와버리면
sysout도 null이고, 결과 페이지에도 아무것도 나오지 않게 됨
결과페이지를 만들자~
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result Test</h1>
<h3>data1 : ${requestScope.data1}</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result1</h1>
<h3>data1 : ${requestScope.data1}</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result2</h1>
<h3>data2 : ${requestScope.data2}</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result3</h1>
<h3>data3 : ${requestScope.data3}</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result4</h1>
<h3>data4 : ${requestScope.data4}</h3>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Result5</h1>
<h3>bean1.data1 : ${requestScope.bean1.data1}</h3>
<h3>bean1.data2 : ${requestScope.bean1.data2}</h3>
</body>
</html>
home으로 만들었던 index페이지에서 진짜 이동 되는지 한 번 해보자!
Run on Server를 클릭해주쟈
결과
'(기초)그래서 뭘 배운거야? > SPRING' 카테고리의 다른 글
SPRING-75-Spring Web MVC : RequestScope Bean 주입하기 - JAVA (0) | 2021.12.21 |
---|---|
SPRING-73-Spring Web MVC : RequestScope - JAVA (0) | 2021.12.20 |
SPRING-72-Spring Web MVC : Redirect / Forward 전송 - XML (0) | 2021.12.20 |
- Total
- Today
- Yesterday
- ul>li
- hr tag
- 긴문장
- definition List
- 줄글
- tablespan
- html
- spantag
- 정보처리기사
- 복습
- 단락태그
- imgtag
- 2021년2회
- boldtag
- usemap
- 정처기
- 합격
- 2021년42회
- hn태그
- br tag
- 정보처리기사필기
- ptag
- tabletag
- pretag
- 비전공
- emtag
- 93점
- marktag
- 정보처리기사실기
- ol>li
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |