Вот как может выглядеть ваш сервлет:
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// do something at the servlet here
String page = (String) req.getAttribute("page"); // page to be forwarded
// form servlet to
// jsp
if (page == null) {
page = req.getParameter("page");// page to be forwarded form jsp to
// servlet
}
this.forwardIfExists(req, resp, page);
}
protected void forwardIfExists(HttpServletRequest req,
HttpServletResponse resp, String page) throws ServletException, IOException {
File pagePath = new File(this.getServletContext().getRealPath(page));
if ( pagePath.exists() ) {
req.getRequestDispatcher( page ).forward(req, resp);
} else {
throw new IllegalArgumentException(String.format( "The page %s does not exist", page ));
}
}
}
Кроме того, не перехватывайте ServletException или IOException , генерируемые методами сервлета, если они произошличто-то действительно плохое происходит в вашем приложении, и вы не должны проглатывать эти исключения, как в своем коде.Эти исключения следует оставить как есть, и контейнер должен их перехватить.Вам следует записать их и не пытаться распечатывать трассировки стека, так как они будут распечатаны в потоке с ошибками и не будут видны на рабочем сервере.