首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向根上下文路径或将其绑定到servlet或将其映射为欢迎文件。

重定向根上下文路径或将其绑定到servlet或将其映射为欢迎文件。
EN

Stack Overflow用户
提问于 2014-10-05 15:45:11
回答 1查看 3.7K关注 0票数 3

我在嵌入式模式下使用Jetty-9,只需要一个web应用程序.因此,我希望根URL转到应用程序的主页,例如

代码语言:javascript
复制
http://localhost:4444/

应该在servlet中结束。我首先要说的是:

代码语言:javascript
复制
ServletContextHandler scContext = 
        new ServletContextHandler(ServletContextHandler.SESSIONS);
scContext.setContextPath("/");

下列任何一项都没有用,也没有用。

代码语言:javascript
复制
scContext.addServlet(ListsServlet.class, "/");

nor

代码语言:javascript
复制
scContext.setWelcomeFiles(new String[]{"/lists})

其中/lists映射到ListsServlet servlet。我只得到了一把403 (禁止的)。

我不使用DefaultServlet,它似乎处理欢迎文件。但是由于ServletContextHandlersetWelcomeFiles,所以我希望它包含使用它们的逻辑。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 12:27:10

对于403 Forbidden错误,您有一些不允许访问处理程序/servlet的安全设置。

消除该安全性(目前而言),验证其余的安全是否有效,然后在稍后添加安全性以锁定细节。

如果您想在工作中看到下面的一些建议,请考虑查看来自另一个堆栈溢出: sources with jetty的答案中的代码示例。

如果在传入请求路径中没有任何内容,欢迎文件将被追加到该请求路径。例如,请求一个目录,然后将'index.html‘的欢迎文件追加到请求路径。

虽然这会奏效..。

代码语言:javascript
复制
scContext.setWelcomeFiles(new String[]{"lists"})

// Add Default Servlet (must be named "default")
ServletHolder holderDefault = new ServletHolder("default",DefaultServlet.class);
holderDefault.setInitParameter("resourceBase",baseDir.getAbsolutePath());
holderDefault.setInitParameter("dirAllowed","true");
holderDefault.setInitParameter("welcomeServlets","true");
holderDefault.setInitParameter("redirectWelcome","true");

scContext.addServlet(holderDefault,"/");

这很可能不是你想要的,就像你说的,只有根路径。上面的内容还会对像/foo//foo/lists这样的请求进行更改。

相反,使用重写规则+处理程序代替迎宾文件方法可能更有意义。

代码语言:javascript
复制
RewriteHandler rewrite = new RewriteHandler();
rewrite.setHandler(scContext);

RewritePatternRule rootRule = new RewritePatternRule();
rootRule.setPattern("/");
rootRule.setReplacement("/list");
rootRule.setTerminating(true);
rewrite.addRule(rootRule);

server.setHandler(rewrite);

RewritePatternRule只需将任何请求路径/更改为/list,然后将该请求转发给包装好的ssContext (如果希望在浏览器上看到/list,则改为RedirectPatternRule

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26204288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档