2013-01-21 4 views
1

최근 Tomcat 7.0 서버를 사용하여 몇 가지 HTTP 서비스를 작성했습니다. 아래 코드는 내 서비스를 테스트하는 데 사용 된 html 파일입니다.HTTP 매개 변수 인코딩

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Insert title here</title> 
</head> 
<body>    
       <form id="fm" method="post" action="http://localhost:8080 
/DataService/ProductData?category=Ser + bø&location=Herlev##Vejle"> 
        <input type="submit" value="Submit"> 
       </form> 
</body> 
</html> 

제 문제는 범주 매개 변수 "Ser + bø"에 관한 것입니다. 서버 쪽에서는 공백 대신 "+"공백 3 개를 사용하여 "Ser bø"로 읽습니다. 내가 아는 한 문제는 인코딩으로 무언가를 할 가능성이 높습니다. 요청에 대해 UTF-8을 사용하고 있습니다. 또한 UTF-8을 사용하도록 Tomcat 서버의 구성을 변경했습니다. 내가 뭘 잘못하고 있는지에 대한 어떤 생각?

답변

0

매개 변수를 백 엔드에 전달하기 위해 양식 작업 URL을 수정하는 것은 양식을 처리하는 올바른 방법이 아닙니다. 이 모든 것을 방지하는 가장 좋은 방법은 대신 별도의 형식 매개 변수를 사용하는 것입니다

URL은이 RFC 3986. 플러스가 stands for space에 따라 자신의 인코딩 규칙,의이 있기 때문에입니다
<form id="fm" method="post" action="http://localhost:8080 
/DataService/ProductData?category=Ser %2B bø&location=Herlev##Vejle"> 
    <input type="hidden" name="category" value="Ser %2B bø"> 
    <input type="hidden" name="location" value="Herlev##Vejle"> 
    ... 
</form> 

. 따라서 JSP 또는 JavaScript를 사용하여 URL을 서버에 전달하기 전에 인코딩해야합니다. 인코딩 +%2B입니다 :

<form id="fm" method="post" action="http://localhost:8080 
/DataService/ProductData?category=Ser %2B bø&location=Herlev##Vejle"> 

here 설명대로, 당신이 그것을 인코딩 자바 스크립트를 사용해야합니다 사용자 입력 된 경우.

+0

확인 thaks 그것을 밖으로 시도 할 것이다 다음과 같이 JSP에서 제대로 JSTL<c:url><c:param>와 URL을 인코딩 만들 수 있습니다. – user1593655

+0

다시 한번 고마워. 내 문제를 해결할 수있어. – user1593655

0

+은 공백을 URL로 인코딩 된 표현입니다. 그래서 공간으로 돌려 놓았습니다. 기본적으로 개별 매개 변수 이름과 값을 URL 인코딩해야합니다.

Tomcat을 실행 중이라면 JSP를 실행할 가능성이 큽니다.

<c:url var="formActionURL" value="http://localhost:8080/DataService/ProductData"> 
    <c:param name="category" value="Ser + bø" /> 
    <c:param name="location" value="Herlev##Vejle" /> 
</c:url> 
<form action="#{formActionURL}"> 
    ... 
</form> 
+0

그는 POST를하고 있습니다 - 그래서 왜 처음에 URL에 매개 변수를 보내는가? –