form
폼을 제출(submit) 하면 ( type="submit" 인 전송 버튼을 누르면)
action="요청경로"
method="전송방식"
서버에 "요청경로" 대로 요청이 되고
폼에 입력한 내용은 "전송방식" 으로 전송이 된다. (get or post)
- form 사용법
1. action 속성의 값은 폼을 제출했을때 요청되는 경로가 된다.
2. method 속성의 값은 전송 방식을 지정한다. 생략하면 default 값은 get 이다.
3. form 의 자손요소중에 type="submit" 버튼을 누르면 폼이 제출된다.
4. 전송 방식은 get 방식과 post 방식이 있는데
-get 방식 전송은 입력한 정보를 ?를 사용해서 주소창에 달고가는 방식이고
-post 방식 전송은 요청의 몸통에 달고가는 방식이기 때문에 ?가 주소창에 보이지 않는다.
form 태그 3가지 코드 작성방식 비교
method="get", method="post" 비교
Servlet, jsp 비교
method="get" 방식 사용
요청의 주목적이 정보를 받아오는 것이라면 get 방식을 주로 사용한다.
정보를 요청받을때를 대비한 한글깨짐방지 코드를 작성하지 않아도 된다.
get 방식 전송은 입력한 정보를 ?를 사용해서 주소창에 달고가는 방식이다.
method="post" 방식 사용
요청의 주목적이 정보를 전송하는 것이라면 post 방식을 주로 사용한다.
정보를 요청받을때를 대비한 한글깨짐방지 코드를 작성해야 된다.
post 방식 전송은 요청의 몸통에 달고가는 방식이기 때문에 ?가 주소창에 보이지 않는다.
jsp 방식으로 작성
한글 응답 설정이 상단 코드에 작성되어 있기 때문에 별도로 하지 않아도 된다.
한글로 요청 할일이 있다면 한글 요청 설정만 해주면 된다.
1. /send 요청을 처리할 SendServlet 클래스를 test.servlet 패키지에 만들어 보세요
2. 만든 서블릿에서 클라이언트가 form 전송하는 문자열을 추출해서 서버측 콘솔창에 출력해 보세요
(전송하는 문자열은 msg 라는 파라미터 명으로 전달된다)
3. 클라이언트에게 html 형식으로
"메시지 잘 받았어 클라이언트야!"
라는 문자열을 응답해 보세요.
index.html (폼태그 추가, 추가한 부분만 발췌)
<form action="/Step01_Servlet/send" method="get">
<input type="text" name="msg" placeholder="서버에 할말 입력..."/>
<button type="submit">전송</button>
</form>
<form action="/Step01_Servlet/send2" method="post">
<input type="text" name="msg" placeholder="서버에 할말 입력..."/>
<button type="submit">전송</button>
</form>
<form action="/Step01_Servlet/send.jsp" method="post">
<input type="text" name="msg" placeholder="서버에 할말 입력..."/>
<button type="submit">전송</button>
</form>


SendServlet
index..html 에서 method="get" 방식 사용
요청의 주목적이 정보를 받아오는 것이라면 get 방식을 주로 사용한다.
정보를 요청받을때를 대비한 한글깨짐방지 코드를 작성하지 않아도 된다.
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/send")
public class SendServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// msg 라는 파라미터명으로 전송되는 문자열 읽어오기
String a=req.getParameter("msg");
//응답 인코딩 설정
resp.setCharacterEncoding("utf-8");
//응답 컨텐츠 설정
resp.setContentType("text/html; charset=utf-8");
//요청을 한 클라이언트에게 문자열을 응답할 객체 얻어오기
PrintWriter pw=resp.getWriter();
pw.println("<!doctype html>");
pw.println("<html>");
pw.println("<head>");
pw.println("<meta charset='utf-8'>");
pw.println("<title>제목 입니다</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<p>"+a+"</p>");
pw.println("<p>\"메시지 잘 받았어 클라이언트야!\"</p>");
pw.println("<br>");
pw.println("<a href=\"/Step01_Servlet/\">돌아가기</a>");
pw.println("</body>");
pw.println("</html>");
pw.flush();//방출
pw.close();//닫아주기
}
}
//한글 깨지지 않도록
req.setCharacterEncoding("utf-8");
method="get" 방식으로 폼태그를 사용하면 위의 코드를 사용하지 않아도 한글이 깨지지 않는다.
SendServlet2
index..html 에서 method="post" 방식 사용
요청의 주목적이 정보를 전송하는 것이라면 post 방식을 주로 사용한다.
정보를 요청받을때를 대비한 한글깨짐방지 코드를 작성해야 된다.
package test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/send2")
public class SendServlet2 extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//한글 깨지지 않도록
req.setCharacterEncoding("utf-8");
// msg 라는 파라미터명으로 전송되는 문자열 읽어오기
String a=req.getParameter("msg");
//응답 인코딩 설정
resp.setCharacterEncoding("utf-8");
//응답 컨텐츠 설정
resp.setContentType("text/html; charset=utf-8");
//요청을 한 클라이언트에게 문자열을 응답할 객체 얻어오기
PrintWriter pw=resp.getWriter();
pw.println("<!doctype html>");
pw.println("<html>");
pw.println("<head>");
pw.println("<meta charset='utf-8'>");
pw.println("<title>제목 입니다</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<p>"+a+"</p>");
pw.println("<p>\"메시지 잘 받았어 클라이언트야!\"</p>");
pw.println("<br>");
pw.println("<a href=\"/Step01_Servlet/\">돌아가기</a>");
pw.println("</body>");
pw.println("</html>");
pw.flush();//방출
pw.close();//닫아주기
}
}
//한글 깨지지 않도록
req.setCharacterEncoding("utf-8");
반대로 해당 코드를 작성해야한다.
send.jsp
jsp 방식으로 작성
한글 응답 설정이 상단 코드에 작성되어 있기 때문에 별도로 하지 않아도 된다.
한글로 요청 할일이 있다면 한글 요청 설정만 해주면 된다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
/*
jsp 페이지에서 HttpServletRequest 는 기본 객체이다.
request 라는 이름의 지역변수에 참조값이 들어 있기 때문에 바로 . 찍어서 필요한 메소드를
활용할 수 있다.
*/
//post 방식 전송 한글이 깨지지 않도록
request.setCharacterEncoding("utf-8");
//msg 라는 파라미터명으로 전송되는 문자열 추출해서 콘솔창에 출력하기
String a=request.getParameter("msg");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>/send.jsp</title>
</head>
<body>
<p><%= a %></p>
<p>"메시지 잘 받았어 클라이언트야!"</p>
<a href="/Step01_Servlet/">돌아가기</a>
</body>
</html>
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
jsp는 상단의 코드에서 한글 응답 설정은 미리 해주기 때문에 위의 코드를 작성하지 않아도 한글이 깨지지 않는다.
post 방식으로 연결되었고 한글로 요청 할일이 있다면 한글 요청 설정만 해주면 된다.
'Servlet&JSP' 카테고리의 다른 글
| Step02_DB (jsp SELECT) (0) | 2022.08.12 |
|---|---|
| Step02_DB (jsp DB연동하기, DbcpBean) (0) | 2022.08.12 |
| Step01_Servlet(표 만들기) (0) | 2022.08.12 |
| Step01_Servlet(jsp영역, 주석, 친구목록, ArrayList, 반복문) (0) | 2022.08.11 |
| Step01_Servlet(오늘의 운세2, bootstrap 사용, jsp) (0) | 2022.08.11 |