-
-
Save mlesikov/3edaa0587ea9924412289cfc11f27adf to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class PageRoutingServlet extends HttpServlet { | |
private Map<String, PageController> pages = Maps.newHashMap(); | |
@Override | |
public void init(ServletConfig config) throws ServletException { | |
super.init(config); | |
pages.put("/page1", new PageController() { | |
@Override | |
public void handle(Request request, Response response) throws IOException { | |
PrintWriter writer = response.getWriter(); | |
writer.println("Page1 Page"); | |
writer.flush(); | |
} | |
}); | |
pages.put("/page2", new PageController() { | |
@Override | |
public void handle(Request request, Response response) throws IOException { | |
PrintWriter writer = response.getWriter(); | |
writer.println("Page2 Page"); | |
writer.flush(); | |
} | |
}); | |
pages.put("/showInfo", new PageController() { | |
@Override | |
public void handle(Request request, Response response) throws IOException { | |
PrintWriter writer = response.getWriter(); | |
writer.println("Info Page"); | |
writer.flush(); | |
} | |
}); | |
} | |
interface Request { | |
String param(String key); | |
} | |
interface Response { | |
PrintWriter getWriter() throws IOException; | |
} | |
interface PageController { | |
void handle(Request request, Response response) throws IOException; | |
} | |
@Override | |
protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { | |
PageController pageController = pages.get(req.getRequestURI()); | |
if (pageController == null) { | |
resp.sendError(HttpServletResponse.SC_NOT_FOUND); | |
return; | |
} | |
pageController.handle( | |
new Request() { | |
@Override | |
public String param(String key) { | |
return req.getParameter(key); | |
} | |
}, | |
new Response() { | |
@Override | |
public PrintWriter getWriter() throws IOException { | |
return resp.getWriter(); | |
} | |
} | |
); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<servlet> | |
<servlet-name>routingServlet</servlet-name> | |
<servlet-class>com.clouway.http.PageRoutingServlet</servlet-class> | |
</servlet> | |
<servlet-mapping> | |
<servlet-name>routingServlet</servlet-name> | |
<url-pattern>/</url-pattern> | |
</servlet-mapping> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment