내가 직면한 문제는 URL의 매개변수 내용이 & 일치한다는 것입니다.
해결하는 두 가지 방법이 있습니다. 한 가지 방법은 페이지에서 JS를 사용하여 코드를 변환하는 것입니다. (프론트엔드 처리)
${group.cn }) <스크립트 언어 ="javascript">
function test(a,b){
alert("test")
location.href='groupsDetailServlet?groupTypeForDetail=' a '&cn=' encodeURIComponent(b);
}
script>
두 번째 방법: 백엔드에서 처리 1>jsp:
2>java bean: 그룹
표시할 문자열 cn;//CN
매개변수가 전달될 때 문자열 인코딩CN;//CN
public Group(String cn) { this(); this.encodedCN =LdapUtil.encodeURLSr(cn) }
public void setCn(문자열 이름) { this.cn = name; LdapUtil.encodeURLSr(cn)) }
public String getCn() { return cn; }
public String getEncodedCN() { return encodedCN }
public void setEncodedCN(String cn); cn; }
3> 호출 클래스 프로세스 디코딩:
String cn = LdapUtil.decodeURLStr(encodedCN) ;
4>LdapUtil.java
public static String encodeURLSr(String src)
{
return src != null && src.trim( ).length() > 0 ? src.replaceAll("&", "@") : "";
}
public static String decodeURLStr(String src)
{
return src ! = null && src.trim().length() > 0 ? src.replaceAll("@ ", "&") : ""
}
----------------------------다음은--- --인터넷 검색 데이터 공유------------------------------- -
URL을 사용하여 매개변수 전달 이 경우 일부 매개변수 또는 중국어 이름(또는 특수 문자 포함)이 포함된 URL 주소가 전달되는 경우가 많으며 백그라운드 처리 중에 변환 오류가 발생합니다. 일부 배달 페이지에서는 GB2312가 사용되고, 수신 페이지에서는 UTF8이 사용되므로 수신된 매개변수가 원래 매개변수와 일치하지 않을 수 있습니다. 서버측 urlEncode 함수를 사용하여 인코딩된 URL과 클라이언트측 javascript의 encodeURI 함수를 사용하여 인코딩된 URL 간에 결과가 다릅니다. JavaScript 인코딩 텍스트에는 3가지 기능이 포함됩니다: escape, encodeURI, encodeURIComponent, 3가지 디코딩 기능에 해당: unescape, decodeURI, decodeURIComponent
javaScript의 인코딩 방법 :
escape( ) 방법: 사용 지정된 문자열을 인코딩하기 위한 ISO 라틴 문자 세트입니다. 모든 공백, 구두점, 특수 문자 및 기타 비ASCII 문자는 %xx 형식의 문자 인코딩으로 변환됩니다(xx는 문자 집합 테이블에 있는 문자 인코딩의 16진수와 동일합니다). 예를 들어 공백 문자에 해당하는 인코딩은 입니다. 이스케이프 해제 방법은 그 반대입니다. 이 메서드로 인코딩되지 않는 문자: @ * /
encodeURI() 메서드: UTF-8 인코딩 형식을 사용하여 URI 문자열을 이스케이프 형식 문자열로 변환합니다. 이 메소드로 인코딩되지 않는 문자: ! @ # $& * ( ) = : / ? '
encodeURIComponent () 메소드: UTF-8 인코딩 형식을 사용하여 URI 문자열을 이스케이프 형식 문자열로 변환합니다. encodeURI()와 비교하여 이 메서드는 / 및 기타 문자와 같은 더 많은 문자를 인코딩합니다. 따라서 문자열에 URI의 여러 부분이 포함되어 있으면 이 방법을 사용하여 인코딩할 수 없습니다. 그렇지 않으면 / 문자가 인코딩된 후 URL에 오류가 표시됩니다. 이 방법으로 인코딩되지 않는 문자: ! * ( )
따라서 중국어 문자열의 경우 문자열 인코딩 형식을 UTF-8 형식으로 변환하지 않으려는 경우(예: 원본 페이지의 문자 집합 및 대상 페이지가 일관적임), 그냥 이스케이프를 사용하세요. 페이지가 GB2312 또는 기타 인코딩이고 매개변수를 허용하는 페이지가 UTF-8로 인코딩된 경우 encodeURI 또는 encodeURIComponent를 사용해야 합니다.
그리고 javascript1.5 이후에 encodeURI/encodeURIComponent가 도입되었으며, javascript1.0에서는 escape가 가능했습니다.
1. 매개변수 전달 시 encodeURIComponent를 사용해야 합니다. 그래야 결합된 URL이 #과 같은 특수 문자로 인해 잘리지 않습니다. 예:
2. URL 점프를 할 때 encodeURI를 전체적으로 사용할 수 있습니다. 예: Location.href=encodeURI ("http://cang.baidu.com/do/s?word=Baidu &ct=21")
3. js가 데이터를 사용할 때 이스케이프를 사용할 수 있습니다. 예: 컬렉션의 역사 기록.
4. Escape가 0~255 이외의 유니코드 값을 인코딩하면 %u**** 형식이 출력됩니다. 그 외의 경우 Escape, encodeURI, encodeURIComponent의 인코딩 결과는 동일합니다.
가장 일반적으로 사용되는 것은 중국어, 한국어 및 기타 특수 문자를 utf-8 형식의 URL 인코딩으로 변환하는 encodeURIComponent이므로 매개변수를 백그라운드로 전달하기 위해 encodeURIComponent를 사용해야 하는 경우 백그라운드 디코딩이 필요합니다. utf-8을 지원합니다. (양식의 인코딩 방식은 현재 페이지의 인코딩 방식과 동일합니다.)
Escape로 인코딩되지 않은 문자는 69개입니다: *, , -, ., /, @, _, 0-9, a-z, A-Z
encodeURI가 인코딩하지 않는 문자는 82개입니다: !, #, $, &, ', (, ), *, , , , - , . , ; , = , ? , @ , _ , ~ , 0-9 , a-z , A-Z
encodeURIComponent에는 71개의 인코딩되지 않은 문자가 있습니다: !, ' , ( , ) , _ , ~ , . , a-z , A-Z
다음은 URL에 있습니다. URL에 가능한 특수 문자 및 인코딩된 값은 다음과 같습니다. (생략)
프로젝트에서 encodeURI() 인코딩 변환이 직접 수행되는 것으로 확인되었습니다. URL의 매개변수 부분에, 백그라운드 서블릿이 getParamater()를 통해 이를 얻을 때, 변환 없이 바로 올바른 값을 얻을 수 있습니다. 참고: 중국어에서는 매개변수가 사용되지 않으며 프레임워크는 Struts 프레임워크를 사용합니다.