드디어 사용자가 입력한 데이터를 받아와서 처리하는 방법에 대해 다룰 시간이 되었습니다.
클라이언트가 서버에 요청하는 방식 중에 하나인 GET 요청을 이용해서 다루려고 합니다.
GET 요청이란?
GET 방식은 URL(URI)을 이용합니다.
일반적으로 많이 사용되는 방식입니다.
http://localhost:8080/hello?cnt=3
이런 방식으로 요청합니다.
나 hello라는 문서에 접근할 거야 대신 cnt에 3이라는 값을 넣어줘~ 하는 거죠.
서버에서는 이 값을 받아와서 무엇인가를 처리하면 됩니다.
GET 방식의 특징
- GET 요청을 캐시 할 수 있습니다
- GET 요청은 브라우저 기록에 남아 있습니다
- GET 요청을 북마크 할 수 있습니다
- 민감한 데이터를 다룰 때 GET 요청을 사용해서는 안됩니다
- GET 요청에는 길이 제한이 있습니다.
- GET 요청은 데이터를 요청하는 데만 사용됩니다 (수정 아님)
예시(servlet)
간단하게 사용자에게 입력받은 수만큼 반복문을 돌며 문자열을 출력해봅시다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public class HelloWorld extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String inputString = request.getParameter("cnt");
int cnt = 5;
if(inputString!=null && !inputString.equals(""))
cnt = Integer.parseInt(inputString);
for(int i = 0; i < cnt; i++)
out.println("안녕하세요"+(i+1)+"<br/>");
}
}
|
cs |
서블릿을 그냥 실행해보면 아래처럼 5번만 반복을 해요.
GET 요청으로 들어온 만큼 반복문을 돌기로 했지만 기본으로 cnt변수에 5를 대입해서 그렇습니다.
url을 살짝 변경해볼게요. http://localhost:8080/Newlec/hello?cnt=10로 수정을 하면 10번 출력됩니다.
URL에 직접 작성하지 않고 HTML에서 값을 입력하면 그 값을 전달받을 수 없을까요??
가능합니다. FORM 태그가 있다면 말이죠
예시(HTML)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div>
<form action="hello">
<div>
<label>반복문을 몇 번 실행할까요?
</div>
<div>
<input type="text" name="cnt" />
<input type="submit" value= "출력"/>
</div>
</div>
</body>
</html>
|
cs |
form 태그는 다양한 입력 폼을 제공합니다.
텍스트 박스 외에도 체크박스나 라디오 버튼이 있습니다.
action은 form에서 입력한 값을 어디로 보낼지 경로를 적어주시면 됩니다.
일단 text박스를 사용해볼게요.
input type = "text" 뒤에 name을 지정해줍니다.
여기의 값과 servlet에서의 getParameter("값")이 일치해야 해요.
클라이언트에서 값을 입력하고 submit을 누르면 자동으로 hello로 매핑된 서블릿으로 전송됩니다.
그러면 우리가 원하는 예제가 완성이 되죠.
지금까지 GET 요청을 이해하기 위해서 간단한 실습을 해봤습니다.
감사합니다.
'web > jsp&servlet' 카테고리의 다른 글
Form radio 속성과 Servlet (0) | 2020.07.10 |
---|---|
HTML 프로젝트 JSP 프로젝트로 바꾸기 (0) | 2020.07.10 |
[Servlet] LifeCycle 이해하기 (0) | 2020.07.04 |
Servlet을 이용해 웹 표시하기 (0) | 2020.07.03 |
Servlet을 처음 시작해보자!! (0) | 2020.07.01 |