• Web_ project 진행_7 : JSP을 이용하여 원하는 정보 전달하기

    2021. 11. 17.

    by. KAEY

    *해당 프로젝트 기술은 메아리 프로젝트에서 제가 담당했었던 기능 분야 쪽만 기술 합니다!! 이외엔 팀원들과의 합작입니다.


    시나리오 구성

     사용자가 커머스 화면으로 진입하여, 채팅 버튼을 눌렀을 때, 로그인된 사용자의 아이디해당 게시글의 번호를 채팅방 번호로 설정하여 채팅 기록을 관리할 수 있도록 설정한다.

     

     왜? 게시글의 번호를 채팅방 번호로 설정하였을까?

     >> 해당 프로젝트에서 아직 SNS 에서의 DM 시스템을 구현하지 않았기 때문에 채팅방 번호가 겹쳐질 에러 사항을 염두할 필요가 없었기 때문.

     

     

     

    해당 JSP에선 스프링 채팅 시스템을 구현하기 위해서, 필요힌 유저의 이름을 담을 객체 username와 채팅의 시스템 방을 구현하는 객체 roomNum에 원하는 정보를 담고 옮길 필요가 있다.

     

     

     

    따라서 앞서 커머스 화면에서의 채팅 버튼을 누를 때, 보내지는 href 주소는 다음과 같아야 한다.

    <a onclick="location.href='/chat/test?username=${username}&roomNum=${roomNum}'">

     

     

     

     

    그 후 사용자가 페이지를 이동했을 때, 이 데이터 값을 다루어줄 controller를 설정한다.

     

    @RequestMapping(value = "/chat/test", method =  RequestMethod.GET)

     사용자가 /chat/test로 진입하는 경우 이를 컨트롤 해주는 부분을 작성한다.

     

     

    private ModelAndView chat(@RequestParam(value= "username", required=false) String username,
                                         @RequestParam(value= "roomNum", required=false) String roomNum,
                                                   HttpServletRequest request, 
                                                   HttpServletResponse response) throws Exception {

     

     앞서 jsp에서 채팅 버튼을 눌러서 사용자를 이동할 때, param에 username, roomNum을 담았으므로, 이 값들을 선언하고 담을 수 있도록 한다.

     

          String viewName = (String)request.getAttribute("viewName");
          System.out.println(viewName);

          ModelAndView mav = new ModelAndView();
          mav.addObject("username",username);
          mav.addObject("roomNum",roomNum);
          mav.setViewName(viewName);
          return mav;

     

    그 후 ModelAndView를 mav로 생성하고, 앞서 전달해놓은 값들을 mav에 추가하여 chat/test에서 사용할 수 있게 해준다.

     

     

    @RequestMapping(value = "/chat/test", method =  RequestMethod.GET)
    	   private ModelAndView chat(@RequestParam(value= "username", required=false) String username,
    	                       @RequestParam(value= "roomNum", required=false) String roomNum,
    	                         HttpServletRequest request, 
    	                         HttpServletResponse response) throws Exception {
    
    	      String viewName = (String)request.getAttribute("viewName");
    	      System.out.println(viewName);
    	      ModelAndView mav = new ModelAndView();
    	      mav.addObject("username",username);
    	      mav.addObject("roomNum",roomNum);
    	      mav.setViewName(viewName);
    	      return mav;
    	   }

    코드 전문은 위와 같다.

     

     

     

       <definition name="/chat/test" extends="baseLayout">
          <put-attribute name="title" value="테스트" />
          <put-attribute name="body" value="/WEB-INF/views/chat/chat.jsp" />
       </definition>

    그 후 chat/test에 해당하는 jsp 파일 역시 사용자에게 출력하여야 하므로, 해당 프로젝트에서 사용한 tiles을 작성해서 매핑해놓는다.

     

     

     

    그 후, chat/test jsp에 

    alert(username, roomNum);

    을 작성하면 정상적으로 값들을 옮겨져 온 것을 확인이 가능하다.

     

     


    댓글 (비로그인 댓글 허용하지 않습니다.)