0

我在jsp中有一个注销链接,我像这样调用注销函数

function logout(){
    document.getElementById("functiontype").value="logout";
    document.forms["frmTempcard"].submit();               
}

我这样称呼它: <li><a href="#" onclick="logout()">Logout</a></li>

当我点击链接时,我看到以下网址:http://localhost:8080/acct/notifier[the jsp file is there in this folder only ]/TempCardServlet

当我删除 url 中的文件夹名称时,它工作正常。那么如何重定向到所需的servlet?

请帮我。

4

3 回答 3

2

你应该看看action表单的属性,根据你分享的代码和问题描述,我觉得你需要更新action你的表单。

目前,您会给出action='TempCardServlet'这意味着提交请求以TempCardServlet驻留在与当前 JSP 页面相同的 URL 中。这是相对路径参考。

当您指定时action='SomePath',浏览器将请求提交到http://server/currenturl/SomePath. 如果您需要提交请求的路径不在当前路径中,则您需要通过以下方式指定相对路径或绝对路径:

相对路径(在您的情况下):action='../TempCardServlet'- 不建议使用此方法,因为相对路径可能会破坏您的应用程序

带有应用程序上下文的绝对路径:action='/acct/TempCardServlet'- 这将引用同一服务器上的 servlet,这样做的缺点是您对应用程序上下文进行了硬编码。为了克服这个问题,您可以使用 Servlet API 获取当前应用程序上下文并将其附加到您的 servlet 路径 - 您还可以使用标准标记库来获取附加的上下文路径。

于 2012-07-12T09:40:14.320 回答
1

使action表单的属性指向适当的 URL:

<form action="<c:url value='/TempCardServlet'/>" ...>

如果您需要动态更改它,请将其添加到您的 JS 代码中(当然是在提交之前):

document.forms["frmTempcard"].action = "<c:url value='/TempCardServlet'/>";
于 2012-07-12T09:37:09.453 回答
1

这:
<a href="/myWebApp/servlets/logout">Logout</a>

...调用您自己的 servlet 映射如下:

@WebServlet(name="logout", urlPatterns={ "/servlets/logout" })
public class LogoutServlet extends HttpServlet {
    ...
}

...您在其中执行注销逻辑。

于 2012-07-12T09:41:55.883 回答