2012-05-04 41 views
1

我已经创建了一个名为loggedOut.jsp的新JSP文件,并且在我的应用程序中单击注销后,我希望将其引导至该文件。虽然我被带到登录页面,但url显示为loggedOut.jsp,而不是去loggedOut.jsp文件。我该如何将JSP文件添加到我的应用程序?

我使用tomcat 7和vaadin。

如何让我的应用程序将我带到loggedOut.jsp?

我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<display-name>Messages</display-name> 
<context-param> 
    <description> 
    Vaadin production mode</description> 
    <param-name>productionMode</p+aram-name> 
    <param-value>false</param-value> 
</context-param> 
<servlet> 
    <servlet-name>MessagesApplication</servlet-name> 
    <servlet-class>org.vaadin.artur.icepush.ICEPushServlet</servlet-class> 
    <init-param> 
     <description> 
     Vaadin application class to start</description> 
     <param-name>application</param-name> 
     <param-value>com.entropix.msgapp.main.MsgApplication</param-value> 
    </init-param> 
    <init-param> 
     <description> 
     Application widgetset</description> 
     <param-name>widgetset</param-name> 
     <param-value>com.entropix.msgapp.main.widgetset.MessagesWidgetset</param-value> 
    </init-param> 
</servlet> 
<session-config> 
    <session-timeout>30</session-timeout> 
</session-config> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>/login.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>/loginFailed.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>/loggedOut.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>MessagesApplication</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 
<security-constraint> 
    <display-name>LoginConstraint</display-name> 
    <web-resource-collection> 
     <web-resource-name>MessagesUser</web-resource-name> 
     <description>Messages Application Authenticated User</description> 
     <url-pattern>/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>messages-user</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE --> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
<security-role> 
    <description>Messages User</description> 
    <role-name>messages-user</role-name> 
</security-role> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/login.jsp</form-login-page> 
     <form-error-page>/loginFailed.jsp</form-error-page> 
     </form-login-config> 
</login-config> 

+0

为了得到更好的帮助,请发表你做了什么至今。 –

回答

3

您可能配置的“web应用程序(或web应用程序的过滤器)重定向到所有登录页面(或一大堆)受保护的“URL,如果用户未经过身份验证。

确保loggedOut.jsp不是那些需要进行身份验证才能访问的“受保护”URL(或url模式)的一部分。这通常是在web.xml文件中配置的,但您是唯一知道您的应用程序如何工作的人。

编辑:现在你已经向我们展示了web.xml文件,看它里面。您正在使用url模式/*(这意味着每个网址的网址)定义一个资源集合,该资源集合需要被访问的角色messages-user。这意味着要访问Web应用程序的每个URL,您必须通过身份验证并通过此身份验证获得消息用户角色。因此,只要您注销,就可以将用户重定向到logedOut.jsp。但由于需要对URL进行身份验证才能访问该URL,因此会显示登录页面。

这里是一个教程你:http://docs.oracle.com/javaee/5/tutorial/doc/bncas.html

+0

我在哪里可以找到“受保护的”网址? – Knoxie

+0

正如我所说:“这通常在web.xml文件中配置”。 –

+0

对不起,应该是更具体。我对此很陌生,不知道要找到这些受保护的网址需要寻找什么。我将它添加到我的web.xml中,就像我已经拥有的login.jsp一样。我没有看到任何其他地方不允许我导航的地方。 Servlet映射> JSP不需要 /loggedOut.jsp Knoxie

相关问题