• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (322)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (11)
      • 리눅스 (2)
      • 닷넷 (0)
      • 자바 (67)
        • spring (7)
      • js (35)
      • 오라클 (40)
        • PLSQL (4)
      • cs (7)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • getAttribute(), getParameter(), VO
        2024년 09월 08일
        • chantleman
        • 작성자
        • 2024.09.08.:00

         

         

         

        html에서 정의한 데이터를 java로 가져올 때  getParameter()메소드를 사용하여 request객체에 담아 가져옵니다.
        이때 파라미터는 html에서 name 속성으로 정의한 값으로 가져와야합니다.

         

         

        GET으로 받을 때

         

        하지만!

        a 태그 링크로 movie no을 요청할 때 movie_no로 설정해서 보냈기 때문에

        받을 때도 movie_no으로 getParameter해야합니다.

         

         

         

         

         


        POST로 받을 때 

         
        ↓ 아래 코드에서도 input의 name속성을 board_no, title, content로 해줬기 때문에 

         
         
         
         
        ↓ java에서도 board_no, title, content로 getParameter를 해야합니다.
         

         
         
         
        참고로 getParameter는 String으로 반환하기 때문에 int 변수에 담을 경우, int로 형변환을 해줘야합니다.
         
         
         
         
         
        getParameter가 html의 name속성에서 지정한 값으로 데이터를 가져왔다면,
        getAttribute는 setAttribute를 통해 지정된 값으로 데이터를 가져옵니다.
        또한 값은 Object 타입으로 반환되며, setAttribute를 해주지 않으면 null값을 반환하게 됩니다.
         
         
         


         
         

        html


        ↑ 위의 html에서 name 속성의 board_no을 ①
         
        getParameter로 가져와 board_no 변수에 넣어줬습니다. ② ↓
         

        java

         
        board_no을 boardService의 boardDetail 메소드, 즉 id가 boardDetail인 DB 쿼리문에 board_no을  파라미터로 전달해 반환된 값을 board라는 vo에 담았습니다. ③ 
        그러고난 후 setAttribute 메소드를 통해 board객체를 board라는 key로 req객체에 담아놓으면 ④ 

        db

         
         

        html

         
        html에서 getAttribute를 통해 board라는 key로 접근해 값을 board 객체에 다시 담아줍니다.
         
         

         
        vo에서 getter, setter 설정해두었기 때문에 
        getWriter(), getCnt(), ...을 사용하여 값을 가져올 수 있습니다. ⑤
         
         


         
        정리하자면 getParameter()는 클라이언트에서 서버로 전달된 요청 파라미터를 가져오는데 사용되며, 

        getAttribute()는 서버 내에서 데이터를 저장하고 공유할 때 사용됩니다.

         

         

        getParameter()는 HTTP 요청에서 파라미터 값을 가져올 때 사용하고

        주로 서블릿에서 HTTP 요청 객체(HttpServletRequest)를 통해 사용됩니다.

        주로 Get 또는 POST 요청의 쿼리 스트링 또는 폼 데이터에서 값을 추출합니다.

         

        getAttribute()는 서블릿, JSP 또는 필터와 같은 서버 사이드 컴포넌트 간에 데이터를 공유하거나 저장할 때 사용됩니다.

        주로 서블릿, JSP 또는 필터에서 HttpServletRequest, HttpSession, ServletContext 객체를 통해 사용됩니다.

        서버 측에서 setAttribute() 메소드를 통해 설정한 데이터를 가져올 때 사용되고, 데이터는 서블릿, JSP, 필터 사이에서 공유됩니다.

         

         

         

        https://sgcomputer.tistory.com/239

         

        서블릿 데이터 저장소 - request, session, ServletContext

        서블릿을 이용하다보면 서블릿과 서블릿 사이 혹은 다른 리소스로 보내야할 때가 있다. 그럴때 이용할 수 있는 서블릿에서 제공하는 내장 객체가 있다. request, session, servletContext가 바로 그것이

        sgcomputer.tistory.com

         


         

         

        <%@ page language="java" contentType="text/html; charset=UTF-8"
        	pageEncoding="UTF-8"%>
        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
        <!DOCTYPE html>
        <html>
        <head>
        <meta charset="UTF-8">
        <title>Insert title here</title>
        </head>
        <body>
        	<%
                request.setCharacterEncoding("UTF-8");
                String id = request.getParameter("id") == null ? "" : request.getParameter("id");
                String passwd = request.getParameter("passwd") == null ? "" : request.getParameter("passwd");
                String name = request.getParameter("name") == null ? "" : request.getParameter("name");
                String phone1 = request.getParameter("phone1") == null ? "" : request.getParameter("phone1");
                String phone2 = request.getParameter("phone2") == null ? "" : request.getParameter("phone2");
                String phone3 = request.getParameter("phone3") == null ? "" : request.getParameter("phone3");
                String[] hobbies = request.getParameterValues("hobby");
                request.setAttribute("hobbies", hobbies);
                String comment = request.getParameter("comment") == null ? "" : request.getParameter("comment");
        	%>
        
        	<p>아이디:<%=id%></p>
        	<p>비번:<%=passwd%></p>
        	<p>이름:<%=name%></p>
        	<p>번호:<%=phone1%>-<%=phone2%>-<%=phone3%></p>
        	<p>
        		취미:
        		<c:if test="${not empty hobbies}">
        			<c:forEach var="hobby" items="${hobbies }">
        				${hobby}
        			</c:forEach>
        		</c:if>
        	</p>
        	<p>가입인사:<%=comment %></p>
        </body>
        </html>

         

         

        java영역 (<%%>) 의 hobbies 객체를 jstl영역(<c:forEach>)의 hobbies 변수로 할당해야합니당
        java와 jstl의 hobbies를 매핑하는 방법에는 두가지 방법이 있습니당

         

        하나는 위와같이 java영역에서 request.setAttribute로 매핑하던지,

        아니면 아래처럼 jstl 영역에서 c:set을 이용하여 매핑하는 방법이 있습니다.

         

        <c:set var="hobbies" value="<%=hobbies%>" />

         

         

        value에 있는 hobbies는 java에 있는 hobbies.

        var에 있는 hobbies는 jstl의 for문에 있는 hobbies.

         

        728x90

        '자바' 카테고리의 다른 글

        c태그  (2) 2024.09.12
        where 1=1  (1) 2024.09.08
        servlet filter  (0) 2024.09.04
        쿠키, 세션  (0) 2024.09.04
        웹모듈 배포  (0) 2024.09.02
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바