对于该403 Forbidden
错误,您有一些不允许您访问处理程序/servlet 的安全设置。
消除该安全性(暂时),验证其余部分是否正常工作,然后稍后添加安全性以锁定细节。
如果您想在工作中看到以下一些建议,请考虑查看另一个 stackoverflow 答案中的代码示例:如何使用 jetty 正确支持 html5 <video> 源。
如果该位置没有任何内容,欢迎文件将附加到传入请求路径。例如,请求一个目录,然后将“index.html”的欢迎文件附加到请求路径。
虽然这会起作用......
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
相反,使用重写规则 + 处理程序而不是欢迎文件方法可能更有意义。
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
在浏览器上查看 ,请将其更改为 a RedirectPatternRule
。