Ответ 1
Вам нужно ненавязчивый Javascript, который является частью Progressive Enhancement.
Сначала начните создание полностью функционального веб-приложения без какой-либо строки Javascript. После того, как вы его заработаете, начните писать Javascript-код, который "берет на себя" необработанную HTML-работу, не меняя ни одной строки HTML/CSS. В коде на стороне сервера вам необходимо добавить логику, которая распознает, был ли запрос запущен JavaScript или нет, и ответ соответственно. Вы можете проверить оба случая, включив/отключив JavaScript в веб-браузере. В Firefox легко с панель инструментов веб-разработчиков.
Например, у вас есть список писем со всеми HTML-ссылками, которые должны показывать тело письма:
<a href="mail/show/1" class="show">Message title</a>
Без JavaScript это приведет к вызову HTTP-запроса сервлету, который загружает почту, идентифицированную с помощью 1
, пересылает запрос JSP, который скрывает список сообщений в представлении и показывает почту в представлении.
С JavaScript/jQuery вам нужно написать код, который делает то же самое с помощью Ajax, например:
$('a.show').click(function() {
$.getJSON(this.href, callbackFunctionWhichHidesListAndShowsMail);
return false;
});
На стороне сервера вы должны различать обычные запросы и запросы ajax, чтобы вы могли соответственно возвращать ответ.
boolean ajax = "XMLHttpRequest".equals(request.getHeader("x-requested-with"));
// ...
if (ajax) {
writeJson(response, mail);
} else {
request.setAttribute("mail", mail);
request.getRequestDispatcher("/WEB-INF/mail.jsp").forward(request, response);
}
Наконец, чтобы дать пользователю возможность переключаться между режимами вручную, вы должны установить cookie или предпочтительно (поскольку файлы cookie отключены) передайте некоторую информацию в URL (параметр pathinfo или request), что заставляет сервер отключать излучение линии <script>
.