※request
동적 웹으로 답을 줘야하는 경우, 서버는 요청 request 와 응답 response 객체를 생성하여 해당 값을 이용하여 동적 웹으로 응답한다.
이때의 request 에는 사용자가 요청, 입력한 값이 저장되어있다.
주로 form 태그를 이용하여 값을 입력 받으며, 필수적인 옵션을 꼽자면, form 태그의 action, input 태그의 name, input에 대한 전송 타입 submit 이 있다.
1. action(어디로 보낼것인가)
1)전체경로 : http://localhost:8081/Servlet/ex01
-> 외부서버(다른 컴퓨터, 다른 서버)에 요청
2)상대경로 : URLMapping , JSP 경우 확장자까지 기입
-> 내부서버(프로잭트 내 파일) 접근
2. name(보내는 데이터를 구분할 수 있는 이름)
3. type="submit"(언제 데이터를 보낼 것인지)
예제)
※html 파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>데이터 보내기</h1> <!-- name 옵션은 input 태그당 하나 --> <!-- action 에 / 작성시 상대 경로로 설정하게 되므로 주의 할것 --> <form action = "ex05form"> <input type = "text" name = "data"> <input type = "submit" value = "send"> <!-- value 의 기본 값 : 제출 --> <!-- submit 은 data 전달 포함 x --> </form> </body> </html> | cs |
※java 파일
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | package ex0503; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ex05form */ @WebServlet("/ex05form") public class ex05form extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //1. 파라미터 수집 : form 태그로 전달 받은 데이터를 변수에 담아 보관 //input 태그의 name 과 동일한 문자열이 요구됨, 해당 name 이 없다면 null 값 리턴 받음 String data = request.getParameter("data"); //모든 값은 문자열로 받아옴 //2. 파라미터 System.out.println(data); } } | cs |
※실행결과
- 입력 값은 이클립스의 cmd에 출력된다.
※ 입력 값 관련
입력 값 전달 후 URL의 주소 형태가 변경된다.
http://localhost:8081/Servlet/ex05form?data=1233
?data=1233
이 문자열을 쿼리 스트링 이라고 하며, 다수의 값을 전달 하는 경우 다음과 같이 URL의 쿼리 스트링이 다음과 같이 변경된다.
?name 이름1=값1&name 이름2=값2&name 이름3=값3...
-& 기호로 연결됨
실습 예제) 구구단 출력
- 선택한 색상으로 테이블의 배경 설정
- 단 수 범위 2개를 입력 받음
- 입력 받은 두 개의 단수 범위로 테이블 생성
※ src/main/java - ex09makemul.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package ex0503; 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; /** * Servlet implementation class ex09makemul */ @WebServlet("/ex09makemul") public class ex09makemul extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // 단수 풀력, 색깔 입력 받음 String color = request.getParameter("color"); int num1 = Integer.parseInt(request.getParameter("num1")); int num2 = Integer.parseInt(request.getParameter("num2")); //응답 방식 및 문자열을 읽어들이는 format 설정 response.setContentType("text/html ; charset = utf-8"); //html 형식으로 작성할 메시지 객체 생성 PrintWriter out = response.getWriter(); out.print("<http>"); out.print("<head></head>"); out.print("<body>"); out.print("<table border = 'black' bgcolor = "+ color +">"); //입력 받은 num1 에서 부터 num2에 해당하는 단의 구구단 출력 for(int i =num1; i<=num2; i++) { out.print("<tr>"); for(int j = 1; j<10; j++) { out.print("<td>"+i+"*"+j+"="+(i*j)+"</td>"); } out.print("</tr>"); } out.print("</table>"); out.print("</body>"); out.print("</http>"); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!--입력폼 생성 : 단수 범위(num1, num2), 색상을 입력 받음--> <form action="ex09makemul"> 색상선택<input type = "color" name = "color"><br> <input type = "number" name = "num1">에서 <input type = "number" name = "num2">까지의 구구단을 출력 <!--입력 받은 값 --> <input type = "submit" value = "전송"> </form> </body> </html> | cs |


댓글
댓글 쓰기