如何从javascript调用servlet

che*_*tan 3 javascript java jsp servlets

web.xml中的Servlet配置

<servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>DataEntry</servlet-name>
    <servlet-class>com.ctn.origin.connection.DataEntry</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>DataEntry</servlet-name>
    <url-pattern>/dataentry</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

Javascript:

<script type="text/javascript">
    function unloadEvt() {

        document.location.href='/test/dataentry';

    }
</script>
Run Code Online (Sandbox Code Playgroud)

但是使用这个javascript无法调用我的servlet.

有什么错误吗?如何调用servlet?

Bal*_*usC 14

从你原来的问题:

document.location.href="/dataentry";
Run Code Online (Sandbox Code Playgroud)

/URL中的前导斜杠将带您进入域根目录.

因此,如果运行包含该脚本的JSP页面

HTTP://本地主机:8080/CONTEXTNAME/page.jsp

然后你的locationURL将指向

HTTP://本地主机:8080 /的DataEntry

但你真的需要

HTTP://本地主机:8080/CONTEXTNAME /的DataEntry

因此,请相应地修复URL

document.location.href = 'dataentry';
// Or
document.location.href = '/contextname/dataentry';
// Or
document.location.href = '${pageContext.request.contextPath}/dataentry';
Run Code Online (Sandbox Code Playgroud)

除此之外,函数名称unloadEvt()表明你在onunload或期间调用函数onbeforeunload.如果这是真的,那么你应该寻找另一种解决方案.请求无法保证到达服务器.这取决于所使用的浏览器.如何正确地解决它取决于唯一的功能要求,这个问题不明确.