* 요청 파라미터

   - 클라이언트가 CGI(서블릿) 으로 전송하는 데이터
   - CGI가 일처리를 위해 클라이언트로 부터 입력받아야 하는 데이터
   - HTML의 form 태그나 QueryString을 이용해 전송한다.
   - name=value 형태로 전송된다. 여러개 일때는 & 로 묶어 준다.

 

ex :  
기본 url로 요청 파라미터 보내기 : <a href="url?name=a&age=20>요청</a>

* HTML 입력 관련 태그들

- form 태그
   - 입력 태그들을 묶어주는 태그
   - 속성
       - action : 요청할 url.- 요청파라미터를 전송할 CGI의 url 지정
       - method : 요청 방식(기본 : GET)

- 입력 태그 : <select>, <textarea>, <input>
- 기본 속성
   - name : 전송할 값에 붙일 name값.


- <select>태그
   - 목록 리스트중 선택 하도록 하는 태그
   - 속성 : multiple  : 다중 선택
   - 하위 태그
        - <option> : 선택할 item 등록

- <textarea>
   - 여러 줄 입력 폼
   - 속성
      - cols : 열 수
      - rows : 행 수

Posted by 조은성
,
* javax.servlet.http.HttpServletRequest

- 클라이언트의 요청과 관련된 정보와 동작을 가지고 있는 객체
- Web Container가 생성하여 service()의 인수로 넘겨준다.
- ServletRequest의 하위
- 주요 기능
    - 요청 파라미터 객체 조회
    - HttpSession 객체 조회
    - request scope 상의 component간의 데이터 공유 지원
   

* javax.servlet.http.HttpServletResponse

- 응답할 Client에 대한 정보와 동작을 가지고 있는 객체
- Web Container가 생성하여 service()의 인수로 넘겨 준다.
- ServletResponse의 하위
- 주요 기능
    - 응답 Header 정보 설정(Content Type 설정)
    - 응답 Stream 조회
    - Redirect 방식으로 수행 넘기기

 

Posted by 조은성
,

* CounterServlet File로 저장 하고 불러오기[실습]

[문제] 방문자수(카운터수)를 파일에 저장해서 방문자수 유지하기

 

 

 


package servlet.lifecycle;

 
import java.io.DataInputStream;
import java.io.DataOutputStream;
 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
 
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CounterServlet extends HttpServlet{
 //변수 저장하는 방법(변수, 파일, DB 세가지 방법이 있다.)
 private int visitCount;
 //카운트 한 값을 저장 시킬 공간
 private String counterFile = "F:\\apache-tomcat-6.0.35\\counter.dat";
 //생성자( 객체 생성)
 public CounterServlet(){
  
 }
 //객체 생성 직후 실행(count값 read 한 다음에 visitCount로 넣기)
 public void init(){
  DataInputStream dataInputStream = null;
  try {
   dataInputStream = new DataInputStream(new FileInputStream(counterFile));
   visitCount = dataInputStream.readInt();
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally{
   if(dataInputStream!=null){
    try {
     dataInputStream.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
  
 }
 //객체 소멸 직전 실행(visitCount 값을 파일로 write)
 public void destroy(){
  DataOutputStream dataOutputStream = null;
  try {
   dataOutputStream = new DataOutputStream(new FileOutputStream(counterFile));
   dataOutputStream.writeInt(visitCount);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  } finally{
   if( dataOutputStream!=null){
    try {
     dataOutputStream.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
 //service() -> doGet() : 클라이언트 요청이 들어올때 마다 호출
 public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();
  out.println("<html><head><title>카운터</title></head>");
  out.println("<body>");
  visitCount++;//카운터의 값을 1증가
  out.println("당신은 "+visitCount+" 번째 방문자 입니다.");
  out.println("</body></html>");
 }
}

 * 결과

 

 

 

Posted by 조은성
,