java, spring

[Spring] 등록 입력 페이지와 등록 처리

isaac.kim 2021. 7. 10. 11:05
728x90
반응형

[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에서 등록 페이지 작성과 등록 처리하는 과정 그리고 한글 필터를 적용하는 방법을 알아보았습니다. 도움이 되셨다면 좋아요 구독! 눌러주세요!

728x90
반응형