• ajax传递前端用户数据到servlet,ajax接受servlet传递回来的json数据


    一.ajax将前台用户提交的数据传递给servlet。

      1.前端jsp(html)页面。引入外部jq文件和js文件。

     

        备注:这里说明一下,登录按钮有个login()方法,里面有个path参数,这个只是项目的根路径,所以如果你知道你的根路径,就不需要这个参数,因为

          可以直接在js文件写

      2.js文件。这个js文件是第一幅图片的外部js文件。

     

        备注:这里的login()方法就是登陆按钮触发的方法,里面的path就是根路径。获取前端用户输入的值,isNull()这个方法是对输入框是否为空进行判断,

                    这里并不重要。可以不写。我这里的dataType设置为text格式,因为我返回的数据只有一个布尔型数据,无需使用json。还有一个重点是返回来的

                         布尔型数据要去掉两个空格字符。

       3.后台控制层servlet文件。

               

        备注:如上图代码所示,获取键为username的值的方法与获取表单的name为username的值得方法一样,但这里的username这个字符创不是从jsp或

          html文件获取的,而是通过js文件中的ajax获取的。如果你js文件中的dataType的值为“json”,我不敢保证这样的方式可以获取。现在说完了ajax

                         传值到servlet,以及servlet如何获取。

    二.servlet传递json数据到前台ajax中。

      1.后台控制层servlet文件

      

     1 package com.practice.servlet;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import java.util.List;
     6 
     7 import javax.servlet.ServletException;
     8 import javax.servlet.http.HttpServlet;
     9 import javax.servlet.http.HttpServletRequest;
    10 import javax.servlet.http.HttpServletResponse;
    11 
    12 import com.alibaba.fastjson.JSONArray;
    13 import com.practice.bean.Message;
    14 import com.practice.service.QueryService;
    15 
    16 @SuppressWarnings("serial")
    17 public class MessageListServlet extends HttpServlet{
    18     @Override
    19     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    20         // TODO Auto-generated method stub
    21         this.doPost(req, resp);
    22     }
    23 
    24     @Override
    25     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    26         // TODO Auto-generated method stub
    27         //1.调用业务逻辑层,取得数据
    28         QueryService queryService=new QueryService();
    29         JSONArray jsonData=queryService.messageList();
    30         
    31         //跟踪数据
    32         System.out.println(jsonData.toString());
    33         //2.返回数据到js中ajax中
    34         resp.getWriter().write(jsonData.toString());
    35 
    36     }
    37 }
    View Code

         备注:我这里调用了业务逻辑层的QueryService里messageList()方法。messgeList()方法返回json数组。最后将json数组打印到页面中。可以访问servlet

          地址看到该数据。

      2.业务逻辑层service文件

     1 package com.practice.service;
     2 
     3 import java.sql.SQLException;
     4 import java.util.ArrayList;
     5 import java.util.List;
     6 
     7 import com.alibaba.fastjson.JSONArray;
     8 import com.alibaba.fastjson.JSONObject;
     9 import com.practice.bean.Message;
    10 import com.practice.dao.MessageDao;
    11 import com.practice.dao.UserDao;
    12 
    13 /**
    14  * 业务逻辑层(查询业务)
    15  * @author Administrator
    16  *
    17  */
    18 public class QueryService {
    19         public Boolean  Login(String username,String password,String userType){
    20             UserDao userDao=new UserDao();
    21             Boolean isExist=false;
    22             
    23                 try {
    24                     isExist= userDao.query(username, password, userType);
    25                 } catch (SQLException e) {
    26                     // TODO Auto-generated catch block
    27                     e.printStackTrace();
    28                 }
    29                 return isExist;
    30         }
    31         
    32         public JSONArray messageList(){
    33             MessageDao messageDao=new MessageDao();
    34             List<Message> data=new ArrayList<Message>();
    35             //1.定义一个json数组
    36             JSONArray jsonData=new JSONArray();
    37             try {
    38                 //这里获取了所有的message对象并存放在data中
    39                 data = messageDao.queryMessage();
    40             } catch (SQLException e) {
    41                 // TODO Auto-generated catch block
    42                 e.printStackTrace();
    43             }
    44            for(int i=0;i<data.size();i++){
    45                //2.定义json对象
    46                JSONObject object=new JSONObject();
    47                Message ms=data.get(i);
    48                object.put("command", ms.getCommand());
    49                object.put("description", ms.getDescription());
    50                //3.将所有的json对象存放在json数组jsonData中
    51                jsonData.add(object);
    52             }
    53            //4.返回json数组
    54            return jsonData;
    55      }
    56 }
    View Code

        备注:注释很清楚了,这里需要到如json的jar包,要alibaba公司的。下载地址

      3.js文件

     1 /**
     2  * 一打开就执行
     3  */
     4 $(document).ready(function(){  
     5      loadData();
     6 }); 
     7 /**
     8  * 加载数据
     9  * @returns
    10  */
    11 function loadData(){
    12     
    13     var path="/AutoReplyRobot";
    14      $.ajax({
    15         type: "post",
    16         dataType: "json",
    17         url: path+"/MessageList.action",
    18         success: function (data) {
    19         //    alert(data.length);
    20                 appendMessageList(data);
    21         },
    22      });
    23 }
    24 function appendMessageList(data){
    25     
    26     var html="";
    27     for(var i=0;i<data.length;i++){
    28         var xuhao=i+1;
    29         html+="<tr>"+
    30         " <td><input type='checkbox'  name='checkbox1' value=''></td>"+
    31         "<td>"+xuhao+"</td>"+
    32         "<td>"+data[i].command+"</td>"+
    33         "<td>"+data[i].description+"</td>"+
    34         "<td>删除/修改</td>"+
    35         "</tr>";
    36     }
    37     
    38     $("#main").append(html);
    39 }
    40     
    View Code

        备注:在ajax中success中的function可以测试已经取得的json数据。我注释掉的两行可以将注释去掉。在浏览器中测试一下。至此,servlet传递json数据到

          ajax中,已经讲完。当然,这是表面的,但深层的原理还要继续学习。以后有新的发现再来更。

       转载请注明出处!

  • 相关阅读:
    好用的在线作图软件
    xml简介
    P1832 A+B Problem(再升级)
    P1831 杠杆数
    P1802 5倍经验日
    P1679 神奇的四次方数
    Android学习四、Android中的Adapter
    Android Activity Fragment 生命周期
    《C语言编写 学生成绩管理系统》
    线程池QueueUserWorkItem
  • 原文地址:https://www.cnblogs.com/zuoluwo/p/11543153.html
Copyright © 2020-2023  润新知