JSP와 Servlet 사용 및 파라미터 활용
이전에 요청이 들어오는 방식과 response.getWirter를 통해 서버의 내용을 페이지로 보내봤다. 저번 예제의 경우 한 줄 밖에 되지 않지만, 우리가 홈페이지를 개발하게 되면 수많은 양의 코드를 작성하게 되는데 이를 하나하나 response에 담아서 준다고 생각하면 엄청 불편하다. 그래서 나온것이 jsp파일에 연결하는 방식이다.
JSP 파일과 연결
우선 WEB-INF폴더에 새로운 폴더와 jsp파일을 만들어준다. 필자는 임의로 user.jsp라는 파일을 views폴더에 넣어놨다.
우리가 사용해볼 방식은 dispatcher방식인데, 이는 forward()를 이용하여 클라이언트가 요청하면서 전송한 데이터를 그대로 유지하게 된다.
dispatcher이전에 setAttribute라고 있는데 이는 JAVA의 Map형식과 비슷하게 Key와 Value로 나눠져 있다. 즉 name객체에 값을 넣고 key값을 "name" 이라고 정해 놓으면 getAttribute하여 꺼내 쓸 수 있는 방식이다.
위에서 잠깐 언급했던 forward이다. 이는 데이터를 그대로 유지한 상태로 해당 주소에 전달해주는 역할을 한다. 위 경로가 필자가 jsp파일을 만든 경로이다.
위 두가지는 같은 결과가 나온다. 하지만 두번째 사진의 경우 선언이 되지 않았음에도 같은 결과값이 나오는데 이를 선언된 적 없는 객체, JSP내장 객체라고 한다. 이미 정의되어져 있기 때문이다. 앞에 (String)으로 다운캐스팅한 이유는 setAttribute할 때 value값이 Object이기 때문에 다운캐스팅 해준것이다. 이렇게 작성하고 요청해보면 아래처럼 name에 담긴 "홍길동" 이 input태그내에 나타나게 된다.
위처럼 ${} 로 해도 같은 값이 출력되는데 이는 다운캐스팅을 하지 않아도 값을 가져오게 된다. 이를 EL(Expression Language)태그 라고 한다.
파라미터의 활용
파라미터는 클라이언트에서 요청할 때 Key와 Value를 Params에 담아서 서버에 보내주는 것을 의미한다. 아래 사진처럼 Postman에서 Params에 Key와 Value칸이 있는데 임의로 test = 10000, name = 홍길동이라고 넣어주면 아래와 같이 주소창에 ? 뒤부터 시작해서 test=10000&name=홍길동 이라고 나온다. 이러한 요청이 파라미터 요청이다.
그대로 넣어주고 잘 불러오는지 확인하기 위해서 Servlet에서는 request.getParameter로 받아서 출력해본다.
그대로 postman에서 send해주면 위와 같이 key값을 각각의 변수에 담아 출력해보니 잘 가져오는 것을 알 수 있다.