189 8069 5689

如何使用Servlet处理AJAX请求

本文小编为大家详细介绍“如何使用Servlet处理AJAX请求”,内容详细,步骤清晰,细节处理妥当,希望这篇“如何使用Servlet处理AJAX请求”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序制作、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了田林免费建站欢迎大家使用!

AJAX用于异步更新页面的局部内容。

ajax常用的请求数据类型

  • text    纯文本字符串

  • json    json数据

使用ajax获取text示例

此种方式常用于前端向后台查询实体的一个属性(字段),比如查询总分。

前端页面

  
    学号:     姓名:     查询成绩      

     

这里使用了jq提供的ajax方法,所以要用

后台

@WebServlet("/servlet/HandlerServlet")
public class HandlerServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        //获取ajax传递的参数,和获取表单数据的方式一样
        String no=request.getParameter("no");

        //现在很多持久层框架都是把数据库返回的记录转化为JavaBean处理
        //此处省略连接数据库查询,得到Student类实例
        Student student = new Student(1, "张三", 20, 100);

        //使用fastjson将java对象转换为json字符串
        String jsonStr = JSON.toJSONString(student);

        PrintWriter writer = response.getWriter();
        writer.write(jsonStr);
    }
}

 JSON.toJSONString()使用的是阿里的fastjson.jar,需要自己下载添加这个jar。

使用ajax获取json数组

此种方式用于后台向前端返回同一实体类的多个实例,比如查询总分大于600的学生的信息,可能有多条记录满足要求。

前端

  查询学前三个学生的信息
  
        

使用  data[下标].字段名  的方式获取属性值。

后台
@WebServlet("/servlet/HandlerServlet")
public class HandlerServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        //获取ajax传递的参数,和获取表单数据的方式一样
        String no=request.getParameter("no");

        //现在很多持久层框架都是把数据库返回的记录转化为JavaBean处理
        //此处省略连接数据库查询,得到Student类的多个实例
        Student student1 = new Student(1, "张三", 20, 100);
        Student student2 = new Student(2, "李四", 19, 80);
        Student student3 = new Student(3, "王五", 20, 90);
        ArrayList list = new ArrayList<>();
        list.add(student1);
        list.add(student2);
        list.add(student3);

        //使用fastjson将java对象转换为json字符串
        String jsonStr = JSON.toJSONString(list);

        PrintWriter writer = response.getWriter();
        writer.write(jsonStr);
    }
}

使用ajax获取map类型的json数据

使用场景:前端向后台查询多个信息,这些信息不是同一实体类的实例。比如要查询考生人数、最高分考生的信息,考生人数是int型,最高分考生信息是Student类的实例。

前端

  查询考生人数、最高分考生信息
  
        

以  data.key  的方式获取对应的value。

后台
@WebServlet("/servlet/HandlerServlet")
public class HandlerServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        //获取ajax传递的参数,和获取表单数据的方式一样
        String no=request.getParameter("no");

        //现在很多后台框架都是把数据库返回的记录转化为JavaBean处理
        //此处省略连接数据库查询,得到Student类实例
        HashMap map = new HashMap<>();
        map.put("amount", 3000);
        map.put("student", new Student(1, "张三", 20, 680));


        //使用fastjson将java对象转换为json字符串
        String jsonStr = JSON.toJSONString(map);

        PrintWriter writer = response.getWriter();
        writer.write(jsonStr);
    }
}

map和json对象十分相似:都是以键值对的形式保存数据,key是String,value是Object。

所以后台map类型的数据可以以json的形式传给前端。

说明

async:true    异步,ajax向后台请求数据时,用户仍可以在页面上进行操作

async:false   同步,ajax向后台请求数据,浏览器锁定页面,用户不能在页面上进行操作,直到请求完成

读到这里,这篇“如何使用Servlet处理AJAX请求”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


文章标题:如何使用Servlet处理AJAX请求
分享地址:http://jkwzsj.com/article/jhhode.html

其他资讯