jsp와 suvlet으로 emaillist 와 guestbook을 만들었습니다. 처음엔 model 1 방식으로 만들었고 드디어 model 2를 시작했습니다.
처음으로 controller를 만났는데 아직은 컨트롤러가 없는 1 방식에 익숙해서 적응이 필요합니다.
오늘은 request.setAttribute와 request.getAttribute를 많이 활용했기 때문에
setAttribute()와 getAttribute()를 정리해두려고 합니다.
이전 포스팅에서 정리했던 request.getParameter()는 파라미터의 값들을 String 타입으로 보내고 받는데,
더 많은 정보들을 주고 받기 위해서는 정보들을 Object로 만들어 담을 수 있습니다.
이 때 사용되는 것이 와 request.getAttribute()와 request.getAttribute() 입니다.
1. 동일한 웹 애플리케이션 안에 있는 모든 페이지에서 정보를 공유하기 위해서 ServletContext 객체를 사용합니다.
2. ServletContext 객체에 데이터를 동록하는 메소드 setAttribute()
3. 추출하는 메소드 getAttribute()
구문
void setAttribute(String name, Object value)
Object getAttribute(String name)
setAttribute(String name, Object Value)
- 첫번째 인자 Stiring name : 등록하는 데이터의 이름 지정, 추출할 때 등록한 이름으로 검색하여 추출함.
- 두번째 인자 Object value : 실제로 공유하기 위해서 등록하는 데이터, Object로 선언되었으므로 어떠한 자바 객체도 공유 가능
getAttribute(String name)
- 인자 String name : 찾으려는 데이터의 등록된 이름.
- 주의 사항 : 반환하는 데이터의 타입 주의
- setAttribute()메소드로 어떠한 자바 객체도 등록할 수 있기 때문에 getAttirbute() 메소드의 반환 타입은 자바 객체의 최상위 타입인 Object로 반환됨.
- 따라서 getAttribute()로 추출한 데이터는 항상 원래 데이터 타입으로 캐스팅 해서 사용해야함
사용 예시
사실 오늘 만든 코드에서는 no라는 객체를 만들어서 보내고 받았는데, 사실 객체 안에 들어간 것이 단순히 데이터의 숫자(no)였어서 왜 객체에 담았는지는 잘 모르겠습니다...
나중에 더 많은 정보를 담아야할 때 더 유용하게 사용할 수 있겠죠 !
if("deleteform".equals(actionName)) {
System.out.println("actionName => " + actionName);
request.setCharacterEncoding("utf-8");
Object no = request.getParameter("no");
request.setAttribute("no", no);
RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/guestbook2/deleteform.jsp");
rd.forward(request, response);
}
2024.01.16 - [Java] - request.getParameter() 와 Integer.parseInt()
request.getParameter() 와 Integer.parseInt()
request.getParameter() 메서드의 결과는 항상 String 입니다. 따라서 int 타입의 변수로 선언하기 위해서는 Integer.parseInt() 메서드로 감싸주어야합니다. int no = Integer.parseInt(request.getParameter("no")); 다른 jsp
dynamoj.tistory.com
'Java' 카테고리의 다른 글
[Java]request.getParameter() 와 Integer.parseInt() (0) | 2024.01.16 |
---|---|
[JSP] 지시자(지시어) - page directive (0) | 2024.01.16 |
[Java] For-Each Loop(향상된 for문) 개념 & 사용 사례 (0) | 2024.01.12 |