Javaweb05-Ajax

打印 上一主题 下一主题

主题 565|帖子 565|积分 1695

1、基于jQuery的Ajax

1.1 基本Ajax

参数说明url请求地址type请求类型data请求参数dataType返回参数success成功处理函数error错误处理函数
  1. [/code][size=4]1.2 get提交Ajax[/size]
  2. 语法[b]:$.get(url,params,success);[/b]
  3. [code]//基于JQuery的Ajax用法-扩展用法1,简写Get方,Ajax请求
  4. //语法:$.get(url,params,success)
  5. $.get("<%=request.getContextPath()%>/checkUserName",{"userName":serName},function(data){
  6.     if(JSON.parse(data)){
  7.         $("#showMsg").html("用户名存在get").css({"color":"red"});
  8.     }else{
  9.         $("#showMsg").html("用户名可用get").css({"color":"#2ceb0a"});
  10.     }
  11. });
复制代码
1.3 post提交Ajax

语法:$.post(url,params,success);
  1. //基于JQuery的Ajax用法-扩展用法1,简写Get方,Ajax请求
  2. //语法:$.post(url,params,success)
  3. $.post("<%=request.getContextPath()%>/checkUserName",{"userName" : userName},function(data){
  4.     if(JSON.parse(data)){
  5.         $("#showMsg").html("用户名存在post").css({"color":"red"});
  6.     }else{
  7.         $("#showMsg").html("用户名可用post").css({"color":"#2ceb0a"});
  8.     }
  9. });
复制代码
1.4 请求处理

checkUserName 对应的处理代码;通过Response返回结果,前端接收到结果并进行处理;
  1. @Override
  2. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  3.     //后台接收用户名,校验是否重复
  4.     //获取用户参数
  5.     String userName = req.getParameter("userName");
  6.     System.out.println("AjaxServlet userName=>>"+userName);
  7.     //定义返回的结果
  8.     boolean result= false;
  9.     //模拟调用业务,查询当前用户名再数据中是否有记录
  10.     List<String> userNames = Arrays.asList("kh96","kgc","Ajax");
  11.     if(userNames.contains(userName)) {
  12.         result = true;
  13.     }
  14.     //异步请求响应结果,注意println不可以用,返回的结果会带\n
  15.     System.out.println("AjaxServlet result==>"+result);
  16.     resp.getWriter().println(result);
  17. }
复制代码
2、登录请求处理,并展示数据

2.1 登录页面

loginAnime.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <meta charset="UTF-8">
  6. <title>登录页面</title>
  7. </head>
  8. <body>
  9.         <form action="<%=request.getContextPath()%>/loginAnime" method="get">
  10.                 <table border="1px" align="center" width="40%" cellspacing="0">
  11.                         <tr >
  12.                                 <th colspan="2"> 欢迎登录课工场KH96动漫管理系统 </th>
  13.                         </tr>
  14.                         <tr>
  15.                                 <td>用户名:</td>
  16.                                 <td>
  17.                                         <input type="text" name="uname" id="uname" placeholder="请输入"用户名> </input>
  18.                                        
  19.                                 </td>
  20.                         </tr>
  21.                         <tr>
  22.                                 <td>用户密码:</td>
  23.                                 <td>
  24.                                         <input type="password" name="upwd" id="upwd" placeholder="请输入用户密码"> </input>
  25.                                 </td>
  26.                         </tr>
  27.                         <tr>
  28.                                 <td colspan="2" align="center">
  29.                                         <input type="submit" value="立即登录" />
  30.                                         <input type="reset" value="重新填写" />
  31.                                 </td>
  32.                         </tr>
  33.                 </table>
  34.         </form>
  35. </body>
  36. </html>
复制代码
注意:再使用Ajaz提交表单时,一定要返回false,要不然表单会再提交一次;
2.2 存放数据

2.2.1 通过request域转递数据

