[JSP Servlet] 카테고리에서는 Spring Framework 없이 Servlet(java), jsp(view) 파일로 게시판을 어떻게 구축할지 소개했다.
해당 포스팅을 링크로 첨부해두었다.
이번 포스팅에서는 "[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가지 방법중 하나를 이용하면 되고
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);
'Spring Series > Spring Framework' 카테고리의 다른 글
[Spring] JDBC 트랜잭션 (0) | 2021.01.14 |
---|---|
[Spring] JdbcTemplate (0) | 2021.01.11 |
[Spring] Validator로 form 데이터 검증하기 (0) | 2021.01.06 |
[Spring] Controller에서 redirect하기 (0) | 2021.01.05 |
[Spring] form 데이터 처리 방식 4가지 소개 (0) | 2021.01.04 |
댓글