Ajax——的概念、get请求和post请求

1.Ajax的概念

Ajax是一种在无需加载整个网页的情况下,能够更新部分网页的技术。
Ajax=异步 js和XML
Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,ajax可以使网页实现异步更新,这意味着可以在不用重新加载整个页面的情况下,对网页的某部分进行更新。传统的网页如果需要更新内容,必须加载整个页面。

2.XMLHttpRequest对象

XMLHttpRequest 是Ajax的基础,所有现代浏览器均支持XMLHttpRequest对象(IE5和IE6使用ActiveXObject)。
XMLHttpRequest用于在后台与服务器交换数据。这意味着可以在不重新加载整个页面的情况下,对网页的某部分进行刷新。

XMLHttpRequest的使用流程

1.创建XMLHttpRequest对象
2.请求(同步或异步请求)
3.响应

Request的open方法

open(method,url,async)
规定请求的类型,URL以及是否是异步处理请求
method:请求的类型,get或者post
URL:文件在服务器上的位置
async:true(异步)或者false(同步)
默认方法是异步的,也就是开子线程,同步方法已经被废弃,不能再用。
send(string)
将请求发送到服务器
string:参数用于post请求,也就是get请求不需要传string参数

案例:get请求登录

1.以前的servlet方式登录

创建jsp登录页面LoginServlet

<form action="${pageContext.request.contextPath}/LoginServlet">
用户名:<input type="text" name="username"><br>
密码:<input type="password" type="password" name="password"><br>
<input type="submit" value="登录">
</form>

创建登录servlet

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet{
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String username=request.getParameter("username");
String password=request.getParameter("password");
if("szl".equals(username)&&"123".equals(password)){
response.getWriter().write("success");
}else{
response.getWriter().write("failure");
}
}
}

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
doGet(request,response);
}

2.Ajax登录,servlet和前面一样,就不写了

创建jsp登录页面LoginServlet

<script type="text/javascript">
//js登录方法
function login(){
//使用ajax往servlet发送get请求
//1.获取表单数据
var username=document.getElementById('username').value;
var password=document.getElementById('password').value;
//2.拼接表单数据
var params='username'+username+'&password'+password;
//3.URL
var url='${pageContext.request.contextPath}/LoginServlet?'+params;
//4.使用ajax发送get请求
//4.1创建一个请求对象
var request=new XMLHttpRequest();
//4.2调用get请求方法,调用open方法的时候,都用异步请求true
request.open('get',url,true);
request.send();
//4.3接收服务器的响应
request.onreadystatechange=function(){
console.log('准备状态码:'+request.readyState+'---响应状态码:'+request.status);
if(request.readState==4&&request.status==200){
//接收服务器响应的数据
var rspText=request.responseTest;
console.log(rspText);
//获取span标签
var tipTag=document.getElementById('tip');
if(resTest=='success'){
tipTag.innerHTML='登录成功';
}else{
tipTag.innerHTML='登录失败';
}
}
}
}
</script>

 <span style="color:red" id='tip';></span>
<form>
用户名:<input type="text" name="username" id='''username'><br>
密码:<input type="password" type="password" name="password" id="password"><br>
<input type="button" value="登录" onclick="login()">
</form>

ajax准备状态码
request.readyState
0:请求未初始化
1:服务器连接已建立
2:请求已接收
3:请求处理中
4:请求已完成,且响应已就绪
http响应状态码
request.status
200:OK
404:未找到网页
405:用来访问本页面的HTTP谓词不被允许(方法不被允许),也就是post不能请求get

案例:post请求登录,servlet也是一样的,不多写

<script type="text/javascript">
//js登录方法
function login(){
//使用ajax往servlet发送post请求
//1.获取表单数据
var username=document.getElementById('username').value;
var password=document.getElementById('password').value;
//2.拼接表单数据
var params='username'+username+'&password'+password;
//3.URL
var url='${pageContext.request.contextPath}/LoginServlet';
//4.使用ajax发送post请求
//4.1创建一个请求对象
var request=new XMLHttpRequest();
//4.2调用post请求方法,调用open方法的时候,都用异步请求true
request.open('post',url,true);
//设置post请求头,每台电脑可能请求头不一样,用不了就自己找自己浏览器的网络请求头
request.setRequestHeader('content-type','application/x-www-from-urlencoded');
request.send(params);
//4.3接收服务器的响应
request.onreadystatechange=function(){
console.log('准备状态码:'+request.readyState+'---响应状态码:'+request.status);
if(request.readState==4&&request.status==200){
//接收服务器响应的数据
var rspText=request.responseTest;
console.log(rspText);
//获取span标签
var tipTag=document.getElementById('tip');
if(resTest=='success'){
tipTag.innerHTML='登录成功';
}else{
tipTag.innerHTML='登录失败';
}
}
}
}
</script>

 <span style="color:red" id='tip';></span>
<form>
用户名:<input type="text" name="username" id='''username'><br>
密码:<input type="password" type="password" name="password" id="password"><br>
<input type="button" value="登录" onclick="login()">
</form>
【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值