我需要转发ROOT的所有请求,即http://localhost:8080/到http://localhost:8080/myRoot
是否有可能,我是否需要创建重定向servlet?但是,我认为tomcat可以配置为这样吗?
答案 0 :(得分:2)
一种简单的方法是创建一个像这样的过滤器
@WebFilter("/*")
public class RedirectFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String uri = request.getRequestURI();
String query = request.getQueryString();
if (query != null) {
uri = uri + "?" + query;
}
response.setStatus(301);
response.setHeader("Location", "/myRoot" + uri);
// Can also use response.sendRedirect(), but this does 302 by default.
}
// ...
}
并将其放入Tomcat/webapps/ROOT/WEB-INF/classes/com/example/RedirectFilter.class
。
如果您仍在使用Tomcat 6.0或更早版本,请删除@WebFilter
注释并相应地创建web.xml
。
答案 1 :(得分:0)
我所做的是使用UrlRewriteFilter
将过滤器部署到ROOT并修改urlrewrite.xml
,如下所示:
<rule>
<from>^/$</from>
<to type="redirect">%{context-path}/myRoot</to>
</rule>
现在它有效。