- 用Ajax发送异步请求到Servlet,用谷歌浏览器调试 不是404 not find就是返回一个500的状态码(内心是崩溃的)
状态码为404 解决思路如下
进入web.xml检查Servlet信息的配置
例如:新建了一个Se1414080902225Servlet.java的Servlet,
这时我们需要进入web.xml里对Servlet的访问地址进行配置
<web-app>
<servlet>
<servlet-name>Se1414080902225Servlet</servlet-name>
<display-name>This is the display name of my J2EE component</display-name>
<description>This is the description of my J2EE component</description>
<servlet-class>edu.hzu.javaweb.labs.se1414080902225.Se1414080902225Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Se1414080902225Servlet</servlet-name>
<url-pattern>/Se1414080902225Servlet</url-pattern>
</servlet-mapping>
</web-app>
在这边配置好了以后基本就不会出现状态码为404的情况了!
- 状态码500情况我了解的情况也不多,可能有如下原因:
1. 写的Servlet程序没有放在src资源包下
2. Servlet程序里出现了异常
对于写的Servlet程序没有放在src资源包下检查的方向:
使用MyEclipse作为开发工具,Tomcat作为Web服务器,项目一般部署在Tomcat下的webapps的目录下。具体来说主要用两种部署的路径:
一是将web项目中的webRoot下的文件直接拷贝到webapps/ROOT下;
另一种方法在Tomcat下的webapps中自动创建了以项目名称命名的文件夹,
并将整个项目所实用到的文件复制过去。在Tomcat安装目录下的webapps下自动创建的文件夹里我们可以看到Servlet类生成的.class文件。
对于第一部署方法,request.getContextPath()的返回值为空(即:"",中间无空格,注意区分null)。
可以使用 request.getContextPath()方法获取返回值为:/创建的文件夹的名称
- request.getParameter( )方法获取Ajax传送的数据一直为null的问题
使用JQuery的Ajax的 post 请求
$(document).ready(function() {
$('#subm').click(function(event){
event.preventDefault();
var grades=
{
"离散数学":$("#subject4").val(),
"汇编语言":$("#subject6").val(),
"大学英语4":$("#subject2").val(),
"公共体育4":$("#subject3").val(),
"数据库系统概论":$("#subject8").val(),
"计算机组成原理":$("#subject5").val(),
"马克思主义基本原理":$("#subject7").val(),
"数据库系统课程设计":$("#subject1").val()
};
$.ajax(
{
type: "POST",
url: "Se1414080902225Servlet",
data: grades,
dataType:'json',
success:function(data){
alert(data.result);
},
error:function(data){
alert(data.result);
},
});
});
});
jquery在执行post请求时,默认会设置Content-Type为application/x-www-form-urlencoded。
如果我们显式设置了Content-Type为其它类型,而不是application/x-www-form-urlencoded,
POST 请求是不会解析表单数据来放到 request parameter map 中,
所以通过 request.getParameter(name) 是获取不到想要的结果,所有调试时会发现 getParameter() 方法获取的结果一直为 null。
感谢以下两位博主的博客:
关于JQuery的Ajax发送post请求与原生Ajax发送post请求的区别
http://blog.csdn.net/mhmyqn/article/details/25561535
关于web应用程序部署到Tomcat的详解
http://blog.sina.com.cn/s/blog_6cbe0cff0101j6jl.html