之前没什么基础就直接学了框架,对这方面没什么经验,今天废了一天的时间才算是搞明白一些事情。
1、request.setAttribute()与getAttribute()方法用来传值的一些问题.具体参见链接 https://www.cnblogs.com/JanaChen/p/4790649.html
request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest。在客户端发出每个请求时,服务器都会创建一个request对象,并把请求数据封装到request中,然后在调用Servlet.service()方法时传递给service()方法,这说明在service()方法中可以通过request对象来获取请求数据。
request的功能可以分为以下几种:
- 封装了请求头数据;
- 封装了请求正文数据,如果是GET请求,那么就没有正文;
- request是一个域对象,可以把它当成Map来添加获取数据;
- request提供了请求转发和请求包含功能。
response是响应对象,向客户端输出响应正文(响应体)可以使用response的响应流,repsonse一共提供了两个响应流对象:
- PrintWriter out = response.getWriter():获取字符流;
- ServletOutputStream out = response.getOutputStream():获取字节流;
当然,如果响应正文内容为字符,那么使用response.getWriter(),如果响应内容是字节,例如下载时,那么可以使用response.getOutputStream()。
注意,在一个请求中,不能同时使用这两个流!也就是说,要么你使用repsonse.getWriter(),要么使用response.getOutputStream(),但不能同时使用这两个流。不然会抛出IllegalStateException异常。
2、form表单是自动提交数据,ajax是可以自己选择提交,当要局部刷新页面的时候,选择的是ajax。以下代码进行解析;
//前端部分
$(document).ready(function(){
$("#form").on('submit',function (e) {
e.preventDefault();//取消事件的默认动作,也就是取消form表单的自动提交功能
//alert($("#text").val());可以通过这个方法获取input的value值
$.ajax({
//url:"http://localhost:8080/Ajax/index.jsp?bk_id="+$("#text").val(),//通过url传值,还有data方法,目前只考虑到了url,缺点不安全
url:"http://localhost:8080/loc/test",//url是你的servlet管理页面的url,不是传给这个servlet的url,具体可以看web.xml文件里边关于servlet-mapping映射路径
type:"post",//post与get两种方法
dataType:"json",
/*json格式
JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
*/
data:{},
success:function (data) {
var html = "<tr><td>"+data[0]+"</td> <td>"+data[0]+"</td> <td>"+data[2]+"</td> </tr>";
$("#t").append(html);
},
error:function(){
alert("error");
}
});
});
});
//后端部分
String[] s = {"1","2","3"};
response.getWriter().write(new Gson().toJson(s));
//gson
Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等
主要解析 两种格式 列表格式 和 map格式
总结
今天混淆了request与response,具体区别这边不重复,在前文有,今天也一直纠结在request.getAttribute上,想要
获得服务器的反馈,需要用到response的输出流来写,这点要注意,关于ajax更多的方面现在还在摸索,希望明天能有其他的收获,
今天看到一个不刷新页面的方法iframe,其实这个是内嵌一个页面,并不是真的不刷新页面,这边进行一个说明。