본문 바로가기
  • 실행력이 모든걸 결정한다
Spring Series/Spring Framework

[Spring] 게시판 설계 준비과정

by 김코더 김주역 2021. 1. 7.
반응형

[JSP Servlet] 카테고리에서는 Spring Framework 없이 Servlet(java), jsp(view) 파일로 게시판을 어떻게 구축할지 소개했다.

해당 포스팅을 링크로 첨부해두었다.

kimcoder.tistory.com/223

 

[JSP Servlet] 게시판 설계 준비과정

1. 구성 요소 MVC MODEL 2, FrontController - Command 패턴을 이용한다. ※ MVC MODEL 2 설명 - 2. MVC 패턴의 종류 - 2) 모델2 kimcoder.tistory.com/188 Model, View(JSP), Controller(Servlet) Model은 데이터..

kimcoder.tistory.com

 

이번 포스팅에서는 "[JSP Servlet] 게시판 설계 준비과정" 포스팅에 설명했던 과정들을, 그대로 Spring으로 설계 해볼 것이다. 중복 내용은 생략할 것이므로 위 포스팅은 필수로 읽는 것을 권장한다.

 

1. Spring 프로젝트 한글 처리

 

1) web.xml에서 filter, filter-mapping 컴포넌트를 web-app안에 다음과 같이 추가한다.

 

<web-app ...>
  ...    
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

 

2) Spring 프로젝트 우클릭 -> Properties -> Resource에서 Text file encoding을 다음과 같이 설정한다.

 

3) View를 담당할 jsp 파일의 상단에도 다음과 같이 작성한다. 본인의 프로젝트에서 charset 속성을 추가하면 에러가 나서 생략했는데 정상적으로 한글처리가 이루어졌다.

 

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>

 

 

2. FrontController 기능

Spring에서는 @Controller, @RequestMapping 어노테이션으로 컨트롤러 클래스를 구현하면 된다.

데이터 전달은 이 4가지 방법중 하나를 이용하면 되고

kimcoder.tistory.com/237

 

[Spring] form 데이터 처리 방식 4가지 소개

클라이언트가 view 화면에서 태그로 데이터를 보내왔다고 하자. 그럼 이 데이터들을 Spring 컨트롤러에서 받아서 처리하면 되는데, 몇 가지 처리 방법에 대해 소개한다. 예시 소스코드에서 ... 부분

kimcoder.tistory.com

servlet-context.xml 파일을 특별히 건들이지 않았다면, 컨트롤러 메소드의 반환 값은 문자열인 중간 주소 값이 되어야 한다.

 

 

3. Model 객체를 Map으로 변환하는 기법

 

Spring의 Controller에서는 Model 객체를 이용하여 다음 페이지에 데이터를 전달할 수 있고, Model 객체는 속성명, 속성값 쌍들로 이루어져 있다는 사실을 배웠을 것이다.

유사하게 자바 콜렉션 중에서도 key, value쌍을 가지는 Map이라는 것이 있고, 친절하게도 Model 객체는 자신을 Map으로 변환할 수 있는 asMap() 메소드를 제공한다.

사용법은 아래의 예제를 통해 알아보자.

 

Controller에서 HttpServletRequest객체(request)로 client의 form 데이터를 받는 방식을 이용한다고 가정하자.

Controller에서 특정 Command로 이 request를 넘겨야 하는데, Model 객체에 request를 담아서 Model 객체를 넘기는 방법이 있다.

 

<Controller 메소드>

model.addAttribute("request",request);
command = new ACommand();
command.execute(model);
return "중간 경로";

 

<Command의 execute메소드>

Map<String, Object> map = model.asMap();
HttpServletRequest request = (HttpServletRequest) map.get("request");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
Dao dao = new Dao();
Dto dto = dao.method(id, pw);
model.addAttribute("user", dto);

 

 

 

 

반응형

댓글