JSP

JSP를 배워보자~!(내장객체 request)

25G 2021. 4. 21. 11:43

안녕하세요!! 오늘 배웠던 내용은 jsp의 내장 객체 "request"와"response를 배웠습니다! 

request와 response는 jsp내에 구현해 놓은 내장 객체이기 때문에 별 다른 선언이나 import 없이 사용할 수 있었습니다. 

그리고 내장 객체는 jsp페이지에서 가장 많이 사용되는 기본 내장 객체이니 정말 꼭 잘 이해하고 넘어가야 하는 부분입니다.

request부터 설명을 드리자면요

간단히 말씀드리면 [사용자가 서버로 보내는 데이터를 저장]하는 용도로 사용됩니다

 

우리가 네이버나 웹에서 로그인을 할 때에 로그인을 서버에 요청을 해서 로그인을 하는 개념이라고 간단히 볼 수 있겠는데요

사용자가 무언가를 입력하고 서보로 요청을 보낼 수 있는 페이지를 (form page)라고 합니다 흔히들 검색창이나 아이디나 비밀번호를 입력하는 네모난 창이 있죠? 그 창에 데이터를 입력이나 선택 가능한 요소들을 "요청 파라미터"라고 합니다

요청 파라미터 관련 메서드를 보시죠

request.getParameter(String name) : 요청 파라미터의 이름이 name인 값을 전달받습니다. 값이 없을 시 null반환

request.getParameterValues(String name): 요청파라미터의 이름이 name인 값을 배열 형태로 전달받고 값이 없으면 null반환

request.getParameterNames() : 모든 요청 파라미터의 이름과 값을 Enumeration객체 타입으로 전달받습니다

request.getParameterMap(): 모든 요청 파라미터의 이름과 값을 Map(이름,값)객체 타입으로 전달받습니다

 

위와 같이 대표적인 메서드를 찾아볼 수 있습니다

그럼 request객체와 메서드들을 사용해 보기 위해서 간단한 코드를 준비했습니다

문자 인코딩과 디코딩 타입은 꼭 "UTF-8"로 해주셔야 한글을 인식해서 디코딩했을 때 한글이 깨지지 않습니다

 

위 코드에 바디 태그를 해석해 보자면

form 태그에 action속성에다가 사용자의 요청을 받을 URL과 method속성에는 사용자의 요청 방식을 post로 하고 있네요

많은 요청 방식이 있지만 form태그는 get과 post둘중 하나만 가능하답니다

잠깐 get과 post의 차이를 설명드리자면

get- 파라미터를 URL에 담아서 전달(파라미터에 값이 보이기 때문에 보안에 취약합니다)

post-파라미터를 HTTP 프로토콜의 body에 담아서 전달하기 때문에 사용자가 값을 볼 수 없습니다

 

그리고 p태그 안에 input 태그의 type속성으론 "text"를 걸어서 요청 파라미터의 name을 "id"로 설정하고 있습니다 다음 줄 같은 의미이지만 비밀번호를 작성하는 input 태그이다 보니 text로 하면 비닐바지처럼 소중한 것들이 다 보이겠죠? 크흡

그래서 password로 설정해 주었습니다 이렇게 하면 요청 방식을 get으로 하는 것이 아니면 사용자가 비밀번호를 가시적으로 알기는 힘들게 됩니다

그리고 12번 줄에서 input 태그에 type속성을 submit이라는 버튼을 만드는 기능을 넣고 그 버튼의 이름을 "로그인"으로 해주는 코드입니다

어때요 참 쉽죠?! 

이렇게 실행을 시키면 

요런 귀여운 결과물이 나온답니다 ㅎㅎㅎ 하지만 윗글을 잘 이해한 똑똑한 분들은 여기에 아이디랑 비밀번호를 치고 로그인을 누른다면 바로 오류가 나며 "요청 페이지 없음"이 나올 것을 잘 아실 겁니다

왜냐하면 form태그에 action속성에 요청받을 URL을 아직 만들지 않았거든요 바로 process01.jsp를 말이죠

그래서 간단하게 요렇게 만들어 봤습니다

자자자 더 간단하게 요코 드를 설명하자면

일단 아까 인코딩 타입이 UTF-8이라고 디코딩 타입까지 UTF-8로 설정하지 않았죠 그래서 만약에 10번 줄이 없이 실행을 시킨다면 한글이 다 깨져서 상형문자처럼 나왔을 것입니다!

그럴 때 당황치 마시고 request내장 객체에 있는 10번째 줄에 있는 메서드를 사용해서 디코딩 타입을 맞춰주세요

그로 11부터 12까지 request.getParameter를 사용해서 위에 form태그의 요청 파라미터로부터 전달받은 값을 반환받고 있습니다 즉 사용자가 form 태그에 입력한 값을 porcess.01이 전달받고 그 값을 반환하는 코드라 볼 수 있겠습니다

 

그리고 스클립틀릿코드가 끝나고 그 밑에는 표현 문으로 반환받은 값을 id와 pw로 출력해 주는데 그냥 id와 pw만 출력하면 값만 덩그러니 이게 무슨 값 인지도 모르는 그냥 문자만 표현되겠죠 그래서 조금 더 인간친화적으로 상냥하게 p태그와 표현 문을 사용해서 반환받은 값을 출력해 주고 있습니다

자 위에 더 많은 request내장 객체의 기능들이 있었지만 오늘은 제일 기본적인 기능을 사용해 봤습니다.

많이 쓰이고 중요한 내장객 체인만큼 글이 길어진 것 같습니다 하핳,,,(이렇게 하는 게 복습은 잘됩니다..)그럼 다음엔 response내장 객체에 대해서 포스팅을 할 계획입니다

여러분~ 안녕~