我正试图在jetty 9.4.8中设置url重写 .
我在下面使用配置文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
<Set name="handler">
<New id="Rewrite" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
<Set name="handler">
<New class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/QuestionWeb</Set>
<Set name="war"><SystemProperty name="jetty.base"/>\QuestionWeb.war</Set>
<Set name="extractWAR">true</Set>
<Set name="copyWebDir">true</Set>
</New>
</Set>
<Set name="rewriteRequestURI">true</Set>
<Set name="rewritePathInfo">false</Set>
<Set name="originalPathAttribute">requestedPath</Set>
<Call name="addRule">
<Arg>
<New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
<Set name="pattern">/test</Set>
<Set name="replacement">/question</Set>
</New>
</Arg>
</Call>
</New>
</Set>
</Configure>
启动java -jar服务器start.jar后,重定向仅适用于访问地址:
http://localhost:8080/QuestionWeb/queston
然后访问地址:
http://localhost:8080/QuestionWeb/test
如果我尝试访问地址“http://localhost:8080/QuestionWeb/test " before that address " http://localhost:8080/QuestionWeb/queston”,我会收到错误状态404 .
我的Servelt代码:
@WebServlet("/question")
public class QuestonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss:SSS");
public QuestonServlet() { }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().append(df.format(Calendar.getInstance().getTime())).append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}