Просто вызовите сервлет напрямую по URL-адресу вместо файла JSP, выполните работу в методе doGet()
и, наконец, позвольте сервлету переслать запрос в JSP, чтобы он мог сгенерировать и отправить HTML-материал.
@WebServlet(urlPatterns={"/index"})
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Do your job here.
// ...
request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
}
}
Вызовите это с помощью http://example.com/contextname/index вместо http://example.com/contextname/index.jsp и поместите JSP в папку /WEB-INF
, чтобы предотвратить ее открытие без вмешательства сервлета.
Youможет выполнить предварительную обработку в методе doGet()
и сохранить данные как атрибут запроса.Например,
List<Data> data = dataService.list();
request.setAttribute("data", data); // It'll be available by ${data} in JSP.
Что касается истории Ajax, возможно, вы просто неправильно ее реализуете.Вы можете найти здесь несколько примеров: Как использовать сервлеты и Ajax?
См. Также: