이번에는 좀 어려운 내용으로 공부해보았다.
JSP파일에서 데이터를 Servlet으로 보내고, 데이터를 새로 적재한 후 다시 JSP파일로 전달하는 것이다.
jsp01.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <%@ 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> <form action="Servlet01" method="get"> 이름 <input type="text" name="name"> <br> 나이 <input type="text" name="age"> <br> <input type="submit" value="전송"> </form> </body> </html> | cs |
먼저 기본 페이지를 하나 생성해주었다. 이름과 나이로 데이터를 보낼 input 박스를 만들어 전송시킨다.
Servlet01.java
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class Servlet01 extends HttpServlet { private static final long serialVersionUID = 1L; public Servlet01() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet() 메소드 실행"); //데이터 받기. String name = request.getParameter("name"); String age = request.getParameter("age"); System.out.println(name); System.out.println(age); //jsp로 페이지 이동 (2가지 방법) // 1. result1.jsp로 페이지 이동. 잘안씀.(왜냐? 데이터 못 가져감) //response.sendRedirect("result1.jsp"); //데이터 적재 request.setAttribute("id","java" ); request.setAttribute("score",80); //데이터를 받은 name변수에 있는 것을 js에 다시 보내준다. request.setAttribute("name",name); // 2.데이터를 전달할 수 있는 페이지 이동 기법 RequestDispatcher dispatcher = request.getRequestDispatcher("result1.jsp"); dispatcher.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } | cs |
1. jsp파일에서 method를 "get"으로 표시해주었기 때문에 doGet( ) 메소드가 실행된다.
2. 24번째 줄과 같이 request.getParameter를 사용하여 jsp01.jsp파일 에서 전달한 데이터를 받아준다.
데이터를 적재한 후 다시 jsp파일에 보낼 수도 있고, 하지 않고 보내는 방법도 있다.
데이터 적재는 35번째 줄과 같이 request.setAttribute("String와야함", "Object가능"); 을 이용하여 저장할 수 있다.
JSP로 페이지를 이동하는 방법에는 2가지가 있는데,
첫번째, response.sendRedirect("result1.jsp"); 로 할 수 있는 방법이 있다. 하지만 잘 사용하지 않는다.
왜냐하면, JSP파일로 데이터를 못가져가기 때문이다.
두번째, RequestDispatcher dispatcher = request.getRequestDispatcher("result1.jsp");
dispatcher.forward(request, response); 를 사용할 수 있는 방법이 있다. 이걸로 사용한다..
result1.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <%@ 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> 페이지 이동 완료.<br> ${id } <!--서블릿으로 넘어올땐 param.이 필요가없다. --> <br> ${score } <br> ${name } </body> </html> | cs |
마지막으로, Servlet에서 데이터를 적재, 전달한 데이터를 result1.jsp에 불러왔다.
11번째 줄의 ${id }와 같이, 원래 js끼리 데이터를 주고 받을 때에는 ${param.id}를 사용해왔다.
하지만 Servlet에서 JSP로 데이터를 전달할 때에는 param을 제외하고 ${id }만 사용해준다.
최종 결과화면
jsp01.jsp -> Servlet01.java -> result1.sjp 로 데이터를 주고 받은 최종 결과화면이다.
위와 같은 방식으로,
객체에서 받은 정보가 맞는지 안맞는지 Sevlet에서 체크하여 접근 가능, 불가 시스템도 만들어보면 좋을것 같다.
'✨ Back-end > Servlet' 카테고리의 다른 글
[Servlet] JSP, Servlet, Class 사용하여 이름, 나이, 성적 간단히 출력 (0) | 2023.02.14 |
---|---|
[Servlet] 회원가입 폼 Sevlet 여러개로 JSP 왔다갔다하기 (0) | 2023.02.14 |
[Servlet] 프로젝트 중 톰캣(tomcat) 버전 변경하는 방법 (0) | 2023.02.14 |
[Servlet] JSP를 활용하여 doGet( ) , doPost( ) 출력하기 (0) | 2023.02.13 |
[Servlet] JSP 서블렛이란? doGet( ) , doPost( ) , 라이프사이클 (0) | 2023.02.10 |
댓글