Get 방식의 요청 및 응답
✔️ VS code로 Servlet 작업하는 폴더를 오픈하여 html 파일 생성
✔️ index 또는 default라는 이름이 붙은 html, jsp 파일은 메인페이지 역할을 한다
✔️ 이름과 나이를 입력 받아 서버(Java쪽으로 )로 전달(제출)
- form 태그 : 내부에 작성된 input 태그의 값을 지정된 경로(주소)의 서버 또는
페이지로 제출하는 역할 ➡️ 제출 == 클라이언트 요청
- input 태그 : 값을 입력하기 위한 입력 양식을 제공하는 태그 제출시
input 태그의 name 속성 값이 key
입력된 값이 value (Map 형식)
✔️ Get 방식 : 요청하는 주소 뒤에 전달하려는 값을 key=value 형태로 붙여서 전달하는 방식
✔️ /ServletProject1/example1.do?inputName=홍길동&inputAge=20
/ 프로젝트 이름 / 서비스 요청 주소? key=value&key=value...
➡️ 전달하려는 값이 작성된 문자열 : QueryString
✔️ 장점 : 단순함, 주소창에 값을 임의로 작성할 수 있다.
캐싱 가능(요청 주소 저장 == 북마크, 증겨찾기, 링크 공유)
✔️ 단점 : 보안에 취약하다. 글자수 제한이 있다.
💡 검색, 게시글, 뉴스 공유 등을 이용할 때 용이하다.
이름 나이 출력하기
1) index.html 생성하기
<form action="/ServletProject1/example1.do">
이름 : <input type="text" name="inputName"> <br>
나이 : <input type="number" name="inputAge"> <br>
<button type="submit">서버로 제출하기</button>
</form>
2) Java 코드 짜기
[코드 작성]
public class ServletEx1 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String inputName = req.getParameter("inputName");
String inputAge = req.getParameter("inputAge");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(inputName +"님의 나이는" + inputAge + "세 입니다");
[web.xml 작성하기]
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ex1</servlet-name>
<servlet-class>edu.kh.servlet.controller.ServletEx1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ex1</servlet-name>
<url-pattern>/example1.do</url-pattern>
</servlet-mapping>
카페 주문 페이지 만들기
1) index.html 생성하기
<form action = "/ServletProject1/example2.do" method="get">
주문자 : <input type="text" name="orderer"> <br>
hot <input type="radio" name="type" value="hot">
ice <input type="radio" name="type" value="ice">
<br>
커피 :
<select name="coffe">
<option>아메리카노</option>
<option>카페라떼</option>
<option>초코칩프라페</option>
<option>카푸치노</option>
</select>
옵션 : <br>
1샷 추가 <input type="checkbox" name="opt" value="shot1">
<br>
2샷 추가 <input type="checkbox" name="opt" value="shot2">
<br>
연하게 <input type="checkbox" name="opt" value="softly">
<br><br>
<button>주문하기</button>
</form>
public class ServletEx2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String orderer = req.getParameter("orderer");
String type = req.getParameter("type");
String coffee = req.getParameter("coffee");
String[] opt = req.getParameterValues("opt");
System.out.println("주문 내용을 정상적으로 전달 받음");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>"+ orderer +"님의 주문 내역</title>");
out.println("</head>");
out.println("<body>");
out.printf("<h3>주문자명 : %s</h3>\n", orderer);
out.println("<h3>");
out.println("주문한 메뉴 : ");
if(type.equals("hot")) {
out.println("따뜻한 ");
}else {
out.println("아이스 ");
}
out.println(coffee);
out.println("</h3>");
if(opt != null) {
out.println("<ul>");
for(String o : opt) {
String temp = "";
switch(o){
case "shot1" : temp = "1샷 추가"; break;
case "shot2" : temp = "2샷 추가"; break;
case "softly" : temp = "연하게"; break;
}
out.printf("<li>%s</li>\n", temp);
}
out.println("</ul>");
}
out.println("</body>");
out.println("</html>");
[web.xml 작성하기]
<servlet>
<servlet-name>ex2</servlet-name>
<servlet-class>edu.kh.servlet.controller.ServletEx2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ex2</servlet-name>
<url-pattern>/example2.do</url-pattern>
</servlet-mapping>