一、在eclipse中创建java web项目
记得创建时点next添加web.xml文件,配置请求的数据需要写入到web.xml文件中
1、添加servlet.jar包
servlet-api.jar servlet.jar
2、创建请求处理Action类
创建action类,这个类继承HttpServlet ,添加版本号,并重写service/doGet/doPost方法,service可以处理get/post方式提交的请求,所以一般都是直接重写service方法,
3、状态分发原理
在提交请求时给定参数state,由state来指定请求进入到service方法后具体执行的请求处理方法,从而实现同一个请求使用不同参数实现同一模块的不同功能。
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String state=req.getParameter("state");
if(state.equals("test")){
this.test(req, resp);
}
else if(state.equals("login")){
this.login(req, resp);
}
}
4、请求配置
ajax1
com.lattice.ajax01.Ajax
ajax1
/ajax
二、向前台返回数据
1、将数据存储到request作用域中
2、将数据存储在session作用域中
HttpSession session=req.getSession();
存储在request或session作用域中的数据都可以在前台通过C标签(将在下一篇博文中演示)或者S标签来获取,当然,也可以写java代码获取,但是这样写的话会使得jsp文件中大量存在java代码,导致后期难以维护和修改。
3、在处理ajax请求时,需要创建out对象,并且一般想前台传递的是json或者json数组
PrintWriter out=resp.getWriter();
同时此处贴出Ajax的一个例子(包含js原生实现和jquery实现):
js原生实现ajax
js原生实现Ajax
//源生态的JS代码完成Ajax操作(动态无刷新),异步提交。
//ActiveXObject("microsoft.XMLHTTP");
var request=new XMLHttpRequest();//针对非IE浏览器
var url="<%=path%>/ajax";//url 表示请求提交的路径 URL统一资源定位符 URI 统一资源描述符
request.open("post",url,true);//准备打开一个ajax请求
request.setRequestHeader("content-type","application/x-www-form-urlencoded");
request.send("state=test&user=lattice");//方式ajax请求 get方式不能传递参数 。
//onreadystatechange 表示判断状态是否发生改变 。
request.onreadystatechange=function (){
//readyState 表示相应状态 4表示相应完成
if(request.readyState==4){
var span=document.getElementById("span1");
//之后交互完成之后 才可以接受数据 。request.responseText 接受数据
var values=request.responseText;//responseText;
var newJsons=eval(values);
span.innerHTML+="
"+newJsons[0].name+newJsons[0].age;
//span.innerHTML+=values[0].name+values[0].age+"
";
}
};
jquery Ajax 实现:
$.ajax({
type: "POST",
url: "<%=path %>/activity",
data: "state=queryExecution&activity_id="+$("#execution_activity_id").val(),
dataType : "json",
success: function(msg){
//alert(msg);
var jsons=eval(msg);
//jquery遍历数组
$.each(jsons,function(index,item){
$("#activity_num").val(item.activity_num);
});
}
});