Я работаю над веб-приложением, которое использует JSF. У меня есть папка с именем «admin» в разделе «web», и у меня есть несколько страниц JSP в папке «admin». Я могу получить доступ к страницам jsp через «web», но когда я пытаюсь получить доступ к страницам под «admin», я получаю «404-Запрошенный ресурс не может быть найден»
«Context.xml» для моего приложения выглядит примерно так:
<Context antiJARLocking="true" path="/MyApp"/>
Эта штука работает на моем локальном tomcat, но когда я внедряю ее на моих 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-сопоставление в мой web.xml?
У меня есть следующий фильтр сервлетов в файле web.xml для '/ admin / *' url-pattern
<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;
}
}