前台传入的application/json;charset=UTF-8格式的数据,java后端从request中获取json数据;java获取前端传入json

 

出现该问题的背景

  本人最近做一个项目,前端传给后端的是json格式,使用request.getParameter("字段名")获取不到数据,虽说@RequestBody可以处理application/json类型,

但是由于一些需求,@RequestBody在此处不太适用,因此只能另想他法。

解决方法:

使用字节流还是字符流,考虑到json串属于字符串,因此在此处选择使用字符流,代码如下:

    StringBuffer stringBuffer=new StringBuffer();
    int len;
    char[] buffer=new char[1024];
    try{
        BufferedBuffer reader=request.getReader();
        while((len=reader.read(buffer))!=-1){
            stringBuffer.append(buffer,0,len);
        }
    }catch(IOException e){
        e.printStackTrace();
    }      

 使用@RequestBody解决:(@RequestBody String string)接收前端传来的application/json类型的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,需要分几步来完成。 首先,在前端页面,你可以使用 jQuery Ajax 来监听表格的按钮点击事件,获取到同行的某个数据,然后将其传到后台进行处理。可以参考以下代码: ```javascript $(document).on('click', 'table button', function() { var data = $(this).closest('tr').find('.data').text(); $.ajax({ method: 'POST', url: 'your-servlet-url', data: { data: data }, success: function(response) { // 处理后台返回的数据 }, error: function() { // 处理请求失败的情况 } }); }); ``` 在后台,你可以使用 Servlet 来接收前端传过来的数据,并连接数据库,查询与该数据匹配的数据行。可以参考以下代码: ```java protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取前端传来的数据 String data = request.getParameter("data"); // 连接数据库 String url = "jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf-8"; String username = "your_username"; String password = "your_password"; Connection conn = DriverManager.getConnection(url, username, password); // 查询与传来的数据匹配的数据行 String sql = "SELECT * FROM your_table WHERE data = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setString(1, data); ResultSet rs = stmt.executeQuery(); // 构造返回结果 List<Map<String, Object>> result = new ArrayList<>(); while (rs.next()) { Map<String, Object> row = new HashMap<>(); row.put("column1", rs.getString("column1")); row.put("column2", rs.getString("column2")); // ... result.add(row); } // 返回查询结果 response.setContentType("application/json;charset=utf-8"); PrintWriter out = response.getWriter(); out.print(new Gson().toJson(result)); out.flush(); out.close(); } ``` 最后,在前端页面,你可以处理后台返回的数据,将其以表格的形式显示在固定区域,并进行分页。可以使用一些现成的分页插件,如 DataTables 或 Bootstrap Table。 希望这些代码可以帮到你,如果还有其他问题,可以继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值