jsp中发送Ajax请求及Servlet中响应

这篇博客讲述了在JSP页面中使用Ajax发送GET请求到后台Servlet获取JSON数据的过程。通过示例代码展示了从jsp页面发起请求,到servlet处理并返回json数据,最后在浏览器控制台查看响应内容。重点讨论了dataType属性在请求中的作用,指出不指定dataType时,默认为text,浏览器不会自动转换为json对象。
摘要由CSDN通过智能技术生成

jsp页面发送Ajax请求,和html中其实一样,jsp代码如下:

<%--
  Created by IntelliJ IDEA.
  User: 17605
  Date: 2021/6/6
  Time: 19:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>测试页面</title>
      <script type="text/javascript" src="/servlet_demo/static/js/jquery-2.1.4.min.js"></script>
  </head>
  <body>
  欢迎来到第一个JSP页面!!!<br><br>
     <a href="/servlet_demo/myServlet.do?COMMAND=ADD">点击进行添加</a><br><br>
     <a href="/servlet_demo/myServlet.do?COMMAND=UPDATE&id=4">点击进行修改</a><br><br>
     <a href="/servlet_demo/myServlet.do?COMMAND=DEL&id=12">点击进行删除</a><br><br>
     <a href="/servlet_demo/myServlet.do?COMMAND=FIND&id=9">按照Id进行查询</a><br>
  <script type="text/javascript">
      $.ajax({
          url: '/servlet_demo/myServlet.do?COMMAND=FINDALL',
          type: 'get',
          dataType: 'json',
          success:function (result) {
              console.log(result);
          }
      });
  </script>
  </body>
</html>

servlet中的相关代码:
在这里插入图片描述

    private void findAll(HttpServletRequest request,HttpServletResponse response) throws IOException{
        List<People> list = peopleDao.findAll();
        response.setContentType("text/plain;charset=utf-8");
        PrintWriter writer = response.getWriter();
        if(list != null && list.size() > 0){
            // 转为json串
            String jsonStr = JSON.toJSONString(list);
            writer.write(jsonStr);
        } else {
            writer.write("查无数据!");
        }
    }

dao层相关代码:

    /*
    * @description: 查询所有记录
    * @param: []
    * @return: java.util.List<com.ycz.domain.People>
    * @author: yanchengzhi
    * @date: 2021/6/14 14:43
    */
    public List<People> findAll() {
        List<People> peoples = new ArrayList<>();
        String sql = "select id,name,FROM_UNIXTIME(birth) birthday,tag from people";
        Connection connection = DataSourceManager.getConnection();
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        try {
            ps = connection.prepareStatement(sql);
            resultSet = ps.executeQuery();
            while(resultSet.next()){
                People p = new People();
                p.setId(resultSet.getInt("id"));
                p.setName(resultSet.getString("name"));
                p.setBirth(resultSet.getDate("birthday"));
                p.setTag(resultSet.getInt("tag"));
                peoples.add(p);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DataSourceManager.closeConnection(connection);
            DataSourceManager.closeStatement(ps);
            DataSourceManager.closeResultSet(resultSet);
        }
        return peoples;
    }

打开浏览器控制台测试:
在这里插入图片描述
ajax请求及响应是没问题的。

注意一个地方,前段时间自己有点秀逗了,犯了一个低级错误,ajax请求中的这个地方:
在这里插入图片描述
如果这行注释掉:
在这里插入图片描述
再看控制台:
在这里插入图片描述
和刚才不一样的是:刚才打印的是转换后的json对象,而现在打印的只是json字符串,与后端返回结果无关,后端返回的一直是json串,只不过dataType属性值为json时,浏览器会自动将json串转换为json对象,如果不写dataType,那么它默认的值是text,也就是纯文本格式。省略dataType属性和下面这样写是等效的:
在这里插入图片描述
查看控制台打印:
在这里插入图片描述
没问题。怪自己太菜,以前没怎么注意。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值