반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.web.model2.mvc.redirect 본문

[IT]/java

java.web.model2.mvc.redirect

givemebro 2021. 4. 14. 10:08
반응형
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>iu 정보</title>
</head>
<body bgcolor="lime">
	아이유 정보입니다
	<br> 아이유 상세정보....
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>2-park.html</title>
</head>
<body bgcolor="orange">
	박보검 정보입니다
	<br> 박보검 상세정보....
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dynamic-web</title>
</head>
<body>
	<%=request.getParameter("keyword")%>
	정보입니다
	<br>
	<%=request.getParameter("keyword")%>
	상세정보....
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward-redirect</title>
</head>
<body>
<h3>forward와 redirect 이동방식 테스트</h3>
<%--
		Controller에서 Model 과 연동 후 
		View로 이동 ( 제어권을 넘길때 ) 할 때 사용하는 forward과 redirect을 테스트 해본다 
		forward : 기존 request와 response가 유지 , 새로고침시 재동작된다 , 서버상에서 이동되므로 url 변경 x 
					주로 정보조회시 사용 
		redirect : 기존 request와 response가 유지되지 않는다 , 새로고침시에도 재동작되지 않는다  
					클라이언트 브라우저에게 이동url을 재지정하여 이동시키는 방식이므로 url 변경됨 
					주로 정보 등록,삭제,수정시 사용 
 
 		test.jsp -- ForwardTestServlet -- MockDAO
 							|
 							| forward 
 						forward-result.jsp
 						
 		test.jsp -- RedirectTestServlet -- MockDAO
 							|
 							| redirect
 						redirect-result.jsp						
 							
 --%>
 <a href="ForwardTestServlet">forward 이동방식 테스트</a><br><br>
 <a href="RedirectTestServlet">redirect 이동방식 테스트</a><br><br>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>forward-result.jsp</title>
</head>
<body>
	<%-- forward 방식은 request가 유지되므로 아래처럼 정보를 얻을 수 있다  --%>
	forward 결과화면
	<%=request.getAttribute("info")%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>redirect-result.jsp</title>
</head>
<body>
	redirect 결과 화면
	<%-- redirect 방식이므로 아래는 null 정보가 나온다. 이유는 request가 유지되지 않으므로 --%>
	<%=request.getAttribute("info")%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>home</title>
</head>
<body>
<%-- 
		정적인 html 서비스 -> 정보가 필요한 만큼 서버상에서 html을 만들어야 한다  
--%>
<a href="1-iu.html">아이유 정보</a><br>
<a href="2-park.html">박보검 정보</a><br>
<%-- 위와 같은 형태는 필요한 정보가 추가될 경우 계속해서 서버상의 html문서작업이 필요하다
	   백명의 정보가 필요하면 html을 100개 작업해서 서버상에 배포해야 한다
	   --> 정적인 웹기술  	
 --%>
	<%-- 
		동적인 jsp(or Servlet) 서비스  -> 정보가 추가되어도 별도의 jsp 추가 작업은 필요없다
		백명이든 천명이든 만명이든 추가작업은 필요없다 --> 동적 웹기술 
--%>
	<form action="dynamic-web.jsp">
<input type="text" name="keyword" required="required">
<input type="submit" value="검색">
</form>
</body>
</html>
package org.kosta.webstudy14.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kosta.webstudy14.model.MockDAO;

/**
 * Servlet implementation class ForwardTestServlet
 */
@WebServlet("/ForwardTestServlet")
public class ForwardTestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ForwardTestServlet() {
        super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println(this.getServletName()+" doGet 실행");
		String view="forward-result.jsp";
		MockDAO dao=new MockDAO();
		request.setAttribute("info", dao.getDbInfo());
		request.getRequestDispatcher(view).forward(request, response);
	}
}

package org.kosta.webstudy14.controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.kosta.webstudy14.model.MockDAO;

/**
 * Servlet implementation class RedirectTestServlet
 */
@WebServlet("/RedirectTestServlet")
public class RedirectTestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public RedirectTestServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println(getServletName() + " doGet 실행");
		MockDAO dao = new MockDAO();
		dao.register("등록할 정보");
		// redirect 방식으로 view 로 이동한다
		String view = "redirect-result.jsp";
		// redirect방식은 request가 유지되지 않으므로 아래 코드의 정보는 공유되지 않는다
		// 테스트를 위해서 써본다
		request.setAttribute("info", "공유정보");
		response.sendRedirect(view);
	}
}
package org.kosta.webstudy14.model;

public class MockDAO {
	public String getDbInfo() {
		System.out.println("Model에서 db에 정보를 조회");
		return "db 조회정보";
	}

	public void register(String info) {
		System.out.println("Model에서 db에 정보를 등록");
	}
}
반응형

'[IT] > java' 카테고리의 다른 글

java.동적 객체 생성 및 메소드 실행  (0) 2021.04.19
java.DisignPattern.Front Controller Pattern  (0) 2021.04.16
java.mvc.member  (0) 2021.04.14
java.DisignPattern.Singleton  (0) 2021.04.14
java.web.model2.mvc.forward  (0) 2021.04.13
java.web.model2.mvc.forword/redirect  (0) 2021.04.12
java.web.model2.mvc  (0) 2021.04.12
java.web.초기  (0) 2021.04.12
Comments