jsp 用AJAX与servlet通信的url怎么填的问题

这是配置文件的部分:
<servlet>
<servlet-name>SManageOwner</servlet-name>
<servlet-class>commonServlets.SManageOwner</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>SManageOwner</servlet-name>
<url-pattern>/servlet/SManageOwner</url-pattern>
</servlet-mapping>

这是JS部分:
$.ajax({
type:"POST",
url:"/项目名!!!/servlet/SManageOwner",
data:{'action':action},
dataType:"html",
error:function(){
alert("ajax载入失败");
},
success:function(html){
$("#displayArea").empty();
$("#displayArea").html(html);
}
});

问题就是为什么每次都要在$ajax()的url那里 填上项目名才正确,能不能有什么方法减少这种耦合... 新手.财富只有5..各位大侠拔刀相助啊...

<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>QueryServlet</servlet-name> //这个QueryServlet 和下面那个对应
<servlet-class>servlet.QueryServlet</servlet-class> //sevlet 的路径.
</servlet>

<servlet-mapping>
<servlet-name>QueryServlet</servlet-name>
<url-pattern>/QueryServlet</url-pattern>
</servlet-mapping>

页面上:$.ajax({
data:'',
url:‘QuerySevlet’, //这里和web.xml里面相同
type:'post',
dataType:'json',
success: function(data){
setInfo(data);
},
error:function(data){
alert('错误');
}追问

恩 按你说的写 url:‘QuerySevlet’ 是404错误 写 url:‘/QuerySevlet’ 则是400错误
如果是 绝对路径 url:‘/项目名/QuerySevlet’就正常 为什么?...

追答

你一定要清楚,我上面每个QueryServlet 的意思.

QueryServlet
/QueryServlet //这个就是你在页面访问的

看你的代码,你在页面上访问是可以通过
servlet/SManageOwner 来就可以了,并不一定要绝对路径.

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-07
jsp页面中有段代码 String path = request.getContextPath()获得工程名,
String basePath = request.getScheme()+"://"+request.getServletName()+":"request.getServletPort()+path+"/"
这段代码不删除的话不用加上工程名,而且Servlet配置web.xml文件时不用加工程名,但是引用的类路径必须正确,不能重名
第2个回答  2011-12-04
在jsp中可以通过 String path = request.getContextPath()获得工程名,这样工程名改了也不会有影响的 ,一般在servlet里的url一般采用下面的方式来写:
String basePath = request.getScheme()+"://"+request.getServletName()+":"request.getServletPort()+path+"/"追问

一定要写工程名加上里面的值,还是只写
的值? 为什么书上只说写的值,可是老是出错...??而加上工程名就可运行?

追答

工程名当然一定要写得咯

第3个回答  2011-12-04
听说需要用ajax,我研究了一段时间,代码熟悉了一些。但是如果实现表单值的//servlet中只要用response对象打印相应信息即可 这个例子很明白了 用
相似回答