Это называется "красивый URL" или "дружественный URL".По сути, вам нужно создать фильтр или сервлет фронт-контроллера для достижения этой цели.Предполагая, что вы идете в направлении фильтра, он будет выглядеть примерно так:
private Map<String, String> mapping;
@Override
public void init() {
mapping = new HashMap<String, String>();
mapping.put("/product/some-lovely-carrots", "/product.jsp?id=2");
// ...
// You can of course also fill this map based on some XML config file or
// even a database table.
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String path = request.getRequestURI().substring(request.getContextPath().length());
String target = mapping.get(path);
if (target != null) {
req.getRequestDispatcher(target).forward(req, res);
} else {
chain.doFilter(req, res);
}
}
Сопоставьте этот фильтр с шаблоном URL-адреса /*
и измените ссылку следующим образом
<a href="${pageContext.request.contextPath}/product/some-lovely-carrots">Some lovely carrots</a>