Skip to content

Instantly share code, notes, and snippets.

@mlesikov
Forked from mgenov/PageRoutingServlet.java
Created June 1, 2016 08:57
Show Gist options
  • Save mlesikov/3edaa0587ea9924412289cfc11f27adf to your computer and use it in GitHub Desktop.
Save mlesikov/3edaa0587ea9924412289cfc11f27adf to your computer and use it in GitHub Desktop.
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();
}
}
);
}
}
<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