404NotPound
139
2017-11-06 10:15:13
5
2606

[스프링] get방식 파라미터 한글 인코딩 질문이 있습니다.



<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
   <a href="#" onclick="test();">aHref</a><br>
</body>
<script type="text/javascript">
   function test() {
      var s = 'http://localhost:8080/spring/board/KRtestGet.do?testStr=';
      s=s+'한글';
      var name = encodeURI(s);
      alert( name );
      window.location.href=name;
 	  return false;
   }
</script>
</html>


	@RequestMapping(value = "/board/KRtestGet.do")
	public void KRtestGet(HttpServletRequest req) {
		String testStr = req.getParameter("testStr");
		System.out.println("jsp로 부터 받음 :"+testStr);
		String originalStr =testStr;//"%ED%95%9C%EA%B8%80";
		try {System.out.println((java.net.URLDecoder.decode(originalStr,"UTF-8")));}
		catch (UnsupportedEncodingException e) {e.printStackTrace();}
		}






11월 06, 2017 9:54:51 오전 org.apache.tomcat.util.digester.SetPropertiesRule begin
경고: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:spring' did not find a matching property.
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Server version:        Apache Tomcat/7.0.65
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Server built:          Oct 9 2015 08:36:58 UTC
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Server number:         7.0.65.0
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: OS Name:               Windows 7
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: OS Version:            6.1
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Architecture:          amd64
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Java Home:             C:\Program Files\Java\jdk1.7.0_79\jre
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: JVM Version:           1.7.0_79-b15
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: JVM Vendor:            Oracle Corporation
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: CATALINA_BASE:         C:\Users\home\Desktop\워크스페이스\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: CATALINA_HOME:         C:\Users\home\Desktop\tomcat-7.0.65
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Command line argument: -Dcatalina.base=C:\Users\home\Desktop\워크스페이스\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Command line argument: -Dcatalina.home=C:\Users\home\Desktop\tomcat-7.0.65
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Command line argument: -Dwtp.deploy=C:\Users\home\Desktop\워크스페이스\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Command line argument: -Djava.endorsed.dirs=C:\Users\home\Desktop\tomcat-7.0.65\endorsed
11월 06, 2017 9:54:51 오전 org.apache.catalina.startup.VersionLoggerListener log
정보: Command line argument: -Dfile.encoding=MS949
11월 06, 2017 9:54:51 오전 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
정보: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.7.0_79\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin/server;C:/Program Files/Java/jdk1.7.0_79/bin/../jre/bin;C:/Program Files/Java/jdk1.7.0_79/bin/../jre/lib/amd64;C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Program Files\Java\jdk1.7.0_79\bin;C:\Users\home\Desktop\eclipse_indgo;;.
11월 06, 2017 9:54:52 오전 org.apache.coyote.AbstractProtocol init
정보: Initializing ProtocolHandler ["http-bio-8080"]
11월 06, 2017 9:54:52 오전 org.apache.coyote.AbstractProtocol init
정보: Initializing ProtocolHandler ["ajp-bio-8009"]
11월 06, 2017 9:54:52 오전 org.apache.catalina.startup.Catalina load
정보: Initialization processed in 2752 ms
11월 06, 2017 9:54:52 오전 org.apache.catalina.core.StandardService startInternal
정보: Starting service Catalina
11월 06, 2017 9:54:52 오전 org.apache.catalina.core.StandardEngine startInternal
정보: Starting Servlet Engine: Apache Tomcat/7.0.65
11월 06, 2017 9:54:54 오전 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
정보: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [269] milliseconds.
11월 06, 2017 9:55:00 오전 org.apache.catalina.startup.TldConfig execute
정보: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
11월 06, 2017 9:55:00 오전 org.apache.catalina.core.ApplicationContext log
정보: No Spring WebApplicationInitializer types detected on classpath
11월 06, 2017 9:55:00 오전 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
11월 06, 2017 9:55:04 오전 org.apache.coyote.AbstractProtocol start
정보: Starting ProtocolHandler ["http-bio-8080"]
11월 06, 2017 9:55:04 오전 org.apache.coyote.AbstractProtocol start
정보: Starting ProtocolHandler ["ajp-bio-8009"]
11월 06, 2017 9:55:04 오전 org.apache.catalina.startup.Catalina start
정보: Server startup in 12313 ms
11월 06, 2017 9:57:03 오전 org.apache.catalina.core.ApplicationContext log
정보: Initializing Spring FrameworkServlet 'dispatcher'
jsp로 부터 받음 :????¸?
????¸?


get방식으로 파라미터를 전달 할 때 한글이 먹히지 않아서

jsp단에서 인코딩 후 컨트롤러에서 디코딩해서 파라미터를 전달 하려고 합니다.

톰캣은 7.0을 사용중이고 브라우저는 ie11을 쓰고 있습니다.

일단 url로 인코딩된 한글을 보내기는 했는데 컨트롤러 에서 인코딩된 값을 받지 못합니다.

집에서 톰캣9.0과 크롬으로 할때는 잘 됬었는데 어떤점이 잘못된걸까요?


0
  • 답변 5

  • theFluker
    222
    2017-11-06 10:17:21

    디코드 말고  filter를 등록하는건 어떤가요 charsetEncodingFilter를 Spring에서 제공합니다

  • 드림팀팝
    491
    2017-11-06 10:17:54

    톰캣 sever.xml 에

    URIEncoding="UTF-8" 되어있는지 확인해보세요~

  • 404NotPound
    139
    2017-11-06 11:07:31

    server.xml에 설정 넣어도 안되길래

    크롬에서 테스트 후 (크롬에서도 안됨)

    다시 익스플로러로 브라우저 바꾸고 서버도 지웠다가 넣으니깐 한글이 먹히네요

    처음 server.xml 설정 바꾼 후 서버 지웠다가 넣었던 직후는 왜 안되었던건지..

  • 드림팀팝
    491
    2017-11-06 11:21:31

    서버 클린이 안됬던거 아닐까요~? ㅎㅎ

    해결되셨다니 다행이네요

  • 404NotPound
    139
    2017-11-06 11:38:25

      <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.xml에 등록된 이 필터가 그냥 막연히 어딘가에서 인코딩만 해주는줄 알았는데

    req.getParameter("testStr");

    부분에서 디코딩 역할도 같이 해주네요.. 처음알았습니다


  • 로그인을 하시면 답변을 등록할 수 있습니다.