gpt4 book ai didi

tomcat - 静态页面的默认 servlet getRequestDispatcher

转载 作者:行者123 更新时间:2023-11-28 23:44:14 25 4
gpt4 key购买 nike

@WebServlet("/")
public class RootServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String pathInfo = request.getServletPath();
switch(pathInfo) {
case "/":
this.handleHomePage(request, response);
break;
default:
request.getRequestDispatcher(pathInfo).forward(request, response);
}
}

我正在尝试使用默认的 servlet 来捕获上下文根 url。所以当它是根 url 时,它将由 handleHomePage 方法处理。如果没有,它将被转发到相应的文件。例如css、html、图像文件。但这会导致永无止境的异常发生。 getRequestDispatcher 是否允许转发到静态页面?

最佳答案

你最好像这样创建一个过滤器:

@WebFilter(filterName = "rootFilter", urlPatterns = { "/*" }, dispatcherTypes = { DispatcherType.REQUEST })
{
@Override
public void doFilter(ServletRequest p_oRequest, ServletResponse p_oResponse, FilterChain p_oChain) throws IOException, ServletException
{
// skip non-http requests
if(!(p_oRequest instanceof HttpServletRequest))
{
p_oChain.doFilter(p_oRequest,p_oResponse);
}
else
{
String pathInfo = ((HttpServletRequest)p_oRequest).getServletPath();
switch(pathInfo)
{
case "/":
// Forward to your "root servlet"
break;
default:
p_oChain.doFilter(p_oRequest,p_oResponse);
}
}
}
}

注意:此代码未经测试且未检查语法错误。

关于tomcat - 静态页面的默认 servlet getRequestDispatcher,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com