jsp跳转到servlet问题
jsp代码如下
<script language="javascript" src="js/AjaxRequest.js"></script>
<script language="javascript">
timer = window.setInterval("getNewMessage()",3000);
window.onload=function(){
getNewMessage()
}
function getNewMessage(){
var loader1=new net.AjaxRequest("MessageNew?action=queryuserComplaint&nocache="+new Date().getTime(),deal_getNewMessage,onerror,"GET");
}
function deal_getNewMessage(){
document.getElementById("MessageNew").innerHTML=this.req.responseText;
}
</script>
<span id="MessageNew">正在获取用户投诉信息......</span>
XML如下
<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>MessageNew</servlet-name>
<servlet-class>com.xinghua.property.servlet.MessageNew</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MessageNew</servlet-name>
<url-pattern>/MessageNew</url-pattern>
</servlet-mapping>
servlet应该没错,因为把jsp页面调到webroot下可以调用servlet,求大神帮忙,我觉得主要是黄色字体出错,怎么样才能从文件夹下的一个jsp跳转到servlet? 展开
JSP跳转Servlet出现问题一般都是因为路径写得不对,路径分绝对路径和相对路径两种,在同一个WebAPP下,二者区别是前者的第一个字符有斜杠"/",后者不写而直接写路径,可以用..这些字符来移动位置。
比较保险的解决方法是用绝对路径,这样不会出错,特别是在JSP移动位置时候。
比如说你的JSP在当前WebAPP的webroot\jsp\下,而你的Servlet在web.xml里映射的<url-pattern>里写的是/servlets/admin/adminServlet(注意<url-pattern>里的第一个斜杠/表示是相对与当前Web工程的webroot的),那么:
1)你在JSP里面用的这个servlet的绝对路径应该是
<%=request.getContextPath%>/servlets/admin/adminServlet
或者用EL表达式写就是
${pageContext.request.contextPath }/servlets/admin/adminServlet
这里<%=request.getContextPath%>或${pageContext.request.contextPath }都是当前WebAPP的上下文地址(Web Context Path),比如你工程名是web1,默认就是/web1
2)JSP里面用的这个servlet的相对路径写法应该是
../servlets/admin/adminServlet
注意前面的两个点,意思是先让你webroot\jsp\下的这个JSP路径移动到webroot根目录下,然后再去找servlet。
var loader1=new net.AjaxRequest("MessageNew?action=queryuserComplaint&nocache="+new Date().getTime(),deal_getNewMessage,onerror,"GET");
里面的servlet路径改成"../MessageNew?............"
或者把你servlet的mapping改成/admin/MessageNew