본문 바로가기
JSP

4. get, post

by McNal 2022. 3. 22.

시작


사용자의 요청에 getpost두가지방법이 있다. 사용자가 요청을 보내는방법, 그 요청을 가지고 활용하는방법을 학습하려한다.

진행


결국에는 http://주소/를 입력한다는 것은 서버에서 index파일을 요청하겠다는 것이다.
물론 이전에 사용한 Annotation을 이용해 파일의 이름을 입력하지않고 주소로 호출할 수도 있다.

get


이 요청에는 추가인자를 추가할수있다. 이를 주소뒤에 Querystring으로 표현할 수 있다.

http://localhost/hello
http://localhost/hello?변수=값

물론 변수의 이름은 서버에서 미리 지정한 이름으로 입력을 해야 받을 수 있다.

주소뒤에 직접입력하는 경우는 없을 것이라 생각되고 버튼을 눌러서 요청하거나 하이퍼링크주소에 포함시킬 수 있다.

  <!DOCTYPE html>
  <html>
  <head>
  <meta charset="UTF-8">
  <title>Insert title here</title>
  </head>
  <body>
      <a href="/hello">변수지정안함</a>
      <a href="/hello?cnt=5">cnt변수5지정</a>

      <form action="hello">
          <div>
          <input type="text" name="cnt"/>
          <input type="submit" value="전송" />
          </div>
          <div>
          <textarea name="contents"></textarea>
          <input type="submit" value="전송" />
          </div>
      </form>
  </body>
  </html>

문서와 같이 임의의 변수 cnt에 대한 값을 하이퍼링크에 포함시켜 요청하거나
HTML의 사용자의 입력을 처리하기 위한 <form>태그의<submit>을 통해 요청할 수 있다.
<form>태그의 action요소에 원하는 매핑주소를 입력하면 submit되었을때 원하는 주소로 이동된다.

이를 받는 문서에서는 reqs.getparameter("변수명")으로 받을 수 있다.

        String cnt_ = reqs.getParameter("cnt");
        int cnt = 10;

        if(cnt_ != null && !cnt_.equals("")) {
            cnt = Integer.parseInt(cnt_);
        }

        for (int i = 0; i < cnt; i++) {
            out.println("안녕<br/>");
        }

        String content_ = reqs.getParameter("content");
        out.println("<br>내용확인");
        out.println(content_);

전달받은 cnt변수의 값만큼 for문을 반복하고 전달받은 contents를 표시하는 문서이다. 임시변수를 받을 때 대부분 변수명_으로 표기한다.

String형태로 전달받기 때문에 cnt라는 변수의 값을 숫자로 받고 싶기에 Integer.parseInt로 변환해주었고

기본값 10, 그리고 공백과 빈칸이 아닐때만 해당변수를 입력받는다는 문구를 추가해주었다.
이는 Query값이 전달이 안될경우 에러가나기 때문이다.

post


<form>태그의 method값을 지정해주지않으면 get의 방식을 이용한다. 하지만 이경우 URL에 모든 변수와 값들이 표시되고
여기에는 URL에는 표시불가능한 특수기호가 포함될 가능성이 있고 URL의 길이자체에 제한이 있기 때문에 바람직하지 않다.

http://localhost/hello?변수1=값1&변수2=값2...

전달하고 싶은 옵션이 여러가지라면 method="post"를 이용한다.

  <form action="hello"  method="post">
          <div>
          <input type="text" name="cnt"/>
          </div>
          <div>
          <textarea name="contents"></textarea>
          <input type="submit" value="전송" />
          </div>

  </form>

이경우 URL에 옵션이 따로 표시되지 않는다.

'JSP' 카테고리의 다른 글

3. Servlet작성  (0) 2022.03.21
2. 톰캣, 이클립스 설치  (0) 2022.03.21
1. 공부의 시작  (0) 2022.03.20