如何从javascript调用servlet
web.xml中的Servlet配置如何从javascript调用servlet,java,javascript,jsp,servlets,Java,Javascript,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>
<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>
这是对我的J2EE组件的描述
这是我的J2EE组件的显示名称
数据输入器
com.ctn.origin.connection.DataEntry
数据输入器
/数据输入
Javascript:
<script type="text/javascript">
function unloadEvt() {
document.location.href='/test/dataentry';
}
</script>
函数unloadEvt(){
document.location.href='/test/dataentry';
}
但是使用这个javascript不能调用我的servlet
有什么错误吗?如何调用servlet?来自您最初的问题: URL中的前导斜杠
/
将带您到域根目录
因此,如果包含脚本的JSP页面正在
然后您的位置
URL将指向
但实际上你需要
因此,请相应地修复URL
document.location.href = 'dataentry';
// Or
document.location.href = '/contextname/dataentry';
// Or
document.location.href = '${pageContext.request.contextPath}/dataentry';
除此之外,函数名
unloadEvt()
表明您正在onunload
或onbeforeuload
期间调用该函数。如果这是真的,那么您应该寻找另一种解决方案。请求不保证能到达服务器。这取决于所使用的浏览器。如何正确地解决它取决于问题中不清楚的唯一功能需求。如果您使用jQuery,您可以尝试此方法。很简单:
<script>
$(window).unload(function() {
document.location.href='/test/dataentry';
});
</script>
$(窗口)。卸载(函数(){
document.location.href='/test/dataentry';
});
这可以使用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>
函数loadXMLDoc(){
var-xmlhttp;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“/testmail/dataentry”,true);
xmlhttp.send();
}
您是否尝试通过在浏览器的地址栏中键入url来加载servlet?我假设url末尾的双引号只是一个粗心的输入错误。如果是,请在您的问题中进行修正。是的,我会在提交表格和工作绩效时致电。现在我想把它称为Javascript的onunload事件,我想如果用户填写不完整的删除并关闭浏览器,那么很多细节就会进入数据库。好的,然后相应地解决它,这样您就不需要破解onunload
。如果你不能正确地解决这个问题,可以自由地提出一个新的问题,明确阐述功能需求。与window.onload=function(){…}
相比,这到底有什么区别?你使用的是onload。我指的是卸货。这将捕获卸载事件并将用户转发到/test/dataentry。这并不保证在所有浏览器中都能工作。它还取决于客户端和服务器之间的网络速度。
<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>