您的位置:首页 > Web前端 > JavaScript

jsp+servlet三、以servlet理解服务端请求处理与请求的状态分发

2017-03-11 15:43 274 查看

一、在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、请求配置

ajax1com.lattice.ajax01.Ajaxajax1/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);
});
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ajax servlet
相关文章推荐