rendered paste bodypackage controllers;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.SQLException;import java.util.LinkedList;import java.util.List;import javax.servlet.ServletConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class FrontController */@WebServlet("/FrontController")public class FrontController extends HttpServlet { private static final long serialVersionUID = 1L; // Initializes the servlet. public void init(ServletConfig config) throws ServletException { super.init(config); Controller.setServletContext(config.getServletContext()); } // Destroys the servlet. public void destroy() { } /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. * * @param request servlet request * @param response servlet response */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { String[] uri; String action; Controller.setRequest(request); Controller.setResponse(response); // since everything is routed to this FC, we need to reroute the static files if (request.getRequestURI().replaceAll(request.getContextPath(), "").contains(".")) { getServletContext().getNamedDispatcher("default").forward(request, response); return; } uri = request.getRequestURI().replaceAll(request.getContextPath(), "").split("\\/"); List<String> cleanURI = new LinkedList<String>(); // if the uri starts or ends with a slash the split will add an // empty string we create a new List without any empty item for (String s : uri) { if (!s.equals("")) { cleanURI.add(s); } } if (cleanURI.size() == 0) { try { Home.index(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { try { Class<?> c = Class.forName("controllers." + cleanURI.get(0)); // if the size of the list is 2 we load the specified method // if not we try loading the index method action = (cleanURI.size() == 2) ? cleanURI.get(1) : "index"; Method m = c.getMethod(action, null); m.invoke(null, null); } catch (ClassNotFoundException e) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { response.sendError(HttpServletResponse.SC_NOT_FOUND); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * Handles the HTTP <code>GET</code> method. * * @param request * servlet request * @param response * servlet response */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request * servlet request * @param response * servlet response */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); }}