2014년 5월 1일 목요일

[Java]request.setAttribute와 request.getAttribute

request.setParameter() 와 getParameter()를 이용하면 String의 값 밖엔 받을 수 없다.
List를 받기 위해서는 setAttribute()와 getAttribute()를 써야 한다.
이때 type이 Object 이기 때문에 반드시 형변환을 해줘야 한다.
다음 action.서블릿 코드
  1. package blog.controller;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.RequestDispatcher;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import javax.servlet.http.HttpSession;
  12.  
  13. import blog.model.Member;
  14. import blog.model.MemberDao;
  15.  
  16. @WebServlet("/MyPageAction.blog")
  17. public class MyPageAction extends HttpServlet {
  18.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  19.         HttpSession session = request.getSession();
  20.         Member memberInfo = (Member)session.getAttribute("login_info");
  21.         if(memberInfo != null){
  22.             MemberDao dao = new MemberDao();
  23.             Member member = dao.getMemberById(memberInfo.getId());
  24.             //jsp에서 member값을 받게끔 String name을 "member"로 둠
  25.             request.setAttribute("member", member);
  26.             RequestDispatcher rd = request.getRequestDispatcher("/mypage.jsp");
  27.             rd.forward(request, response);
  28.         }else{
  29.             response.sendRedirect("/index.jsp");
  30.         }
  31.     }
  32. }
다음 jsp 코드
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ page import = "blog.model.Member" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. <style>
  9.     table, tr, td {
  10.         border: solid 1px #000000;
  11.         border-color: aqua;
  12.         border-collapse: collapse;
  13.     }
  14.     table{
  15.         width: 80%;
  16.     }
  17. </style>
  18.  
  19. </head>
  20. <body>
  21. <%
  22.     Member member = (Member)request.getAttribute("member");
  23.     String msg = (String)session.getAttribute("msg");
  24.     if(msg != null){
  25. %>
  26.     <div><%=msg%></div>
  27. <%     
  28.         session.removeAttribute("msg");
  29.     }
  30. %>
  31. <h1>My Page</h1>
  32. <table>
  33.     <tr>
  34.         <td>id</td>
  35.         <td><%=member.getId()%></td>
  36.     </tr>
  37.     <tr>
  38.         <td>pw</td>
  39.         <td><%=member.getPw()%>*****</td>
  40.     </tr>
  41.     <tr>
  42.         <td>name</td>
  43.         <td><%=member.getName()%></td>
  44.     </tr>
  45.     <tr>
  46.         <td>email</td>
  47.         <td><%=member.getEmail()%></td>
  48.     </tr>
  49. </table>
  50. <a href="/UpdateAction.blog">[정보수정]</a>
  51. <a href="/del_form.jsp">[회원탈퇴]</a>
  52. </body>
  53. </html>
action에서 객체를 request에 담을 때.
request.setAttribute("member", member);

이렇게 해서 jsp를 호출하면 jsp에서 "객체명"을 이용해서 객체를 받을 수 있다.
< %
Member member = (member)request.getAttribute("member");
% >

Object 형으로 받는 다는 것이 중요함

댓글 없음:

댓글 쓰기