AnimeServlet
  1. public class AnimeServlet extends HttpServlet {
  2.         private static final long serialVersionUID = -4726403189879316484L;
  3.         @Override
  4.         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  5.                 doPost(req, resp);
  6.         }
  7.         @Override
  8.         protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  9.                
  10.                 // 模拟从数据库获取动漫列表
  11.                 List<Animes> animes = new ArrayList<>();
  12.                 animes.add(new Animes(961, "玄幻", "斗破苍穹", "土豆", "萧炎", "玄机科技", "2019-08-04"));
  13.                 animes.add(new Animes(962, "玄幻", "完美世界", "辰东", "石昊", "福煦影视", "2020-08-05"));
  14.                 animes.add(new Animes(963, "言情", "狐妖小红娘", "小新", "白月初", "腾讯动漫", "2021-08-06"));
  15.                 animes.add(new Animes(964, "言情", "秦时明月", "温世仁", "天明", "玄机科技", "2022-08-04"));
  16.                 animes.add(new Animes(965, "热血", "镇魂街", "许辰", "曹焱兵", "卢李工作室", "2018-08-04"));
  17.                 animes.add(new Animes(966, "热血", "雾山五行", "林魂", "闻人翊悬", "六道无鱼", "2018-08-04"));
  18.                                
  19.                 //将动漫集合放入request作用域
  20.                 req.setAttribute("animes", animes);
  21.                
  22.                 //转发到动漫列表页面
  23.                 req.getRequestDispatcher("web5AjaxAndJquery/animeList.jsp").forward(req, resp);
  24.                
  25.         }       
  26. }
复制代码
2.2.2 将数据转成json格式响应
  1. public class AnimeJsonServlet extends HttpServlet {
  2.         private static final long serialVersionUID = -4726403189879316484L;
  3.         @Override
  4.         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  5.                 doPost(req, resp);
  6.         }
  7.         @Override
  8.         protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  9.                
  10.                 // 模拟从数据库获取动漫列表
  11.                 List<Animes> animes = new ArrayList<>();
  12.                 animes.add(new Animes(961, "玄幻", "斗破苍穹", "土豆", "萧炎", "玄机科技", "2019-08-04"));
  13.                 animes.add(new Animes(962, "玄幻", "完美世界", "辰东", "石昊", "福煦影视", "2020-08-05"));
  14.                 animes.add(new Animes(963, "言情", "狐妖小红娘", "小新", "白月初", "腾讯动漫", "2021-08-06"));
  15.                 animes.add(new Animes(964, "言情", "秦时明月", "温世仁", "天明", "玄机科技", "2022-08-04"));
  16.                 animes.add(new Animes(965, "热血", "镇魂街", "许辰", "曹焱兵", "卢李工作室", "2018-08-04"));
  17.                 animes.add(new Animes(966, "热血", "雾山五行", "林魂", "闻人翊悬", "六道无鱼", "2018-08-04"));
  18.                 //将集合数据,转换为json字符串,返回给前端
  19.                 //阿里巴巴的fasejson,将集合转换为json字符串
  20.                 String animesJson = JSON.toJSONString(animes);
  21.                
  22.                 System.out.println(animesJson);
  23.                
  24.                 //响应
  25.                 resp.setContentType("text/html;charset=UTF-8");
  26.                 resp.setCharacterEncoding("UTF-8");
  27.                 resp.getWriter().print(animesJson);
  28.                
  29.         }       
  30. }
复制代码
3、获取并展示数据

3.1 通过EL表达式取出request域域中的数据

