2012-02-15 4 views
0

지난 이틀간 애플릿을 내 웹 페이지에 삽입하려고 애플릿이 데이터베이스 값을 검색하여 콤보 상자에 표시했습니다.애플릿으로 데이터베이스 값을 검색

그러나 AccessControlException 예외가 있는데, 내 애플릿을 포함시킨 jsp 페이지를 실행하려고 할 때 예외입니다. 자, 마지막 옵션은 3 계층 아키텍처를 사용하여 애플릿과 데이터베이스를 인터넷에서 찾은 것입니다. 자, 나는 중간 계층으로 서블릿을 사용하여 데이터베이스에서 애플릿으로 값을 검색하는 방법을 모른다. 왜냐하면, 데이터베이스에서 애플릿으로 데이터를 가져올 수 없기 때문입니다. 도와주세요. 미리 감사드립니다. !!

+0

일반적으로 데이터베이스는 localhost에서만 연결을 허용하도록 설정됩니다. 즉, 서블릿 (또는 다른 서버가 아닌 서버)에서만 연결할 수 있습니다. 애플릿은 클라이언트의 IP에서 db에 연결하려고 시도하지만 대개 금지됩니다. – NullPointer

답변

2

애플릿에서 JDBC를 작성하면 실제로 잘못된 경로가 발생했습니다. 애플릿의 소스 코드는 일반 사용자에게 공개됩니다. 악의적 인 최종 사용자는 DB 이름/암호를보고 역 컴파일하여 SQL 쿼리를 변경하여 DELETE 또는 TRUNCATE 또는 다른 나쁜 점을 대신 수행 할 수 있습니다. 바이 바이 데이터베이스.

특정 URL 만 수신하고 결과를 XML, JSON, CSV 등과 같은 일반적인 형식으로 반환하는 "웹 서비스"를 디자인하고 만들어야합니다. 그런 다음 애플릿은 정확히 URLConnection에 의해 해당 URL을 호출하고 결과를 처리합니다. Java 객체를 XML/JSON/CSV 형식으로 변환하는 많은 Java 라이브러리가 있으며 그 반대의 경우도 있습니다. 웹 서비스와 애플릿의 코드에서 동일한 라이브러리를 사용할 수 있습니다.

는 "웹 서비스"역할을하는 서블릿에서 다음과 같이 당신이 기본적으로 할 수있는, 당신은 자바와 JSON 사이의 변환 Gson를 사용하여 JSON을 선택하고 있다는 것을 상상 :

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // Just a basic example. In real, just retrieve data from DB. 
    List<String> list = new ArrayList<String>(); 
    list.add("item1"); 
    list.add("item2"); 
    list.add("item3"); 
    String json = new Gson().toJson(list); 

    response.setContentType("application/json"); 
    response.setCharacterEncoding("UTF-8"); 
    response.getWriter().write(json); 
} 

이가 애플릿에서 다음과 같이 얻을 수 있습니다.

URL url = new URL(getCodeBase(), "servletURL"); 
Reader reader = new InputStreamReader(url.openStream(), "UTF-8"); 
List<String> list = new Gson().fromJson(reader, new TypeToken<List<String>>() {}.getType()); 
// ... 
+0

Gson과이 typetoken이 무엇인지 말해 주실 수 있습니까? 왜냐하면 여기에 오류가 발생했기 때문입니다. : –

+0

코드를 맹목적으로 복사하지 마십시오. 모든 링크를 포함하여 답변 텍스트도 읽으십시오. 파란색 단어는 장식이 아닙니다. – BalusC

+0

죄송합니다 ... 내 질문에 대한 ... 매우 새로운 내용입니다. 그 이유는 무엇입니까? 이런 질문을하고 있는데 마지막으로 애플릿의 콤보 상자에이 목록을 어떻게 사용할 수 있습니까? –

관련 문제