[ HttpServlet 메소드 ]
[ doGet( ) / doPost( ) ]
- 실질적인 로직 처리
- 매개변수 내장
doGet( HttpServletRequest req, HttpServletResponse resp )
=> HttpServletRequest / HttpServletResponse 객체를 매개변수로 받아서
실질적인 요청용 / 응답용 메소드를 사용
- doGet은 get방식으로 들어온 요청만,
doPost는 post방식 요청만 처리할 수 있다.
[ service( ) ]
- doGet/doPost 통합으로 사용할 수 있는건데
구분해서 사용해야 할 경우가 많기 때문에 get post 많이 사용
- get/post 도 섞어두기 가능
=> doPost(HttpServletRequest req, HttpServletResponse res)
{ doGet(req, resp); }
: 두 방식 다 받을 수 있다.
<< HttpServletReqeust 메소드 >>
[ request. setCharacterEncoding("utf-8"); ]
: 요청 읽어올 때 언어타입 정하기
=> doPost 방식일 때 필수로 세팅
( doGet - URL 로 읽어오는거라 필요 없음
/ doPost - URL과 독립적 )
[* request. getParameter( ) ]
: 클라이언트에서 사용자 입력값 받아오기
- 웹브라우저에서 사용자가 input 태그에 text 를 입력하거나,
selection태그에서 선택을 하는식으로 입력을 하면
=> 그 입력값은 각 태그의 value 값에 담긴다.
=> 사용자는 value 값을 서버에 보내며 어떤 "요청" 을 한다.
- 웹서버는 이 value 값과, 해당 태그의 name(변수명)이 담긴 "요청"을 받아와서
처리하고 응답해줘야 한다.
- 먼저 요청을 "받아와야" 하고, 이 역할을 하는게 HttpServletRequset 객체의
.getParameter( ) 메소드다.
[ 웹클라이언트 단 ]
<input name="userAge">
입력란에 유저가 나이를(value값) 적어 서버에 보내면
=> 서버는 태그의 name 속성을 연결고리로
=> 해당 태그의 value 값을 받아올 수 있다.
[ 서버 단 ]
int age = request.getParameter("userAge");
: 사용자 요청에서 name 이 userAge인 태그의 value 값을 가져와라
이렇게 하면 클라이언트 단에서 유저의 입력값을
서버단의 변수 age 에 가져올 수 있는 것이다.
[ request.getParameterValues( ) ]
: 사용자 입력값 복수 개일 때 받아오기
<input type checkbox name="c">
- checkbox 같이 입력값(value)이 복수 개로 나올 때 사용
=> 배열로 리턴
String[ ] b = req.getParameterValues("c")
[ 파라미터(value값) URL에 직접 입력하기 ]
- 사용자 입력 => name값 value값 => URL에 파라미터로 들어감
http://localhost:8080/ login? hobby=book & age=20 & ...
: name=hobby인 태그에 value 값으로 book
name=age 인 태그에 value 값으로 20
을 담아서 login 이라는 url 주소에 보낸다.
이 구조를 이용해 직접 url로 value값을 줘서 보낼 수 있는 것.
< a hrf = " url " > 링크 걸 때,
parameter ( name / value값 )을 넣은 주소로 링크시킬 수 있다.
[ request.setAttribute( "key값", value ) ]
- 공유 데이터값 저장
[ request.getAttribute( "key값" ) ]
- 공유 데이터값 가져오기
[ request.getRequestDispatcher ( " url " ) ]
- Dispatcher 보내기
[ request.getSession( ) ]
- Session 객체 생성하기
[ request 클라이언트 로그 정보 ]
- url : http://ip:port/컨텍스트: 파일명
- uri : /컨텍스트: 파일명
나한테 요청한 클라이언트 IP 주소 request.getRemoteAddr( );
나한테 요청한 파일명 request.getRequestURI( );
==
${pageContext.request.remoteAddr}
${pageContext.request.requestURI}
<< HttpServletResponse 메소드 >>
[ response.setContentType( ) ]
: 텍스트/이미지등의 응답 타입 정하기
response.setContentType("text/html; charset = UTF-8");
- 필수로 세팅
=> text utf-8 로 통일 ( 안해주면 한글 깨져서 나올 수 있다 )
response.setContentType("img/jpg");
- 이미지 타입 세팅
[ response.getWriter( ) ]
: 응답페이지에 글 쓰기
- 먼저, HTML 페이지에서는 사용자가 입력값과 함께 "요청"을 하면서
< form action=" url " >
그 입력값을 담아서 정해둔 url 로 날려보내버리는 action을 취한다.
- 그럼 그 url에서 기다리다가
해당 요청을 받아 내는게 바로 @WebServlet 의 역할이다. ( 이게 사실상 @getMapping )
@WebServlet( "/url" ) <= 여기서 맵핑해둔 url 이 바로 그 기다리고 있는 주소다.
- 서블릿은 이 빈 방같은 url에서 혼자 기다리고 있다가
action 으로 날라온 요청이 들어오면
요청과 함께 들어온 name / value 등의 정보들을 가지고 (requestParameter)
"로직" 을 처리한다.
이렇게 "로직"을 처리할 수 있는게 바로 서블릿의 역할
처리했으면 "응답"을 줘야한다.
이 응답은 기본적으로 서블릿이 기다리고 있던 그 url,
그 빈방에서 이루어진다.
이 빈방에 text 로 글씨를 써서 응답을 할 수 있게 해주는게 바로
getWriter( ) 메소드다
PrintWriter writer = response.getWriter( );
writer.println(" ");
- PrintWriter 객체에 담아서 사용한다.
( 웹에서는 줄 구분이 되지 않는다. "<br>" 태그를 사용 )
-객체 생성하면서 바로 사용
response.getWriter( ).print( );
'Back to the Servlet' 카테고리의 다른 글
Tomcat 연동 / Tomcat UTF-8 설정 ( intellij ) (0) | 2022.08.06 |
---|---|
Servlet 방식 <= Spring MVC 방식 비교 (0) | 2022.08.05 |
URL Mapping / @WebServlet("/url") / web.xml 버전 (0) | 2022.08.05 |
[HTTP 요청방식] get 방식과 post 방식 (0) | 2022.08.05 |
WAS 와 Servlet, lifecycle (0) | 2022.08.05 |