목차
1. form 태그 사용방법
1) method 속성의 값으로 get 또는 post 작성 가능
ex) <form action="이동할 페이지 이름.확장자" method="get 또는 post">
(action은 필수 사항이지만 method 는 선택사항이다 !
method를 사용하지 않을시 기본값인 get 방식으로 된다
get : 사용자가 입력한 데이터를 주소창에 그대로 출력)
</form>
ex) <form action="test_get.jsp" method="get">
아이디입력:<input type="text" name="id" required maxlength="30" autofocus>
아이디입력:<input type="text" name="id" required maxlength="30" autofocus>
<br>
비밀번호 입력:<input type="password" name="pwd" required maxlength="10">
</form>
* autofocus : 자동으로 커서를 가져다 주고 위에 한번만 사용해주면 된다
* 어제 만든 프로젝트를 열고 WebContent 디렉터리로 이동
* test_call_get.jsp : 처음에 실행되는 페이지
* test_get.jsp : 두번째로 실행되는 페이지
* 한글 데이터를 처리하는 방법
1) form 태그에서 method를 post로 한 경우
가. 사용자가 데이터를 입력하는 페이지에선 추가 설정을 하지 않는다
나. form 태그의 action 속성에서 작성한 페이지에서는 request 내장 객체를 이용하여 setCharacterEncoding()함수를 호출한다
ex) <form action="페이지이름.확장자">
"페이지이름.확장자" 페이지 안에서는 아래와 같이 작성
<%
request.setCharacterEncoding("문자 집합 코드 명을 입력");
// 문자 집합 코드명 : 한글은 EUC-KR 또는 UTF-8
// 단 jsp 페이지에 있는 page 디렉티브에 있는 pageEncoding 속성의 값과 일치하게 작성해야 한다
1. 사용자가 데이터를 입력하는 페이지
2. 데이터를 받는 페이지
%>
<!DOCTYPE html>
2) form 태그에서 method를 사용하지 않거나 get방식으로 한 경우
가. test_call_get.jsp / test_get.jsp 페이지 만들기
* server.xml 파일 안으로 이동
<Connector connectionTimeout="20000" port="8085" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="EUC-KR"/>
* jsp 페이지에서 get방식으로 URL을 처리하는 방법
(1) a 태그를 사용했던 jsp 페이지에서 URLEncoder.encode()함수를 호출
- test_call_get.jsp
(2) test_get.jsp 페이지에서는 URLDecoder.decode() 함수를 호출
- test_call_get.jsp 페이지에서 호출받는 페이지
-> <a href="test_call.jsp?id=<%=%>&pwd=<%=%>"></a>
(3) server.xml 파일 안에서는 Connector 태그 안으로 이동
- 줄의 끝(오른쪽)에 URIEncoding 속성 이름과 값을 추가
-> URIEncoding="EUC-KR"
2. 서블릿
- 클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램
- Server + Applet의 합성어
- HttpServlet 클래스를 부모 클래스로 사용
- jsp 페이지에서 입력했던 명령어를 입력 가능
- jsp 페이지에서 입력했던 명령어를 입력 가능
ex) request.getParameter()
- 매개 변수로 request 참조 변수가 제공
- response 참조 변수도 제공
* jsp 페이지와 연동하는 서블릿 클래스 만들고 실행하기
1) jsp 페이지 만들기 : 이름은 test_input_name.jsp
- 사용자로부터 이름을 입력 받는 페이지
<body>
<form action="서블릿이름" method="get 또는 post">
이름 입력:
이름 입력:
<input type="text" name="name" required maxlegth="30" autofocus>
<br>
<input type="submit" value="이름전송">
</form>
</body>
* 서블릿이름 : "/서블릿이름"
2) 서블릿 클래스 만들기 :
이름 MyFirstServletClass
- 이클립스에서 파일의 종류를 서블릿으로 선택
-> java resources 디렉토리에 만들어야 한다
- 패키지 이름을 입력 해야 한다
-> mypkg( 사용할 이름 : 주로 소문자)
-> myjava.pkg
* www.naver.com -> com.naver.www
- URL Mapping 이름을 설정
-> 주소창에 사용할 이름
http://localhost:8085/프로젝트이름/이름
-> 이름 : test_call_get.jsp
-> ex) 서블릿 이름을 새로 정하기 : /input_name
* 서블릿 클래스에서 명령어를 입력하는 방법
1. 일반적인 방법
1) doPost() 함수 안으로 이동한 후 명령어 입력
2) doGet() 함수 안으로 이동한 후 명령어 입력
2. doPost() 함수 안에서 입력할 명령어와
doGet() 함수 안에서 입력할 명령어중에 같은 명령어(공통분모)를 뽑아내기(잘라내기)
-> 한번만 정의 -> 명령어의 재사용성을 높이는 방법
-> 함수 이름은 doCommonProc()
-> request, response 참조 변수를 매개 변수로 선언(추가)
-> throws 절을 작성 : 예외상황이 발생했을 때 준비하기
-> doPost() 또는 doGet() 함수의 머리 부분을 복사를 해 붙여넣은 뒤 이름만 수정
* 서블릿 클래스 안에 한글 데이터를 받아서 암호화 한 후 그 결과를 반환하는 함수를 만들기
1. import java.net.URLEncoder;
2. 이름을 하나 받는 매개변수를 갖는 함수를 새로 정의하기
public String encInputName() {
// 1) 함호화한 이름을 보관할 지역 변수를 선언 + 초기화
String resultName = "";
// 2) 예외상황을 준비하기 위한 try~catch블럭을 작성
try {
// 3) 매개변수로 전달 받은 이름이 있는지 판단하기
if(inputName == null || inputName.length() == 0){
// 4. 서블릿 클래스를 호출한 jsp 페이지로 강제로 이동하기 : sendRedirect() 함수를 호출
// response 내장 객체가 갖고 있는 함수
response.sendRedirect("test_input_name.jsp");
}else{
}else{
// 콘솔에 이름을 출력
System.out.println("전달 받은 이름은 "+inputName);
// URLEncoder 클래스가 갖고 있는 encode()함수를 호출하기
resultName = URLEncoder.encode(inputName, "EUC-KR");
}
} catch(Exception e){
System.out.println("예외상황 발생!!");
System.out.println("예외상황 발생!!");
System.out.println("내용은 "+e.getMessage());
}
return resultName;
}
}
3. 서블릿과 html form 연동 예제 작성
4. 웹 컨테이너 설정