ajax

ajax的一些使用方法(异步请求)

一:简单的介绍

1.作用:在不提交表单的前提下,与服务器进行数据交互。
2.特点:使用ajax,在servlet中,不需要转发或重定向技术,会自动返回到原页面,且返回值自动进入回调函数。

二:用法

(案例:注册账号,判断账号是否存在数据库里面 。若存在,则提示,账号已存在;若不存在,则OK)

2.1 js版本的get的异步请求

  1. 创建a.jsp页面
    在body中
<form>
    账号:<input type="text" name="name"><span></span> <br>
    密码:<input type="password"><br>
    <input type="submit" value="注册"><br>
</form>
	在js中
        $(":text").blur(function () { //当失去焦点的时候,运行该函数
        var name = $(this).val()  //得到用户名
        var re = new XMLHttpRequest();  //1.创建异步请求的对象
        re.open("get","/FileUpload/login?name="+name,true)//2 连接异步请求的通道
        re.send()   //3.发送异步请求
        re.onreadystatechange=function(){ //每当 readyState 属性改变时,就会调用该函数。
            if (re.readyState==4 && re.status==200){ //4:请求已完成  200:响应已就绪
                $("span").html(re.responseText)  //responseText 属性返回字符串形式的servket响应
            }
        }
    })
  1. 创建loginServlet
	<servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.web.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>  
    </servlet-mapping>
  1. 在loginServlet的doGet方法中
String name = request.getParameter("name");
boolean b = dao.selectByName(name);  //LoginDao dao=new LoginDao();
String msg = b?"用户名已存在":"OK"; //赋值结果
response.setContentType("text/html;charset=UTF-8"); //设置编码格式
 response.getWriter().write(msg); //响应
  1. 在LoginDao类,运用jdbc技术查看数据库中是否含有该用户名
 	try {
            Class.forName("com.mysql.jdbc.Driver");//1 注册驱动
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/day1",
                    "root", "888666");  //2.连接数据库
            PreparedStatement pst = con.prepareStatement("select * from login where name=?");
            pst.setString(1,name);
            ResultSet re = pst.executeQuery();
            return re.next();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

这一步 ,使用c3p0技术更简单

2.2 js版本的post的异步请求

简单的修改一些即可

1.将get改为post在这里插入图片描述2. 在loginServlet的post方法中

request.setCharacterEncoding("utf-8");
doGet(request,response);

2.3 jquery版本的get的异步请求(比js版本更简单)

在上的例题上进行修改,要添加 jquery-3.5.1.min.js 包

1.在js中
    	$(":text").blur(function () {
        var name = $(this).val()
        //$.get()  1:路径  2:json,参数  3:当请求成功时运行的函  4:json
        $.get("/FileUpload/login",{name:name},function (entry) {
            $("span").html(entry)
        },"json");

2.在LoginServlet的get方法中

 		String name = request.getParameter("name");
        boolean b = dao.selectByName(name);
        String msg = b?"用户名已存在":"OK";
        response.setContentType("text/html;charset=UTF-8");
        String entry = JSONObject.toJSONString(msg); //添加fastjson-1.2.9.jar包
        response.getWriter().write(entry);

2.4 jquery版本的post的异步请求

1.get—>post
2. 在LoginServlet的方法中,添加
request.setCharacterEncoding("utf-8"); doGet(request,response);

三.运行结果

1.mysql数据库中含有该用户名
在这里插入图片描述
2. 不含有
在这里插入图片描述

四.注意事项

1.在a.jsp的head标签,添加
<script src="../jquery-3.5.1.min.js"></script>
2. 使用jquery的表单过滤器,记得前面的冒号“:”
在这里插入图片描述
3. 路径问题,一律 “/工程名/…/servlet名”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

借一缕月光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值