如何调用servlet?

时间:2012-07-12 09:31:09

标签: java servlets

我在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?

请帮帮我。

3 个答案:

答案 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 {
    ...
}

...在其中执行退出逻辑。