我正在使用一个使用JSF的Web应用程序。我在'web'下有一个名为'admin'的文件夹,我在'admin'文件夹下有几个jsp页面。我可以访问'web'下的jsp页面但是当我尝试访问'admin'下的页面时,我得到'404-Requested resource not found' 我的应用程序的'context.xml'是这样的:
<Context antiJARLocking="true" path="/MyApp"/>
这个东西适用于我的本地tomcat但是当我将它部署到我的web托管服务提供商tomcat时我有上面提到的问题。 我究竟需要做些什么来解决这个问题。
这是我在托管上的应用程序的server.xml提供了tomcat:
<Host name="myapp.com" appBase="/home/myapp/public_html">
<Alias>www.myapp.com</Alias>
<Context path="" reloadable="true" docBase="/home/myapp/public_html" debug="1"/>
<Context path="/manager" debug="0" privileged="true"
docBase="/usr/local/jakarta/tomcat/server/webapps/manager">
</Context>
</Host>
或者我是否需要将URL-Mapping添加到我的web.xml?
我在web.xml中有关于'/ admin / *'url-pattern
的servlet过滤器 <filter>
<filter-name>SecurityFilter</filter-name>
<filter-class>com.myapp.SecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SecurityFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
过滤器代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
lgMgr.logDebug("doFilter() is called...");
String validuser = null;
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
//If authorization key not in session, redirect to login page.
validuser = (String) session.getAttribute(Common.AUTH_USER);
if(validuser != null) {
lgMgr.logDebug("doFilter(): User is allowed to access the page...");
//If the user is allowed access to the URI, let the flow proceed as normal
chain.doFilter(request, response);
return;
} else {
lgMgr.logDebug("doFilter(): User is not allowed to access the page, redirecting user login...");
//User not allowed access - redirect to login page
res.sendRedirect(req.getContextPath() + "/AdmLogin.jsf");
return;
}
}
答案 0 :(得分:0)
/WEB-INF
中的文件不可公开访问。我不知道它为什么在本地工作,但这违反了servlet规范。此外,JSF无法将视图转发到/WEB-INF
文件夹中的JSP页面,它们应放在公共webcontent(一个文件夹级别高于/WEB-INF
文件夹)。