2012-02-15 2 views
0

с последних двух дней, я пытался внедрить апплет в свою веб-страницу, апплет будет извлекать значения базы данных и показывать их в поле со списком.извлекает значение базы данных в апплет

Но я получил Исключение исключения AccessControlException, когда я пытаюсь запустить мою страницу jsp (в которой я встроил свой апплет). Теперь у меня есть последний вариант со мной, который использует трехуровневую архитектуру для передачи апплета с базой данных, как я нашел в Интернете. Теперь я не знаю, как извлечь значение в апплет из базы данных, используя Servlet в качестве среднего слоя. Потому что я не могу получить данные из базы данных в свой апплет. Пожалуйста, помогите мне. Заранее спасибо.!!

+0

Обычно база данных настроена для приема соединения только с localhost. Это означает, что вы можете подключиться к нему только из сервлета (или чего-то еще, но с сервера). Апплет пытается подключиться к db из ip клиента, но это обычно запрещено. – NullPointer

ответ

2

Вы действительно ошиблись, написав JDBC в Applet. Исходный код апплета является общедоступным для конечного пользователя. Вредоносный конечный пользователь сможет декомпилировать его и увидеть имя/пароль БД и/или изменить его, чтобы изменить SQL-запросы, чтобы сделать DELETE или TRUNCATE или любые другие плохие вещи. До свидания база данных.

Вам необходимо создать и создать «веб-сервис», который прослушивает только определенные URL-адреса и возвращает результаты в общем формате, таком как XML, JSON, CSV или что-то еще. Тогда ваш апплет должен просто вызвать именно этот URL-адрес на URLConnection и обработать результаты. Существует множество библиотек Java для преобразования объектов Java в формат XML/JSON/CSV и наоборот. Вы можете использовать одну и ту же библиотеку в коде как веб-службы, так и апплета.

Представьте себе, что вы выбираете JSON и, таким образом, используя Gson для преобразования между Java и JSON, то вы можете в основном сделать следующим образом в сервлет, который действует как «Web Service»:

@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

извините ... по моему вопросу .. я очень новый для этого. Я задаю этот вопрос. Последнее, как я могу использовать этот список в поле со списком апплета. –

Смежные вопросы