2012-04-25 5 views
0

일부 정보를 매개 변수로 사용하여 다른 페이지로 사용자를 리디렉션하는 하이퍼 링크가 포함 된 웹 응용 프로그램이 있습니다. 특히, 내 하이퍼 링크는 SQL 쿼리를 매개 변수로 포함합니다.하이퍼 링크를 통해 매개 변수 전달하기

그래서 같이 이렇게 :

<a href="somepage.jsp?query=<%=stringSQLQuery%>"></a> 

그러나, 때마다 내 SQL 쿼리가 검색 용어로 와일드 카드를 포함, %처럼, 내 로그 파일에 다음과 같은 오류 메시지가 :

Character decoding failed. Parameter [string] with value ... 

그렇다면 와일드 카드가있는 하이퍼 링크를 통해 SQL 쿼리를 전달할 수 있다고 생각하지 않습니다. 이 문제를 해결하기 위해 무엇을 할 수 있습니까?

<a onclick='window.href.location = encodeURI("somepage.jsp?query=<%=stringSQLQuery%>");'>Click me</a> 

그런 SQL의를 통해이 나쁜 나쁜 나쁜 생각입니다 통과, 또한 this jsfiddle

를 참조하십시오

+0

왜 전체 SQL 쿼리를 매개 변수로 전달해야합니까? 사용자가 쿼리에 대한 매개 변수 만 제공한다고 생각하지 않습니까? 앱에 충분히 안전합니까? – jambriz

답변

1

허용되는 문자는 제한적입니다. %은 URL 인코딩 된 문자의 시작을 나타내는 예약 문자입니다.

요청 매개 변수는 URL-encoded이어야합니다. JSTL<c:url><c:param>은이 작업에 맞게 설계되었습니다.

<c:url var="somepage" value="somepage.jsp"> 
    <c:param name="query" value="${stringSQLQuery}" /> 
</c:url> 
<a href="${somepage}">link</a> 

모든 사람이 언급했듯이 요청 매개 변수로 SQL 문자열을 전달할 때 큰 실수를 저지르고 있습니다. 일부 Map 또는 RESTful URL에 저장된 고정 명령으로 작업하십시오. 난 한 페이지 display.html가 상기 파라미터 A 및 B를 통과하고, 각각 (10, 20)가 값 :

1

당신은 나는 이것이 당신이 원하는 생각 uri encode your parameters.

필요 . 누구나 DB에 액세스 할 수 있습니다.

+0

OP는 JavaScript가 아니라 JSP를 사용합니다. – BalusC

+0

JSP 페이지의 가장 큰 특징은 자바 스크립트도 사용할 수 있다는 것입니다. P – stevebot

+0

끔찍한 끔찍한 생각인데, 이것이 내 교수가 원하는 것입니다. :/ – Waffles

0

는 하이퍼

예로서

를 사용 pamameters 또는 값을 전달할 수있다. 앵커 태그에서 우리는 아래와 같이 href 될 것입니다.

     href="xyz.html?a=10&b=20" 
관련 문제