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>
Javascript:
<script type="text/javascript">
function unloadEvt() {
document.location.href='/test/dataentry';
}
</script>
但是使用这个javascript无法调用我的servlet。
有错误吗?如何调用servlet?
答案 0 :(得分:14)
从原来的问题:
document.location.href="/dataentry";
网址中的前导斜杠/
会将您带到域根目录。
因此,如果包含该脚本的JSP页面正在
上运行然后您的location
网址将指向
但你确实需要
所以,相应地修复URL
document.location.href = 'dataentry';
// Or
document.location.href = '/contextname/dataentry';
// Or
document.location.href = '${pageContext.request.contextPath}/dataentry';
除此之外,函数名unloadEvt()
表示您在onunload
或onbeforeunload
期间调用该函数。如果这是真的,那么你应该寻找另一种解决方案。该请求无法保证可以到达服务器。这取决于所使用的浏览器。如何正确地解决它取决于唯一的功能要求,这个问题不明确。
答案 1 :(得分:1)
如果您使用的是jQuery,可以试试这个。这很简单:
<script>
$(window).unload(function() {
document.location.href='/test/dataentry';
});
</script>
答案 2 :(得分:0)
这可以使用ajax
完成<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "/testmail/dataentry", true);
xmlhttp.send();
}
</script>