animeList.jsp
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2.     pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7.         <head>
  8.                 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9.                 <title>动漫主页</title>
  10.         </head>
  11.         <body>
  12.                 <h2 >课工场KH96班动漫管理系统</h2>
  13.                 <p >
  14.                         名称:<input type="text" name="animeName" size="15"/>
  15.                         作者:<input type="text" name="animeAuthor" size="15"/>
  16.                         分类:<select name="animeCategory">
  17.                                 <option value="0">全部</option>
  18.                                 <option value="1">玄幻</option>
  19.                                 <option value="2">武侠</option>
  20.                                 <option value="3">言情</option>
  21.                                 <option value="4">机甲</option>
  22.                         </select>
  23.                         <input type="button" value = "搜索"/>
  24.                 </p>
  25.                 <table border="1px" width="90%" cellspacing="0" align="center">
  26.                         <thead>
  27.                                 <tr >
  28.                                         <th colspan="8">动漫详情列表</th>
  29.                                 </tr>
  30.                                 <tr>
  31.                                         <th colspan="8" >欢迎:  <a target="_blank" href="https://www.cnblogs.com/logout">退出登录</a></th>
  32.                                 </tr>
  33.                                 <tr >
  34.                                         <th>编号</th>
  35.                                         <th>分类</th>
  36.                                         <th>名称</th>
  37.                                         <th>作者</th>
  38.                                         <th>主角</th>
  39.                                         <th>出品</th>
  40.                                         <th>时间</th>
  41.                                         <th>操作</th>
  42.                                 </tr>
  43.                         </thead>
  44.                         <tbody>
  45.                                
  46.                                 <c:forEach items="${animes}" var ="anime" varStatus="status">
  47.                                         <tr align="center"
  48.                                                 <c:if test="${status.index % 2 == 1 }">
  49.                                             style = "background-color: pink;"
  50.                                     </c:if>
  51.                                         >
  52.                                                 <td>${anime.animeId }</td>
  53.                                                 <td>${anime.animeCategory } </td>
  54.                                                 <td>${anime.animeNaem } </td>
  55.                                                 <td>${anime.animeAuthor } </td>
  56.                                                 <td>${anime.animeActor } </td>
  57.                                                 <td>${anime.animeProduce } </td>
  58.                                                 <td>${anime.animeTime } </td>
  59.                                                 <td>
  60.                                                         <a target="_blank" href="https://www.cnblogs.com/#">修改</a>    |   
  61.                                                         <a target="_blank" href="https://www.cnblogs.com/#">删除</a>
  62.                                                 </td>
  63.                                         </tr>
  64.                                 </c:forEach>
  65.                         </tbody>
  66.                         <tfoot>
  67.                                 <tr>
  68.                                         <td colspan="8" >
  69.                                                 <input type="button" value="添加" id="addAnime"/>  
  70.                                                 <a target="_blank" href="https://www.cnblogs.com/#">首页</a> | 
  71.                                                 <a target="_blank" href="https://www.cnblogs.com/#"><<上一页</a> | 
  72.                                                 <a target="_blank" href="https://www.cnblogs.com/#">下一页>></a> | 
  73.                                                 <a target="_blank" href="https://www.cnblogs.com/#">尾页</a> | 
  74.                                                 共 6 条  每页 10 条 当前第 1 页 / 共 1 页
  75.                                         </td>
  76.                                 </tr>
  77.                         </tfoot>
  78.                 </table>
  79.         </body>
  80.        
  81. </html>
复制代码
3.2 直接通过jQuery添加子标签

animeListJson.jsp
  1. //tbody部分
  2. <tbody>
  3.    
  4. </tbody>
  5. //处理成功返回的数据部分
  6. "success": function(data){
  7.     //确定数据动态显示的位置
  8.     var $tbody = $("tbody");
  9.     //alert(data);
  10.     //数据解析
  11.     // 隔行变色
  12.     var count = 1;
  13.     // 数据解析
  14.     $(data).each(function(){
  15.         // 定义颜色
  16.         var bgColor = count % 2 == 0 ? "style='background-color:#ddd;'" : "";
  17.         $("tbody").append(
  18.             "<tr align='center' " + bgColor + ">"
  19.             + "<td>" + this.animeId + "</td>"
  20.             + "<td>" + this.animeCategory + "</td>"
  21.             + "<td>" + this.animeName + "</td>"
  22.             + "<td>" + this.animeAuthor + "</td>"
  23.             + "<td>" + this.animeActor + "</td>"
  24.             + "<td>" + this.animeProduce + "</td>"
  25.             + "<td>" + this.animeTime + "</td>"
  26.             + "<td><a target="_blank" href='https://www.cnblogs.com/#'>修改</a>  <a target="_blank" href='https://www.cnblogs.com/#'>删除</a></td>"
  27.             + "</tr>"
  28.         );
  29.         count++;
  30.     });
  31. }
复制代码
展示效果:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表