시작
사용자의 요청에 get
과 post
두가지방법이 있다. 사용자가 요청을 보내는방법, 그 요청을 가지고 활용하는방법을 학습하려한다.
진행
결국에는 http://주소/
를 입력한다는 것은 서버에서 index
파일을 요청하겠다는 것이다.
물론 이전에 사용한 Annotation
을 이용해 파일의 이름을 입력하지않고 주소로 호출할 수도 있다.
get
이 요청에는 추가인자를 추가할수있다. 이를 주소뒤에 Querystring
으로 표현할 수 있다.
물론 변수의 이름은 서버에서 미리 지정한 이름으로 입력을 해야 받을 수 있다.
주소뒤에 직접입력하는 경우는 없을 것이라 생각되고 버튼
을 눌러서 요청하거나 하이퍼링크
주소에 포함시킬 수 있다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="/hello">변수지정안함</a>
<a href="/hello?cnt=5">cnt변수5지정</a>
<form action="hello">
<div>
<input type="text" name="cnt"/>
<input type="submit" value="전송" />
</div>
<div>
<textarea name="contents"></textarea>
<input type="submit" value="전송" />
</div>
</form>
</body>
</html>
문서와 같이 임의의 변수 cnt
에 대한 값을 하이퍼링크
에 포함시켜 요청하거나
HTML의 사용자의 입력을 처리하기 위한 <form>
태그의<submit>
을 통해 요청할 수 있다.<form>
태그의 action
요소에 원하는 매핑주소를 입력하면 submit
되었을때 원하는 주소로 이동된다.
이를 받는 문서에서는 reqs.getparameter("변수명")
으로 받을 수 있다.
String cnt_ = reqs.getParameter("cnt");
int cnt = 10;
if(cnt_ != null && !cnt_.equals("")) {
cnt = Integer.parseInt(cnt_);
}
for (int i = 0; i < cnt; i++) {
out.println("안녕<br/>");
}
String content_ = reqs.getParameter("content");
out.println("<br>내용확인");
out.println(content_);
전달받은 cnt
변수의 값만큼 for
문을 반복하고 전달받은 contents
를 표시하는 문서이다. 임시변수를 받을 때 대부분 변수명_
으로 표기한다.
String
형태로 전달받기 때문에 cnt
라는 변수의 값을 숫자로 받고 싶기에 Integer.parseInt
로 변환해주었고
기본값 10, 그리고 공백과 빈칸이 아닐때만 해당변수를 입력받는다는 문구를 추가해주었다.
이는 Query
값이 전달이 안될경우 에러가나기 때문이다.
post
<form>
태그의 method
값을 지정해주지않으면 get의 방식을 이용한다. 하지만 이경우 URL에 모든 변수와 값들이 표시되고
여기에는 URL에는 표시불가능한 특수기호가 포함될 가능성이 있고 URL의 길이자체에 제한이 있기 때문에 바람직하지 않다.
전달하고 싶은 옵션이 여러가지라면 method="post"
를 이용한다.
<form action="hello" method="post">
<div>
<input type="text" name="cnt"/>
</div>
<div>
<textarea name="contents"></textarea>
<input type="submit" value="전송" />
</div>
</form>
이경우 URL에 옵션이 따로 표시되지 않는다.
'JSP' 카테고리의 다른 글
3. Servlet작성 (0) | 2022.03.21 |
---|---|
2. 톰캣, 이클립스 설치 (0) | 2022.03.21 |
1. 공부의 시작 (0) | 2022.03.20 |