Servlet 기초 - 데이터 전송(요청)과 응답
1. HTML 파일, Servlet 클래스 만들기
: 사용자에게 요청받을 웹을 구축하고(html)
그 데이터를 Servlet으로 보내고 Servlet에서 요청에 대한 응답을 보내주는 메커니즘.
HTML 파일은 src파일 안 webapp에서 만들어야 한다.
밑에 INF는 보안관련 나중에 나오니 그냥 두고,
꼭 webapp을 클릭한 상태에서 만들어야 한다.
요청받은 데이터를 가져와 응답할 클래스로 사용할 Servlet을 만들어준다.(전 포스팅 참고)
2. 데이터 전송하기
html문서에서 데이터를 전송할 내용을 작성하면 된다.(사용자에게 요청 받을 웹 구축)
- 데이터를 전송할 땐 무조건 form 태그가 필요하다
<form action="DataSend">
질문 : <input type="text" name="data">
<input type="submit">
</form>
* 데이터 전송 3가지 조건 ★★
1) 어디로 보낼건지 : action → Servlet의 URL mapping값을 작성('/' 빼고)
2) 어떤 값을 보낼건지 : name → 보내고 싶은 데이터에게 이름표를 부착하는 개념
3) 언제 보낼건지 : submit → 버튼을 누르면 전송하게끔
위의 코드를 작성하고 실행하면 이와 같이 웹 페이지에 출력된다.
이 상태에선 입력창에 무엇을 써도
입력된 데이터를 받는 곳, 응답할 곳이 없기 때문에 이렇게 오류가 발생한다.
(페이지를 찾을 수 없을 때)
action에 아무것도 작성하지 않으면(URL Mapping값을 작성하지 않으면)
제출을 눌러도 화면이 바뀌지 않고 그대로 새로고침만 된다.
3. 응답을 위해 요청받은 데이터 가져오기
: name값으로 요청받은 데이터를 가져온다.
request.getParameter("data");
request.getParameter();로 가져온 데이터 정보들은 모두 무조건 String형태로 반환된다.
따라서 필요에 따라 형변환을 해주어야 한다는 뜻!
String data = request.getParameter("data");
출력에 쓰기 위해 data라는 변수에 담아준다.
4. 화면에 출력하기
출력하는 건 전 포스팅 그대로 하면 된다!
1) 한글 인코딩 잡아주기
response.setContentType("text/html; charset=UTF-8");
2) 출력스트림 꺼내오기
PrintWriter out = response.getWriter();
out.print("<h1>");
out.print(data);
out.print("</h1>");
웹페이지에 "하이"라고 입력하고 제출버튼을 누르면(요청)
페이지에 "하이"가 출력되는 걸 볼 수 있다!(응답)
신기방기