如果问题措辞不当,我道歉......我不太确定如何去问。
我将如何根据查询字符串更改URL,例如:
如果有人点击链接获取一些可爱的胡萝卜,而不是URL为foo.com/product.jsp?id=2,那就是foo.com/product/some-lovely-carrots。
我尝试将映射添加到web.xml,但我认为我没有采用正确的方法。
任何帮助都将不胜感激。
答案 0 :(得分:0)
这称为“漂亮网址”或“友情网址”。基本上,您需要创建一个过滤器或前端控制器servlet来完成这项工作。假设您进入过滤器方向,它看起来如下所示:
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);
}
}
将此过滤器映射到/*
的网址格式,并按如下所示更改链接
<a href="${pageContext.request.contextPath}/product/some-lovely-carrots">Some lovely carrots</a>