자바

getAttribute(), getParameter(), VO

chantleman 2024. 9. 8. 02:00

GET으로 받을 때

 

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

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

 

 

 

 


POST로 받을 때 

 


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

 

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

c태그  (0) 2024.09.12
where 1=1  (1) 2024.09.08
servlet filter  (0) 2024.09.04
쿠키, 세션  (0) 2024.09.04
웹모듈 배포  (0) 2024.09.02