공부일지

231120 (JSP)

CD가참둥그렇다 2023. 11. 20. 17:34

forward(request)

  • servlet이 받은 요청을 다시 다른 servlet이나 jsp에 전달한다.
  • URL이 전달된 사실을 인지하지 못한다.

redirect(response)

  • 웹 브라우저에게 새로운 URL로 이동하라는 명령을 전달한다.
  • 웹 브라우저는 새로운 URL로 새로운 request를 보내고 서버가 이 요청에 응답한다.
  • 사용자가 실제로 다른 페이지로 이동하여 주소표시줄의 URL이 변경된다.
  • resp.sendRedirect("list") : URL을 list로 바꾸고 다시 요청을 실시하도록 한다.

url 맵핑의 방법

  1. String으로 하나의 문자열을 url 맵핑으로 사용 “/list”
  2. String 배열을 이용하여 맵핑 name=”name”, urlPatterns = {”1”,”2”}
  3. /를 제외하고 *.te로 매핑

Servlet에서 요청의 전달

  1. @WebServlet( 프로젝트 내에서 어떤 주소값(문자열)로 페이지 처리를 분기하기위한것 url 맵핑 ) ex)a태그 또는 폼태그 등으로 프로젝트경로 뒤에 문자열이 바뀌면 요청을 받기위함.

2.RequestDispatcher 서블릿에서 다른 페이지 등으로 요청을 넘기기 위한 객체. ( forward ) ※ rd = req.getRequestDispatcher("다음파일경로"); , url이 안바뀜 2. request.setAttribte , getAttribute vs getparameter 3. attribute는 서블릿에서 다른 페이지로 요청을 넘길 때 필요한 데이터가 있다면 담기 위한 그릇 4. jsp에서는 getAttribute로 서블릿이 준 데이터를 받아서 표현함 ( EL , jstl ) -> EL ( ${EL} , jstl + foreach..) 5. getparameter는 url로 요청 시 페이지에서 폼이나 url로 (a) get or post로 서블릿에 데이터를 담아주는것 6. sendRedirect : url을 바꿔서 다시 servlet에서 응답을 하기 위한 메소드

url mapping 테스트

  1. list.cd로 서블릿 요청을 받아 cd/list.jsp를 보여주기
  2. list.jsp에서 a태그를 이용해서 파라미터 2개를 insert.cd로 전송
  3. insert.cd 요청받은 파라메터를 콘솔창에 찍고 뒤에 “1”을 붙여서 insert.jsp로 출력

servlet

else if (req.getServletPath().equals("/list.cd")) {
			rd = req.getRequestDispatcher("cd/list.jsp");
		} else if (req.getServletPath().equals("/insert.cd")) {
			rd = req.getRequestDispatcher("cd/insert.jsp");
			System.out.println(req.getParameter("a"));
			System.out.println(req.getParameter("b"));
			req.setAttribute("a", req.getParameter("a")+"1");
			req.setAttribute("b", req.getParameter("b")+"1");
		} else {
			resp.getWriter().println("오류");
		}
		rd.forward(req, resp);

index.jsp

<a href="list.cd">list.cd</a>

list.jsp

<a href="insert.cd?a=a&b=b">추가</a>

insert.jsp

	<h4>${a }</h4>
	<h4>${b }</h4>