2009-05-08 7 views
1

URL 변수를 사용하는 카테고리를 다른 서블릿에 전달하는 간단한 자바 서블릿을 작성합니다.자바 서블릿 : URL 변수 값을 공백으로 전달합니다.

ResultSet rs = qw.DBquery("select distinct manufacturer from Products order by manufacturer asc"); 
try { 
    while (rs.next()) { 
     table+= "<tr><td><a href=\"getItems?manufacturer=" 
       + rs.getString("Manufacturer") + "\">" 
       + rs.getString("Manufacturer") + "</a></td></tr>\n"; 
    } 
} 

의 출력을 포함하는 다음 코드 예를 들어

:

http://localhost/getItems?getItems?manufacturer=Adobe%20Acrobat 

:

Adobe 
Adobe Acrobat 
IBM 
IBM - Workstations 

내가 하나를 클릭하면 링크가 같은 URL에 도달 그러나 제조업체 변수와 해당 값을 얻을 때

String manufacturer = request.getParameter("manufacturer"); 
ResultSet rs1 = qw.DBquery("select * from products where Manufacturer like '" 
          + manufacturer + "'"); 

쿼리 출력이 실패하고 제조업체 값에 공백이 있으면 아무 것도 출력하지 않습니다. 다시 변환하는 방법에 대한 아이디어 또는 해결 방법은 무엇입니까? 나는 어떤 종류의 urldecode를 할 필요가 있는가? 미리

답변

3

의 URL에서 인코딩 된 공간의 20 %가 정확하고, 웹 애플리케이션 컨테이너 URL 디코딩을 담당로

감사합니다. 프로그램에서

String manufacturer = request.getParameter("manufacturer"); 

문자열 manufacturer 그러므로 (공백) '어도비 아크로뱃'를 포함해야합니다. (어딘가에 로그인하여) 확인할 수 있습니까?

"select * from products where Manufacturer like '"+ manufacturer + "'" 

또한 변수를 사용하십시오. 쿼리 매개 변수를 SQL에 직접 삽입하면 SQL 주입 공격에 완전히 노출됩니다. 성능에도 좋지 않습니다.

"select * from products where Manufacturer like ? "