iknowahra / cspiEdu

CSPI OJT
0 stars 0 forks source link

2021.10.07 교육내용 정리_SG #16

Open seulgi9834 opened 2 years ago

seulgi9834 commented 2 years ago

HttpServletRequest 사용한 값 받기

form 태그 사용

<form method="get" action="form/saveGet">
    <p>
        input 태그<br> <input type="text" name="title">
    </p>
    <p>
        textarea 태그<br>
        <textarea rows="10" cols="100" name="content"></textarea>
    </p>
    <p>
        select 태그<br> <select name="viewYn">
            <option value="Y">공개</option>
            <option value="N">비공개</option>
        </select>
    </p>
    <input type="submit" value="전송버튼">
</form>

태그 속성

  • form: 입력 폼 정의시 사용

  • action: form 데이터가 전송되는 URL

  • method: 폼 데이터 제출시 사용할 HTTP 메소드(전송 방법) / get, post

  • name: form 이름

  • autocomplete: 자동 완성 기능


input 태그 속성

  • name: 데이터 이름
  • type: 입력 형식
    • text: 텍스트 입력
    • password: 비밀번호 입력
    • button: 버튼
    • submit: 서버로 데이터를 보내는 버튼
    • reset: form에 입력한 데이터 초기화 버튼
    • radio: 단일 선택
    • checkbock: 복수 선택
    • file: 파일 업로드


textarea 태그 속성

  • 여러줄의 텍스트 입력
  • name: 데이터 이름
  • rows: 줄의 수(높이)
  • cols: 너비


select 태그 속성

  • 선택을 위한 드롭박스
  • name: 데이터 이름
  • value: 전달할 값



model과 map 없이 받은 데이터 바로 확인(viewer.jsp)

<% String title=request.getParameter("title");
String content=request.getParameter("content");

out.print(title+" "+content);
%>


form 컨트롤러

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(value="form")
public class FormController {

    //form 페이지 호출
    //@return
    @RequestMapping(value = "", method = RequestMethod.GET)
    public String form() {
        return "form/form";
    }

    @RequestMapping(value = "saveGet", method = RequestMethod.GET)
    public String saveGet(HttpServletRequest request, Model model) {

    // HttpServletRequest 객체 안의 메소드를 이용해 데이터를 꺼냄
        String title = request.getParameter("title");
    String content = request.getParameter("content");
    String viewYn = request.getParameter("viewYn");

    System.out.println("제목:" + title);
    System.out.println("내용:" + content);
    System.out.println("공개여부:" + viewYn);

    Map<String, String> map = new HashMap<String,String>();
    map.put("title", title);
    map.put("content", content);
    map.put("viewYn", viewYn);

    model.addAttribute("map",map);

    if(viewYn.equals("N")) {
        return "redirect:https://naver.com";
    }

    return "form/viewer";
    }

}
  • getParameter(): 원하는 데이터를 꺼낼 때 사용, String으로 반환


Redirect

  • 파라미터가 사라짐
  • 새로운 요청을 수행
  • 오류페이지 및 회원가입, 글쓰기와 같이 시스템에 변화가 생기는 요청
  • 주로 사용
return "redirect:https://naver.com";

Forward

  • 요청 정보 유지
  • 글 목록 보기, 검색과 같은 변화가 없는 조회 요청
  • 같은 파라미터로 여러일을 해야하는 경우
  • 잘 안쓰임
return "forward:/form";


Model이나 HashMap을 통해 전달 받은 데이터 확인(viewer.jsp)

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:choose>
    <c:when test='${map.viewYn == "Y" }'>
    <h1>${map.title }</h1>
<p>
${map.content }
</p>
</c:when>
<c:otherwise>
<p> 비공개 글 입니다.</p>
</c:otherwise>
</c:choose>
iknowahra commented 2 years ago

오 슬기님이 추가로 알려주신 것들 덕분에 많이 알아갑니다. 감사합니다 :-)