차근차근/JAVA JSP

request.setAttribute / request.getAttribute

예쁜꽃이피었으면 2014. 7. 26. 01:40

http://blog.daum.net/_blog/BlogTypeView.do?blogid=0K5ES&articleno=7866582&_bloghome_menu=recenttext

request.setAttribute와 request.getAttribute에 대해서

 

 

 

request.setAttribute() 와 request.getAttribute()


request.setParameter() 와 getParameter()를 이용하면 String의 값 밖엔 받을 수 없다. 
List를 받기 위해서는 setAttribute()와 getAttribute()를 써야 한다. 
이때 type이 Object 이기 때문에 반드시 형변환을 해줘야 한다.

 

혹시나 해서 문법도 쓴다.

 

action에서 객체를 request에 담을 때.

request.setAttribute("객체명", 객체);

 

이렇게 해서 jsp를 호출하면 jsp에서 "객체명"을 이용해서 객체를 받을 수 있다.

< %
Object x = request.getAttribute("객체명");
% >

 

Object 형으로 받는 다는 것. 핵심 포인트.


 

 

 

http://snix.tistory.com/266

 

 

http://jamocorporation.blogspot.kr/2014/05/javarequestsetattribute.html

 

 

http://imdsoho.tistory.com/289

게시판 스킨등 부득이한 동적 인클루딩이 발생 시,

속도를 위한 중복처리를 방지하기 위해 자신이 생성한 class 객체의 자료를 넘기고 싶을 때가 있을때,

request.getAttribute 를 그냥 사용하면 전달되지 않습니다.

 

그렇다고 정의된 <Object>타입으로 객체를 새로 생성하는 등 번거로운 작업을 할 필요도 없습니다.

 

java class파일에서 생성한 CTest 라는 클래스가 있고, 이를 a.jsp 에서

CTest a = new CTest(); 라고 정의하고 사용 후, 이 a 인스턴스를 <jsp:include page="b.jsp">로 넘기고 싶다면,

 

a.jsp 에는 그냥 생각한 대로 하시면 됩니다.

request.setAttribute("abc", a);

 

그런후, b.jsp에서는 객체를 새로 정의했겠죠? 여기선 인스턴스를 받아올 것이므로 새 인스턴스를 생성할 필요는 없습니다.(new CTest()가 불필요)

CTest b = (CTest)request.getAttribute("abc");

 

그냥 무심코 (CTest)란 강제타입지정을 빠뜨렸더니 안되더군요. 에러가 뜨는분들은 체크해보시길~ 물론 이는 <Object>나 벡터타입을 이용할때 꼭 주의해야 하는 사항입니다. 

반응형

'차근차근 > JAVA JSP' 카테고리의 다른 글

request.setcharacterencoding  (0) 2014.07.26
getInstance()  (0) 2014.07.26
자바/Java URLEncoder와 URLDecoder  (0) 2014.07.26
URLConnection  (0) 2014.07.26
Http 기초  (0) 2014.07.26