I\'m currently developing a Java EE web framework and I would want to know how I could route my URL\'s... I want support HMVC feature! URL\'s will follow this rule:
/mod
i see 3 ways: filter, basic servlet(all requests via main servlet) or "servlet-mapping"
filter
This example rewrite url
http://example.org/to
http://example.org/user?id=i.e
http://example.org/1234 -> http://example.org/user?id=1234
Router org.example.Router param1 valueOfparam1 Router /*
in init-param section you can specify route rules
filter class
public class Router implements javax.servlet.Filter {
private static final Pattern REWRITE_PATTERN = Pattern.compile("(^[1-9]\\d*)$");
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc) throws IOException, ServletException {
//this method calling before controller(servlet), every request
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURL().toString();
String number = url.substring(url.lastIndexOf("/")).replace("/", "");
Matcher m = REWRITE_PATTERN.matcher(number);
if(m.find()) {
RequestDispatcher dispatcher = request.getRequestDispatcher("user?id=" + m.group(1));
dispatcher.forward(req, res);
} else {
fc.doFilter(req, res);
}
}
@Override
public void init(FilterConfig fc) throws ServletException {
//here you may read params from web.xml
}}
basic sevlet
public class BasicServlet extends HttpServlet {
//route rules here, and rewrite
}
servlet-mapping
UserServlet
/user/*
PostServlet
/post/*