servlet中利用阿里云包fastjson-1.2.43.jar把map转为json并返回前端

蓬鹏      2022-02-16     673

关键词:

1.引入fastjson-1.2.43.jar 包到lib下面,下载地址链接: https://pan.baidu.com/s/1pLxGe9P 密码: 6xsw

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet("/Servlet")
public class CalculateServlet 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 {
        response.setContentType("text/json;charset=utf-8");
        String numA = request.getParameter("numA");
        String numB = request.getParameter("numB");
        Float fnumA = Float.parseFloat(numA);
        Float fnumB = Float.parseFloat(numB);
        Float sum, minus, multiply, divide;
        sum = fnumA + fnumB;
        minus = fnumA - fnumB;
        multiply = fnumA * fnumB;
        divide = fnumA / fnumB;
        DecimalFormat df = new DecimalFormat("#0.00");//取小数点后两位四舍五入
        String sminus = df.format(minus);
        String ssum = df.format(sum);
        String smultiply = df.format(multiply);
        String sdivide = df.format(divide);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("sum",ssum);
        map.put("minus",sminus);
        map.put("multiply",smultiply);
        map.put("divide",sdivide);
        JSONObject json = JSONObject.parseObject(JSON.toJSONString(map));//把map转为json数据
      PrintWriter out = response.getWriter();
        out.write(json.toString());
        out.flush();
        out.close();
            }
}

  前端jsp代码入下

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2017/12/18
  Time: 14:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>综合测试</title>
    <script src="static/js/jquery.js"></script>
</head>
<br>
<form id="f"><!--method="post" action="Servlet"-->
<label>numA:</label>
<input type="text" name="numA" id="numA" /><div id="A"></div><br/>
<label>numB:</label>
<input type="text" name="numB" id="numB" /><div id="B"></div><br/>
<input type="button" value="运算" id="btn"/>
</form>
<span>和为:</span><span id="sum"></span></br>
<span>差为:</span><span id="minus"></span></br>
<span>积为:</span><span id="multiply"></span></br>
<span>商为:</span><span id="divide"></span></br>
<script type="text/javascript">
	var reg = /^d+(.d+)?$/;//判断是数字
	$("#numA").blur(function () {
		var numA=$("#numA").val();
		 numA = $.trim(numA);
		if(numA=="") $("#A").text("numA为空!"); 
		else if(reg.test(numA)==false) $("#A").text("numA不是数字!");
	});
	$("#numA").focus(function () {
		$("#A").empty();
	});
	$("#numB").blur(function () {
		var numB=$("#numB").val();
		 numB = $.trim(numB);//去除空格符
		if(numB=="") $("#B").text("numB为空!");
		else if(reg.test(numB)==false) $("#B").text("numB不是数字!");
		else if(numB==0) $("#B").text("error:分母不能为0!");
	});
	$("#numB").focus(function () {
		$("#B").empty();
	});
	$("#btn").click(function () {
        var numA=$("#numA").val();
        var numB=$("#numB").val();
	    if(numA!=""&&numB!="")
   $.get("/Servlet",$("#f").serialize(),function (data) {
       console.log(data);
       $("#sum").text(data.sum);
       $("#minus").text(data.minus);
       $("#multiply").text(data.multiply);
       $("#divide").text(data.divide);
   });});

</script>
</body>
</html>

  *注意如果出错,请将fastjson-1.2.43.jar复制一份到tomcat 的lib 目录下,然后重启项目。

阿里云包年包月服务器如何退款

阿里云的ECS服务器的包年包月价格比按量付费要划算很多,但经常计划不如变化快,刚买的服务器马上就不需要了,却又不能退。怎么办?购买阿里云服务器或其它阿里云任何产品,请先领取阿里云最高¥1888大红包!领取地址... 查看详情

[java安全]fastjson≤1.2.24结合jdbcrowsetimpl利用链(代码片段)

文章目录RMIFastjsonRCE关键函数实际利用演示JdbcRowSetImpl利用链分析参考文章RMI首先不得不提一下RMIRMI是Java远程方法调用,是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服... 查看详情

fastjson<=1.2.24jdbcrowsetimpl利用链分析(代码片段)

前言上文分析了TemplatesImpl利用链,对fastjsonparseObject函数进行了分析,明白了整个触发漏洞的流程,接着来学习JdbcRowSetImpl利用链,JdbcRowSetImpl的利用链在实际运用中较为广泛,这个链基本没啥限制条件,只... 查看详情

阿里巴巴fastjson-1.2.12.jarjson解析异常java.lang.classformaterror:invalidmethodcodelength66865incla(代码片段)

