我在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?
请帮帮我。
答案 0 :(得分:2)
您应该查看表单的action
属性,根据您共享的代码和问题说明,我觉得您需要更新表单的action
。
目前您已经提供了action='TempCardServlet'
,这意味着将请求提交给驻留在与当前JSP页面相同的URL中的TempCardServlet
。这是相对路径参考。
当您指定action='SomePath'
时,浏览器会向http://server/currenturl/SomePath
提交请求。如果您需要提交请求的路径不在当前路径中,那么您需要以下列方式指定相对路径或绝对路径:
相对路径(在您的情况下):action='../TempCardServlet'
- 建议不要使用此方法,因为相对路径可能会破坏您的应用程序
应用程序上下文的绝对路径:action='/acct/TempCardServlet'
- 这将引用同一服务器上的servlet,缺点是您正在硬编码应用程序上下文。要解决这个问题,您可以使用Servlet API获取当前的应用程序上下文并将其附加到您的servlet路径 - 您还可以使用标准标记库来附加上下文路径。
答案 1 :(得分:1)
将表单的action
属性设置为相应的网址:
<form action="<c:url value='/TempCardServlet'/>" ...>
如果您需要动态更改它,请将其添加到您的JS代码中(当然,在提交之前):
document.forms["frmTempcard"].action = "<c:url value='/TempCardServlet'/>";
答案 2 :(得分:1)
此:
<a href="/myWebApp/servlets/logout">Logout</a>
...调用你自己的servlet映射如下:
@WebServlet(name="logout", urlPatterns={ "/servlets/logout" })
public class LogoutServlet extends HttpServlet {
...
}
...在其中执行退出逻辑。