ajax

    科技2022-07-11  118

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

    一:简单的介绍

    1.作用:在不提交表单的前提下,与服务器进行数据交互。

    2.特点:使用ajax,在servlet中,不需要转发或重定向技术,会自动返回到原页面,且返回值自动进入回调函数。

    二:用法

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

    2.1 js版本的get的异步请求

    创建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响应 } } }) 创建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> 在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); //响应 在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改为post2. 在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名”

    Processed: 0.027, SQL: 8