今天做Ajax异步提交访问Servlet的例子,做了很久,一直访问不到,后来发现原来是Web.xml中没有配置servlet,晕死了···做个标记:
功能:点击提交按钮,获得servlet里的内容并显示
<script type="text/javascript">
var xmlHttpRequest = null; //声明一个空的对象以接受XMLHttpRequest对象
function ajaxRequest() {
if(window.ActiveXObject) { //IE的
xmlHttpRequest = new ActionXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest) { //除IE外的
xmlHttpRequest = new XMLHttpRequest();
}
if(xmlHttpRequest != null) {
xmlHttpRequest.open("GET", "AjaxServlet", true);
//关联好ajax的回调函数
xmlHttpRequest.onreadystatechange = ajaxCall;
//真正向服务器发送请求
xmlHttpRequest.send();
}
}
function ajaxCall() {
if(xmlHttpRequest.readyState == 4 ) { //完全得到服务器的响应
if(xmlHttpRequest.status == 200) { //没有异常
var text = xmlHttpRequest.responseText;
document.getElementById("div1").innerHTML = text;
}
}
}
</script>
Java类要继承HttpServlet这个类
public class AjaxServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
System.out.println("doGet invoked!");
out.println("Hello World");
out.flush();
}
}
最后配置Web.xml,要不然是访问不到的
<servlet>
<servlet-name>AjaxServlet</servlet-name>
<servlet-class>ajaxTest.AjaxServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AjaxServlet</servlet-name>
<url-pattern>/AjaxServlet</url-pattern>
</servlet-mapping>
结果是点击提交按钮后显示“Hello World”