получить значение базы данных в апплет - PullRequest
0 голосов
/ 15 февраля 2012

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

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

1 Ответ

2 голосов
/ 15 февраля 2012

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

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

Представьте, что вы выбираете JSON и, таким образом, используете Gson для преобразования между Java и 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());
// ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...