공부일지
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 맵핑의 방법
- String으로 하나의 문자열을 url 맵핑으로 사용 “/list”
- String 배열을 이용하여 맵핑 name=”name”, urlPatterns = {”1”,”2”}
- /를 제외하고 *.te로 매핑
Servlet에서 요청의 전달
- @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 테스트
- list.cd로 서블릿 요청을 받아 cd/list.jsp를 보여주기
- list.jsp에서 a태그를 이용해서 파라미터 2개를 insert.cd로 전송
- 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>