承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException:Text‘2019-05-2413:52:11‘couldnotbeparsedatindex10之前在线上用的版本是fastjson-1.2.7.jar一切正常,更换以后时间解析看似一切正常。因为在系统中设计json反序... 查看详情

如何利用反射简化servlet操作

一、反射的实现  新建类BaseServlet,继承HttpServlet(不需要在web.xml文件中配置)  1、在doPost()方法中处理请求乱码,并调用doGet()方法    //处理post请求乱码,只需要在getParamter方法第一次调用前,设置request的编码   ... 查看详情

利用java反射机制来实现一个servlet处理多种请求

如果我们想在一个servlet中处理多种请求(比如新闻的添加、删除),简单的可以在jsp提交表单的action路径中添加一个键值对,然后再servlet中接收后根据不同的值来调用不同的方法。jsp端1<formaction="newsServlet?method=add"method="post"&g... 查看详情

servlet如何利用request来获取http请求中的主体信息?

...AgetProtocol():获取请求使用的通信协议,如http&#47;1.1getServletPath():获取请求的JSP也面所在的目录。getContentLength():获取HTTP请求的长度。getMethod():获取表单提交信息的方式,如POST或者GET。getHeader(Strings):获取请求中头的值。一般来... 查看详情

利用session实现三天免登陆

...ession要解决什么问题一个用户的不同请求(重定位到一个Servlet,这个Servlet需要用到上一个Servlet的request对象)的处理需要使用相同的数据怎么办呢?解决:session技术 Session生命周期当 查看详情

[java安全]fastjson>=1.2.36$ref引用可触发get方法分析

...析解释为什么1.2.36前的版本不行写在前面平时我们在处理fastjson反序列化的时候,如果我们想要执行属性的get方法,而如果只有JSON.parse怎么办我们知道JSON.parse可以套一层parseObject实现对get方法的调用,但说这个也没有... 查看详情

利用servlet访问数据库返回json数据

 本次使用的是Mysql数据库,表中有已下几条记录,我们通过Servlet 读取数据,并返回为JSON格式的数据。  新建工程文件,项目结构如图 查看详情

fastjson的基本使用

...,所以这里介绍两种json数据解析的方式,一种是FastJSon,这个是阿里巴巴出的,号称最快的解析速度。第二种使我们伟大的Google提供的Gson来解析json,两个解析json都很方便,而且都很强大,在我使用中,... 查看详情

fastjson的基本使用

...,所以这里介绍两种json数据解析的方式,一种是FastJSon,这个是阿里巴巴出的,号称最快的解析速度。第二种使我们伟大的Google提供的Gson来解析json,两个解析json都很方便,而且都很强大,在我使用中,... 查看详情

利用阿里开源工具进行排查线上cpu居高问题转(代码片段)

...p;   配置文件application.propertiesserver.port=80server.servlet.context-path=/api打包项目,上传测试服务器java-jard 查看详情

[java安全]fastjson>=1.2.36$ref引用可触发get方法分析(代码片段)

...析解释为什么1.2.36前的版本不行写在前面平时我们在处理fastjson反序列化的时候,如果我们想要执行属性的get方法,而如果只有JSON.parse怎么办我们知道JSON.parse可以套一层parseObject实现对get方法的调用,但说这个也没有... 查看详情

高危安全通告fastjson≤1.2.80反序列化漏洞

近日FastjsonDevelopTeam发布安全公告,Fastjson≤1.2.80版本中存在反序列化漏洞。攻击者可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。目前Jeecgboot官方已完成修复,在此建议Jeecgboot用户尽快修复。修复... 查看详情

Jetty 和其他容器如何在遵守 Servlet 规范的同时利用 NIO?

】Jetty和其他容器如何在遵守Servlet规范的同时利用NIO?【英文标题】:HowdoJettyandothercontainersleverageNIOwhilestickingtotheServletspecification?【发布时间】:2014-10-0110:32:41【问题描述】:我是NIO的新手,我正在尝试弄清楚Jetty如何利用NIO。... 查看详情

servlet如何利用request来获取http请求中的主体信息?

getProtocol():获取请求使用的通信协议,如http/1.1等getServletPath():获取请求的JSP也面所在的目录。getContentLength():获取HTTP请求的长度。getMethod():获取表单提交信息的方式,如POST或者GET。getHeader(Strings):获取请求中头的值。一般来说,S... 查看详情

三种spring加载机制

方法一.在main方法中启动SpringApplicationContextac=newXmlApplicationContext("applicationContext.xml"); 方法二.利用Spring自带的Servlet启动,配置好Servlet,加载Servlet的时候,就初始化了WebApplicationContext 方法三.利用Spring自带的Listen 查看详情