[Spring] 등록 입력 페이지와 등록 처리
광고 한 번 클릭은 개발자(저)에게 매우 큰 도움이 됩니다!!
게시물의 등록 작업은 POST 방식으로 처리하지만, 화면에서 입력을 받아야 하므로 GET 방식으로 입력 페이지를 볼 수 있도록 Controller에 메서드를 추가합니다.
com.project.controller 패키지 아래 BoardController 클래스에 메서드를 추가합니다.
등록을 위한 입력화면으로 포워딩 시킬 메서드를 만듭니다. Controller는 "/board/register" url의 get방식의 요청이 오면 해당 메서드를 실행하고 register.jsp 파일을 보여주게 됩니다.
register( )는 입력 페이지를 보여주는 역할만을 하기 때문에 별도의 처리가 필요하지 않습니다.
register.jsp 페이지에서는 <form> 태그를 이용해서 필요한 데이터를 전송합니다. <input>이나 <textarea> 태그의 name 속성은 BoardVO 클래스의 변수와 일치시킵니다.
먼저 BoardVO에 데이터를 담아 보낼 변수는 title, content, writer 입니다. 그 외에는 자동으로 등록되도록 처리할 것입니다.
BoardVO 클래스
register.jsp의 form태그 부분 input 태그의 name을 VO의 변수와 일치시킵니다.
실제 데이터의 등록을 처리하기 위해 BoardController의 POST 방식으로 동작하는 register( )가 존재합니다. PostMapping으로 url이 "/board/register" 인 요청에 대해 처리하는 메서드입니다.
이 메서드에서는 데이터의 등록처리를 한 후, 페이지를 redirect 시키는 방식을 이용하므로, 게시물의 등록 후에는 다시 '/board/list'로 이동하게 됩니다.
입력 후 등록 테스트를 해야 합니다.
한글이 깨지네요.
한글 문제와 UTF-8 필터 처리
데이터를 등록했으나 등록된 데이터가 깨진다면 어느 영역에서 데이터가 깨지는 지 확인해봐야 합니다. 먼저 데이터가 제대로 보내지고 있는지 웹 브라우저의 개발자도구에서 network영역의 Form Data의 데이터를 확인합니다.
우선 데이터는 정상적으로 보내지고 있는 게 확인이 되니, 스프링 서버 혹은 데이터베이스 문제라는 걸 의심해볼 수 있습니다. 저의 경우 이클립스 로그를 확인해보니 서버에서 받은 데이터가 깨져서 들어가고 있어서, 스프링 MVC 에서 한글을 처리하는 필터를 등록했습니다.
web.xml에 아래와 같이 필터를 추가합니다.
소스코드
<filter>
<filter-name>encoding</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>encoding</filter-name>
<servlet-name>appServlet</servlet-name>
</filter-mapping>
Java 설정의 경우
web.xml을 대신하는 WebConfig 클래스에서는 필터를 getServletFilters( )를 재정의해서 처리할 수 있습니다.
소스코드
// 웹에서 등록될 때 한글 utf-8 허용 필터
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
//return super.getServletFilters();
return new Filter[] { characterEncodingFilter };
}
필터 등록 후에 다시 등록해서 데이터를 확인합니다.
한글을 정상적으로 처리하여 등록한 것을 확인할 수 있습니다.
이번 글에서는 Spring에서 등록 페이지 작성과 등록 처리하는 과정 그리고 한글 필터를 적용하는 방법을 알아보았습니다. 도움이 되셨다면 좋아요♥ 구독! 눌러주세요!
'java, spring' 카테고리의 다른 글
Spring 데이터 등록 후의 피드백 (addFlashAttribute( ), HttpSession) (0) | 2021.07.10 |
---|---|
[Spring] 한글 등록을 위한 필터 설정 (Spring MVC 한글 필터 설정) (0) | 2021.07.10 |
JSTL forEach문법, <c:forEach items="${list}" var="board"> (0) | 2021.07.06 |
[Spring] JSTL로 list item 출력하기 / table 전체 목록 출력하기 / <c:forEach items="${list}" var="board"> (0) | 2021.07.06 |
[Spring] JSP 파일에 JSTL 태그를 사용하기 위한 태그 라이브러리 추가하기 (0) | 2021.07.06 |