目录
1.4、ajax使用xmlhttprequest对象读取数据
引言
今天写项目中遇到了一个问题,就是前后数据的交互,以前不论是jsp/servlet还是框架,用到的数据交互都是最为简单基础,也不尽如人意。之前想起来学的ajax,不就是做实时异步数据交互的么,尝试着写了写,发现困难重重。因为学的内容都是用get,post获取数据,不论是xml,HTML还是json,今天借着这个机会再次学习一下ajax,也总结一下前后台数据交互有哪些方式。毕竟在开发中这也是一块重点嘛。。。
按我的理解数据交互的内容应当有如下几块:前台发送数据,解析数据,后台发送数据,解析数据
之前使用的前后台交互无外乎以下几种:
- 表单提交(前台--->后台)
- 域属性(前台<===>后台)
- xml总初始化参数(前台)
- ajax
首先,最原始的,通过form表单以post/get方式提交数据。
当你点击submit
按钮时,浏览器会默认把你在input
里面输入的数据,以post
或get
的方式提交到form表单中的action这个地址。相当于你提交表单时,就会向服务器发送一个请求,然后服务器会接受并处理提交过来的form表单,最后返回一个新的网页。
1、get提交数据:请求参数(一般为input里的值)拼装成url,相当于向服务器发url请求。
特点:请求信息封装在URL中,所有人可见,不安全,容量小,胜在速度快。
2、post提交数据:直接向服务器发请求,参数直接发给后台。
特点:请求信息封装在响应体中,安全,容量大,败在速度慢。
但是,这种方法会导致几个问题:
1、在提交时,页面会发生跳转或刷新,导致用户体验不好。
2、单项提交,把数据提交给后台,但是不知道后台会给出怎样的响应,因为提交后页面就发生跳转了。比如:用户登录,那么就不知道到底是注册成功了还是失败了。
3、浪费宽带。因为前后两个页面中的大部分HTML代码往往是相同的。但由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间,这就导致了用户界面的响应比本地应用慢的多。
为了解决上述问题,2005年出现了Ajax。
1、ajax
1、Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript+XML。
2、它是一种技术方案,但并不是一种新技术。
3、它依赖的是现有的CSS/HTML/Javascript,而其中最核心的依赖是浏览器提供的XMLHttpRequest对象。这个对象为向服务器发送请求和解析服务器响应提供了流畅的接口,使得浏览器可以发出HTTP请求与接收HTTP响应,实现在页面不刷新的情况下和服务端进行数据交互。
1.1、创建ajax
1.建立xmlHttpRequest对象
if(window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
if(xmlHttp.overrideMimeType) {
xmlHttp.overrideMimeType("text/xml");
}
} else if(window.ActiveXobject) {
var activeName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for(var i = 0; i < activeName.length; i++) {
try {
xmlHttp = new ActiveXobject(activeName[i]);
break;
} catch(e) {}
}
}
if(!xmlHttp) {
alert("创建xmlhttprequest对象失败");
} else {}
2.设置回调函数
xmlHttp.onreadystatechange= callback;
function callback(){}
3.使用OPEN方法与服务器建立连接 xmlHttp.open("get","ajax?name="+ name,true)
此步注意设置http的请求方式(post/get),如果是POST方式,注意设置请求头信息xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
4.向服务器端发送数据
xmlHttp.send(null);
如果是POST方式就不为空
5.在回调函数中针对不同的响应状态进行处理
if(xmlHttp.readyState == 4){ //判断交互是否成功
if(xmlHttp.status == 200){ //获取服务器返回的数据 //获取纯文本数据
var responseText =xmlHttp.responseText;
document.getElementById("info").innerHTML = responseText;
}
}
其中最为重要的对象便是xmlHttpRequest了,一切的操作都依赖于此对象,
xmlHttpRequest属性:
- onreadystatechange每个状态改变时都会触发这个时间处理器,通常都会调用一个JavaScript函数。
- readyState请求的状态,有五个可取指,0=未初始化,1=正在加载,2=已经加载,3=交互中,4=完成。
- responseText服务器的响应,表示为一个串,读取text格式数据。
- responseXML服务器的响应,表示为xml,这个对象可以解析为dom对象。
- status服务器的HTTP状态码(200对应OK,404对应notfount,等)。
xmlHttpRequest方法:
- abort()停止当前请求
- getAllResponseHeaders()把HTTP请求的所有响应首部作为键值对返回
- getResponseHeader("header")返回指定首部的窜值
- open("method","url")建立对服务器的调用,其中url可以是相对地址也可以是绝对地址,亦可以带参数如 xmlhttp.open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);
- send(content)向服务器发送请求
- setRequestHeader("header","value");把指定首部设置为所提供的值,在设置任何首部之前必须先调用open()
1.2、ajax事件
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
readyState存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。
0: 请求未初始化
1: 服务器连接已建立
2: 请求已接收
3: 请求处理中
4: 请求已完成,且响应已就绪
status 200: "OK"
404: 未找到页面
1.3、服务器响应格式
1.3.1、xml
优点:
- xml是一种通用的数据格式。
- 灵活。
- 利用都没可以完全掌控文档。
缺点:
- 如果文档来自于服务器,就必须保证文档含有正确的首部信息,若文档类型不正确,nameresponsexml的值将是空的。
- 当浏览器接收到较长的xml文件后,dom解析可能会很复杂。
json前台解析:
json后台解析:
1.3.2、HTML
优点
- 不必从responseText属性中读取数据,不需要用JavaScript进行解析,它已是希望的格式,可以直接将它插入到页面中。
- HTML可读性好。
- HTML代码块能与innerHTML完美结合,效率高。
缺点:
- 需要从ajax更新一篇文档的多个部分,HTML不合适,只适合整块读取。
- innerHTML并非dom标准。
json前台解析:
json后台解析:
1.3.3、json
json是一种简单的数据格式,必xml更轻巧。json是JavaScript原生格式,这意味着,JavaScript中处理json数据不需要任何特殊的api或者工具。
json数组:
json字符串
json详情可参考我的另外一篇博客:https://blog.csdn.net/sinat_37064286/article/details/86554577
优点:
json和xml很相似,但是它更加灵巧。
json不需要从服务器发送含有特定内动的首部信息。
缺点:
语法严谨。
代码不已阅读。
eval函数存在风险。
json前台解析:
json后台解析:
1.4、ajax使用xmlhttprequest对象读取数据
xml:
<script type="text/javascript">
window.onload=function () {
//1.获取到a节点,并为其添加onclick响应函数
document.getElementsByTagName("a")[0].onclick = function () {
//2.创建一个xmlhttprequest对象
var request = new XMLHttpRequest();
//3.准备发送请求的数据url
var url = this.href;
var method = "GET";
//4.调用xmlhttprequest队形的open方法
request.open(method, url);
//5.调用xmlhttprequest对象的send方法
request.send(null);
//6.为xmlhttprequest对象添加onreadystatechange响应函数
request.onreadystatechange = function () {
//7.判断响应是否完成xmlhttprequest对象的readystate属性
if (request.readyState == 4) {
//8.再判断响应函数是否 可用
if (request.status == 200 || request.status == 304) {
//9.打印响应结果,在responseText中
alert(request.responseText);
}
}
}
//0.取消a节点的默认行为
return false;
}
}
</script>
</head>
<body>
<a href="helloajax.text">HelloAjax</a>
</body>
HTML:
<script type="text/javascript">
window.onload=function () {
//1.获取到a节点,并为其添加onclick响应函
document.getElementsByTagName("a")[0].onclick = function () {
//2.创建一个xmlhttprequest对象
var request = new XMLHttpRequest();
//3.准备发送请求的数据url
var url = this.href;
var method = "GET";
//4.调用xmlhttprequest队形的open方法
request.open(method, url);
//5.调用xmlhttprequest对象的send方法
request.send(null);
//6.为xmlhttprequest对象添加onreadystatechange响应函数
request.onreadystatechange = function () {
//7.判断响应是否完成xmlhttprequest对象的readystate属性
if (request.readyState == 4) {
//8.再判断响应函数是否 可用
if (request.status == 200 || request.status == 304) {
//1.结果为xml格式,需要使用responsexml属性来获取
var result=request.responseXML;
//2.因为为xml格式,不能直接获取,需要创建对应节点,再把节点加到目标中。
var to=result.getElementsByTagName("to")[0].firstChild.nodeValue;
var from=result.getElementsByTagName("from")[0].firstChild.nodeValue;
var heading=result.getElementsByTagName("heading")[0].firstChild.nodeValue;
var body=result.getElementsByTagName("body")[0].firstChild.nodeValue;
alert(to);
alert(from);
alert(heading);
alert(body);
document.getElementById("mubiao").innerText=to;
document.getElementById("mubiao").innerText=heading;
//document.getElementById("mubiao").innerHTML=from;
}
}
}
//0.取消a节点的默认行为
return false;
}
}
</script>
</head>
<body>
<a href="jony.xml">HelloAjax</a>
<div id="mubiao"></div>
</body>
json:
由于jQuery封装了ajax,提供了更为方便简单的.get、.get、.post、.getJSON、.getJSON、.ajax
所以呢下面重点来介绍以上几个方法怎么实现数据交互,以及前后台接受和解析
先简单简绍一下这几个方法的使用,然后在将前后台接受和解析分为四个模块来应对日常使用
2、jQuery中使用ajax
2.1、函数解释
jQuery.load():使用load方法从服务器加载数据
jQuery.get() :使用 HTTP GET 请求从服务器加载数据
jQuery.post():使用 HTTP POST 请求从服务器加载数据
jQuery.getJSON():使用 HTTP GET 请求从服务器加载 JSON 编码数据
jQuery.ajax():执行异步 HTTP (Ajax) 请求
0.jQuery.load()
---------读取数据:
<script type="text/javascript">
$(document).ready(function(){
$("#mybutton").click(function(){
$("#mydiv").load("haha.txt",function(responseTxt,statusTxt,xhr){
if(statusTxt=="success"){
alert("成功");
}
if(statusTxt=="error"){
alert("失败:"+xhr.status+":"+xhr.statusTxt);
}
});
});
})
</script>
下面的例子把 "demo_test.txt" 文件中 id="p1" 的元素的内容, 加载到指定的 <div> 元素中: 实例: $("#div1").load("demo_test.txt #p1");
1.jQuery.get()
$(selector).get(url,data,success(response,status,xhr),dataType)
url | 必需。规定将请求发送的哪个 URL。 |
data | 可选。规定连同请求发送到服务器的数据 |
success(response,status,xhr) | 可选。规定当请求成功时运行的函数。 额外的参数:
|
dataType | 可选。规定预计的服务器响应的数据类型。 默认地,jQuery 将智能判断。 可能的类型:
|
简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。
例子:
$.get(
"product?type=111",{
id: '123',
name: '青藤园',
},function(data,state){
//这里显示从服务器返回的数据
alert(data);
//这里显示返回的状态
alert(state);
}
)
该函数是简写的 Ajax 函数,等价于:
$.ajax({
url: url,
data: data,
success: success,
dataType: dataType
});
--------读取数据
$(document).ready(function(){
$("#mybutton").click(function(){
$.get("haha.txt",null,function(data,status){
alert(data+":"+status);
});
});
});
</script>
2.jQuery.post()
post() 方法通过 HTTP POST 请求从服务器载入数据
这个方法和$.get()用法差不多,唯独多了一个type参数,那么这里就只介绍type参数吧,其他的参考上面$.get()的。
type:type为请求的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就和$.get()返回的格式一样,都是字符串的。
jQuery.post(url,data,success(data, textStatus, jqXHR),dataType)
url | 必需。规定把请求发送到哪个 URL。 |
data | 可选。映射或字符串值。规定连同请求发送到服务器的数据 |
success(data, textStatus, jqXHR) | 可选。请求成功时执行的回调函数 |
dataType | 可选。规定预期的服务器响应的数据类型。 默认执行智能判断(xml、json、script 或 html) |
默认执行智能判断(xml、json、script 或 html)。
$.post(
"product?type=111",{
id: '123',
name: '青藤园',
},function(data,state){
//这里显示从服务器返回的数据
alert(data);
//这里显示返回的状态
alert(state);
},
"json"
)
<script type="text/javascript">
$(document).ready(function() {
$("#mybutton").click(function() {
$.post("/Json/JsonServlet", {
name:"我是谁",
age:12
}, function(data, status) {
alert(data + ":" + status);
});
});
});
</script>
该函数是简写的 Ajax 函数,等价于:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
3.jQuery.getJSON()
使用 AJAX 请求来获得 JSON 数据,并输出结果
函数没有type参数,返回的是json类型的,不需要转换。
jQuery.getJSON(url,data,success(data,status,xhr))
url | 必需。规定将请求发送的哪个 URL。 |
data | 可选。规定连同请求发送到服务器的数据。 |
success(data,status,xhr) | 可选。规定当请求成功时运行的函数。 额外的参数:
|
<script type="text/javascript">
$(document).ready(function() {
$("#mybutton").click(function() {
$.getJSON("JsonServlet", {
name:"我是谁",
age:12
}, function(json) {
alert(json.name);
$("#mydiv").html(json.name);
});
});
});
</script>
该函数是简写的 Ajax 函数,等价于:
$.ajax({
url: url,
data: data,
success: callback,
dataType: json
});
返回的就直接是json格式的对象,无需JSON.parse的方法转换
从 test.js 载入 JSON 数据并显示 JSON 数据中一个 name 字段数据:
$.getJSON("test.js", function(json){
alert("JSON Data: " + json.users[3].name);
});
相同的最终传递给前台的时候都默认以字符串的形式传递过去,
注意的是除了getJSON方式 前台可以使用两种方式来将字符串转换成js对象:
1. eval()函数 :不推荐,有隐患 会执行其他js操作
2. JSON.parse()函数 :推荐:只执行对象转换操作
4.jQuery.ajax()
执行异步 HTTP (Ajax) 请求
该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,$.ajax() 可以不带任何参数直接使用。
注意:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。
jQuery.ajax([settings])
settings 可选。用于配置 Ajax 请求的键值对集合。
可以通过 $.ajaxSetup() 设置任何选项的默认值。
具体该方法的参数可以观看另外一篇博客:https://www.cnblogs.com/tylerdonet/p/3520862.html
通过 AJAX 加载一段文本:
//jQuery 代码:
<script type="text/javascript">
$(document).ready(function() {
$("#mybutton").click(function() {
$.ajax({
url : "/Json/JsonServlet",
type : "POST",
async : true,
dataType : "json",
data : {
name : "前台数据",
age : 12
},
success : function(result) {
$("#mydiv").html(result.name);
},
error : function(xhr) {
alert("错误提示: " + xhr.status + " " + xhr.statusText);
}
});
});
});
</script>
//HTML 代码:
<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button id="b01" type="button">Change Content</button>
最后一种方式是依附于表单:表单的局部刷新
序列化表单方法:
serialize():将表单内容序列化成一个字符串。
serializeArray():将表单内容序列化成一个对象数组
这里只介绍:serialize()
看script:
<script type="text/javascript">
$(document).ready(function() {
$("#mybutton").click(function() {
//var frm=$("#form1").serializeArray();
var frm = $("#form1");
$.ajax({
url : frm.attr("action"),
type : frm.attr("method"),
async : true,
data : frm.serialize(),
//var data=$("#form1").serializeArray();
success : function(data) {
alert("ok");
},
error : function(data) {
alert(data.status);
}
});
});
});
</script>
form表单:
<form id="form1"
action="${pageContext.request.contextPath}/ClassServlet" method="POST">
<input type="text" name="name" /> <input type="password"
name="password" /> <input type="button" id="mybutton" value="点我" />
</form>
注意:
使用:serialize()
这时表单的按钮的type不可以是submit,否则自提交数据,
也就是自动刷新; 用Ajax的serialize()提交表单,
如果input的type为submit,提交时就会自动刷新,
所以,用serialize()提交表单的时候最好把type改为button.这里呢如果是验证账号是否存在等可以使用submit。。
2.2、区别
- GET - 从指定的资源请求数据,发送至服务器的key/value数据会作为QueryString附加到请求URL中,服务器返回数据的格式其实是字符串形式,并不是我们想要的json数据格式
- POST - 向指定的资源提交要处理的数据,这个函数跟.get()参数差不多,多了一个type参数,type为返回的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就和.get()参数差不多,多了一个type参数,type为返回的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就和.get()返回的格式一样,都是字符串的
- getJSON-使用 AJAX 请求来获得 JSON 数据,使用JSON相比传统的通过 GET、POST直接发送“裸体”数据,在结构上更为合理,也更为安全。至于jQuery的getJSON()函数,只是设置了JSON参数的
- ajax()函数的一个简化版本。这个函数也是可以跨域使用的,相比get()、post()有一定优势。另外这个函数可以通过把请求url写 成”myurl?callback=X”这种格式,让程序执行回调函数X。
- ajax()-$.ajax() 返回其创建的 XMLHttpRequest 对象
3、$.ajax()日常案例
//1.$.ajax带json数据的异步请求
var aj = $.ajax( {
url:'productManager_reverseUpdate',// 跳转到 action
data:{
selRollBack : selRollBack,
selOperatorsCode : selOperatorsCode,
PROVINCECODE : PROVINCECODE,
pass2 : pass2
},
type:'post',
cache:false,
dataType:'json',
success:function(data) {
if(data.msg =="true" ){
// view("修改成功!");
alert("修改成功!");
window.location.reload();
}else{
view(data.msg);
}
},
error : function() {
// view("异常!");
alert("异常!");
}
});
//2.$.ajax序列化表格内容为字符串的异步请求
function noTips(){
var formParam = $("#form1").serialize();//序列化表格内容为字符串
$.ajax({
type:'post',
url:'Notice_noTipsNotice',
data:formParam,
cache:false,
dataType:'json',
success:function(data){
}
});
}
//3.$.ajax拼接url的异步请求
var yz=$.ajax({
type:'post',
url:'validatePwd2_checkPwd2?password2='+password2,
data:{},
cache:false,
dataType:'json',
success:function(data){
if( data.msg =="false" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间
{
textPassword2.html("<font color='red'>业务密码不正确!</font>");
$("#validatePassword2").val("pwd2Error");
checkPassword2 = false;
return;
}
},
error:function(){}
});
//4.$.ajax拼接data的异步请求
$.ajax({
url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',
type:'post',
data:'merName='+values,
async : false, //默认为true 异步
error:function(){
alert('error');
},
success:function(data){
$("#"+divs).html(data);
}
});
需要注意的是:后台导入的json jar包为import net.sf.json.JSONObject; import org.json.JSONArray.*;
4、前台提交数据
前面讲的几乎都是ajax提交数据,包含了$.ajax()表单序列化提交,实时验证用户账号是否存在,以及各种方法提交数据。
还可以使用<a href="xxx.xxx?username='liufukin'">请求服务器</a>
5、前台获取数据
获取到三种数据格式--->解析( json数组,json对象,多个json对象,其他格式数据)--->输出
前台获取数据也就是在ajax success方法中获取data并执行相关操作,这里先将json格式数据,以后再补充其他格式数据^_^。
json数组:
JSONArray jsonArray2 = JSONArray.fromObject( list );(其中list为后台要返给前台的数据)
传回来的json数组,前台可以通过以下方法获取数据
data[0].username+" " + data[0].password
也可以通过$.each来遍历json数组
success: function (data ,textStatus, jqXHR)
{
var datas = eval(data);//将msg化为数组
var num = 1;
$.each(datas, function (num) {
//alert(data[num].userName);
var id = datas[num].id;//注意要与实体类中的名称相同
var Name = datas[num].name;
var publicHouse = datas[num].publicHouse;
var publicDate = datas[num].publicDate;
var author = datas[num].author;
var description = datas[num].description;
var price = datas[num].price;
//alert(id,Name,publicDate,publicHouse,author,description,price);
var value = "<tr><td align='center'><input name='checked' type='checkbox' value=" + id + "/></td>";
value += "<td align='center'>" + Name + "</td> <td align='center'>" + Name + "</td> <td align='center'>" + publicHouse + "</td> <td align='center'>" + publicDate + "</td><tr/>";
$("#tb").append(value);//写入到id为tb的html部分
});
},
还可以
success:function(data){
var i=0;
for(var libiary in data){
alert(data[i].author+":"+data[i].price);
i++;
}
},
body标签内容:
<table id="tb" width="80%" border="1" cellspacing="0" cellpadding="0" align="center" >
<tr>
<%-- <th align="center"><input name="checked" type="checkbox" /></th>--%>
<th align="center">ID</th>
<th align="center">Name</th>
<th align="center">Password</th>
<th align="center">Phone</th>
<th align="center">Address</th>
</tr>
</table>
其中标签有一些出入,自己改一下就好了O(∩_∩)O哈哈~
json对象:
后台代码:
JSONObject object = new JSONObject(); //创建Json对象
object.put("username", "张三"); //设置Json对象的属性
object.put("password", "123456");
System.out.println(object.toString()); //调用toString方法将json对象转换成json字符串
//把json数据返回给浏览器:
resp.setContentType("application/json; charset=utf-8");
PrintWriter out = resp.getWriter();
JSONArray ja=JSONArray.fromObject(libiaries);
out.print(ja);
//或者
response.getWriter().write(jsonObject.toString());
前台代码:(单个对象)
success: function(result){
var newData = JSON.stringify(result); //将json对象转换为字符串
newData = eval("("+newData+")"); /解析json
var annualDays = newData.annualDays;
var entryDate = newData.entryDate;
$("input[name='extendDataFormInfo.value(fd_shengyu_nianjia)']").val(annualDays);
$("input[name='extendDataFormInfo.value(fd_ruzhi_date)']").val(entryDate);
}});
所有现代浏览器都支持 JSON 对象,有两个非常有用的方法来处理 JSON 格式的内容:
- JSON.parse(string) :接受一个 JSON 字符串并将其转换成一个 JavaScript 对象。
- JSON.stringify(obj) :接受一个 JavaScript 对象并将其转换为一个 JSON 字符串。
-
var json = eval("("+data+")");接受一个 JSON 字符串并将其转换成一个 JavaScript 对象。
多个json对象:
后台
resp.setContentType("charset=utf-8");
resp.setCharacterEncoding("utf-8");
JSONObject object = new JSONObject(); //创建Json对象
object.put("username", "张三"); //设置Json对象的属性
object.put("password", "123456");
object.put("username1","张思");
object.put("password1","1314");
System.out.println(object);
System.out.println(object.toString()); //调用toString方法将json对象转换成json字符串
//把json数据返回给浏览器:
resp.getWriter().write(object.toString());
前台获取json字符串,转换成json对象并输出
success:function(data){ alert("hello"); var json = eval("("+data+")"); //var json=JSON.parse(data); alert(json); for(var js2 in json){ alert( js2+"="+json[js2]); } },
6、后台获取数据
这里呢可以细分为从前台传来的数据,从资源文件中获取数据。
从前台获取去传来的数据,直接用getParameter("ParamName")或者获取域属性以及xml中初始化参数。。
从资源文件中获取数据呢使用Properties,FileInputStream类,直接看一个案例吧
//private static final String dbconfig = "./src/main/java/utils/dbconfig.properties";
private static final String dbconfig = "E:/Tomcat9.0/apache-tomcat-9.0.14/webapps/shopping/WEB-INF/classes/resource/dbconfig.properties";
private static Properties prop = new Properties();
static {
try {
// InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(dbconfig);
FileInputStream in=new FileInputStream(dbconfig);
prop.load(in);
Class.forName(prop.getProperty("driverClassName"));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(prop.getProperty("url"), prop.getProperty("username"), prop.getProperty("password"));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
7、后台发送数据
1、
resp.setContentType("application/json; charset=utf-8");
PrintWriter out = resp.getWriter();
JSONArray ja=JSONArray.fromObject(libiaries);
out.print(ja);
其中libiaries是一个list数据。。
2、
response.setContentType("application/json; charset=utf-8");也可以不实用返回的是字符串
PrintWriter out = cu.getWriterOut(response);
out.print(object.toString());
//或者
response.getWriter().write(jsonObject.toString());
其实这两个方法都是同一个原理,大家做个参考就好了。。。
8、总结
其中感觉还有好多地方没有完全讲清楚,以后有机会更新。。。
参考了:
https://blog.csdn.net/qq_36140085/article/details/81567592
https://blog.csdn.net/huileiforever/article/details/12163385