잡동사니/휴지통

2일차

보람줄 2018. 11. 18. 17:32

목차
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>
              <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 페이지에서 입력했던 명령어를 입력 가능
        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{
                            // 콘솔에 이름을 출력
                            System.out.println("전달 받은 이름은 "+inputName);
                            // URLEncoder 클래스가 갖고 있는 encode()함수를  호출하기
                            resultName = URLEncoder.encode(inputName, "EUC-KR");
                        }
                    } catch(Exception e){
                        System.out.println("예외상황 발생!!");
                        System.out.println("내용은 "+e.getMessage());
                    }

                    return resultName;
            } 


3. 서블릿과 html form 연동 예제 작성
4. 웹 컨테이너 설정

'잡동사니 > 휴지통' 카테고리의 다른 글

개인 자료실  (0) 2019.04.03
3일  (0) 2018.11.24
수정  (0) 2018.11.17