JSP POST에서 한글 깨짐 오류

이은지·2023년 11월 16일
0

오류모음

목록 보기
3/3

우선 form의 method="post"방식으로 데이터를 전송하고 있다

결론 : url-pattern이 원래는 "/"로 되어있는데 "/*"로 수정하여 해결

[web.xml]

  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  • "/" : 웹 애플리케이션의 루트 경로에 대한 URL만 매칭됩니다. 따라서 /somepage와 같은 형태의 URL은 매칭되지 않습니다.
  • "/*" : 모든 URL을 매칭합니다. 따라서 /somepage나 /subdirectory/somepage와 같은 모든 URL에 대해 매칭됩니다.

모든 URL에 필터가 적용되어야 하므로 /*로 바꿔야 정상동작했다
저렇게 하는방법 말고도 여러가지 방법이 있지만
각 컨트롤러에 디코딩, 인코딩을 모두 추가하는건 엄청난 노가다라고 선임님이 말해주셨다 (2번방법)

  1. server.xml파일에 인코딩 추가
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="EUC-KR"/>
  1. CodeCotroller.java에 request, response 추가하기
@RequestMapping(value = "/modifyProcess", method = RequestMethod.POST)
    public String codeModifyProcess(@ModelAttribute("codeVO") CodeVO codeVO, HttpServletRequest request, HttpServletResponse response, ModelMap model) throws Exception {
		
		String TAG = "[" + request.getRequestURI() + "] [codeModifyProcess] [" + request.getRemoteAddr() + "]";
		logger.debug(TAG + "START");
    	
		SessionInfo sessionInfo = (SessionInfo) request.getSession().getAttribute("classShareSession");
		model.addAttribute("sessionInfo", sessionInfo);
		
		request.setCharacterEncoding("EUC-KR");
		codeService.modifyCode(codeVO);		
		response.setCharacterEncoding("UTF-8");
    			
    	System.out.println("콘솔::  "+codeVO.getCode_Id_Nm());
        return "redirect:/mgmt/code/list";
    }

0개의 댓글