Aufruf von jsp-Servlet - <href> link funktioniert nicht
arbeite ich an einer spring-mvc-Projekt und ich habe Tomcat-FORMULAR-Authentifizierung für das login.
und die Anwendung ist in Ordnung, so, jetzt arbeite ich auf den logout-Implementierung.
die Anwendung ist mit Startseite (home.jsp) mit link zum Abmelden, und ich bin versucht zu rufen LogoutServlet als unten.
LogoutServlet.java
@WebServlet(urlPatterns={"/logout"})
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//To logout the current user
request.getSession().invalidate();
//The user is now logged out so redirect the user to the welcome.jsp page .
response.sendRedirect(request.getContextPath() + "/welcome.jsp");
}
}
Hause.jsp
<body>
<a href="LogoutServlet">Logout</a>
<form:form id="formDataBean" method="post" modelAttribute="formDataBean" action="submit" class="form" >
//form body
.
.
</form:form>
</body>
web.xml
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml,classpath*:gameResult-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Admin</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>tomcat</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/login-failed</form-error-page>
</form-login-config>
</login-config>
//i have a doubt on the below code as i don't know if it has to be there at all
//because when ever i start the application (server) this servlet gets initialize
//and doGet() gets execute.
<servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>org.sample.servlets.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/logout/*</url-pattern>
</servlet-mapping>
</web-app>
hier ist das problem :
möchte ich nennen, die LogoutServlet aus Abmelden-link und leiten Sie begrüßen zu dürfen.jsp-Seite, aber jetzt seine nicht funktioniert, Ihre werfen HTTP Status 404-Fehler (http://localhost:8080/gameResult/LogoutServlet).
InformationsquelleAutor Coral | 2014-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entsprechend Ihrer Servlet, sollte man Sie wohl nennen
http://localhost:8080/gameResult/logout
statt.Könnte man hinzufügen, die automatisch den Kontext elimitate weitere Probleme, wenn Sie diesen code verwenden, die in einem anderen Pfad, so dass Sie nicht haben, um über die Mühe relativen Pfad.
Auch, Sie sollten entfernen Sie dieses Zeug aus
web.xml
:Weil Sie mit
WebServlet
annotation.Sie sind herzlich willkommen!
Vergessen Sie nicht, gehen Sie durch Ihre Fragen und markieren Sie als beantwortet, wenn Sie sind!
ok, sicher, Fertig 🙂
warum müssen wir hinzufügen, contextPath
${pageContext.request.contextPath}
href Generierung einer GET-Anfrage selbst, so der webcontainer sein sollte ruft Sie die entsprechende servlet für die angegebene url-pattern ist es nicht? Können Sie bitte erklären, den Unterschied??InformationsquelleAutor Alexandre Lavoie