为jsp / servlet配置web.xml

时间:2014-05-02 06:12:37

标签: jsp servlets

这是我的Web应用程序的结构

Webcontent
-Admin
--1.jsp
--2.jsp
-User
--1.jsp
--2.jsp
-login.jsp

这是我的web.xml文件

 <servlet>
    <servlet-name>resolve_subject</servlet-name>
    <servlet-class>teacher_select.resolve_subject</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>resolve_subject</servlet-name>
    <url-pattern>/resolve_subject</url-pattern>
  </servlet-mapping>

这就是我从1.jsp

调用我的servlet的方式
function showCity(str){
  if (typeof XMLHttpRequest != "undefined"){
    xmlHttp= new XMLHttpRequest();
    }
  else if (window.ActiveXObject){
    xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
    }
  if (xmlHttp==null){
  alert("Browser does not support XMLHTTP Request");
  return;
  } 
  var url="resolve_subject";
  url +="?count=" +str;
  xmlHttp.onreadystatechange = stateChange1;
  xmlHttp.open("GET", url, true);
  xmlHttp.send(null);
  }

但是我收到以下错误 enter image description here

1 个答案:

答案 0 :(得分:0)

这是非常期待的。您的servlet映射到/resolve_subject。这意味着它是您的webapp的根源。因此,其绝对URL为/qmsnew/resolve_subject。但是你试图通过相对路径从/admin下的JSP访问它,导致/qmsnew/admin/resolve_subject的绝对路径。

您的网址应该是

var url = "../resolve_subject";

或,

var url = "${pageContext.request.contextPath}/resolve_subject";

或使用JSTL:

var url = "<c:url value='/resolve_subject' />";

附注:pleasue尊重Java命名约定。课程是CamelCased。因此,您的servlet应命名为ResolveSubject