springboot前后端ajax传值,简单,实测

这两天一直在前后端搞来搞去。
试了三种,map获得表单提交值;model向前端传值,ajax向前端传值。

这里把controller代码和前端代码贴出来,详细记录一下ajax的。

data_controller.java

package com.example.demo.controller;

import com.example.demo.bean.servlet_java;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Map;

@Controller
public class data_controller {
    static servlet_java rsa=new servlet_java(); //作为调用rsa算法的入口,rsa是一个对象,调用其方法。
    public static  String obvtext;
    public  static String ciphertext;
    public  static String rsa_mr;
    public  static String rsa_m;

    @RequestMapping("/get_obv" )//拿到了前台表单提交的数据
    @ResponseBody
    public Map<String,Object> post_data(HttpServletRequest request, HttpSession session,textinfo textinfo)
    {
        obvtext=textinfo.getObvtext();
        ciphertext=textinfo.getCiphertext();
        Map<String,Object> map=new HashMap<String, Object>();
        rsa.rsa(obvtext,ciphertext);//这一步进行了运算等等
        map.put("success",true);
        rsa_mr=rsa.mr;
        rsa_m=rsa.last;
        //System.out.println(rsa.last);输出了最终明文结果
        return map;
    }

    //给前端html传值
  @RequestMapping("/rsa")
    public String trans_data(Model model){
       rsa.rsa_canshu();
        String p=rsa.midp;
        String q=rsa.midq;
        String e=rsa.mide;
        String d=rsa.midd;
        model.addAttribute("sty_p","<b>素数p为:</b>");
        model.addAttribute("p",(p+"<br>"));
        model.addAttribute("sty_q","<b>素数q为:</b>");
        model.addAttribute("q",(q+"<br>"));
        model.addAttribute("sty_e","<b >公钥e为:</b>");
        model.addAttribute("e",(e+"<br>"));
        model.addAttribute("sty_d","<b>私钥d为:</b>");
        model.addAttribute("d",(d+"<br>"));
        return "rsa";
    }
  @RequestMapping("/transdata")
    @ResponseBody
    public Map<String,Object> transdata(HttpServletRequest request){
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("Mr",rsa_mr);
        map.put("M",rsa_m);
        return map;
    }


}

前端rsa.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" th:inline="javascript" >
<head>
    <script src="js/jquery.js" type="text/javascript"></script>
    <meta charset="UTF-8">
    <title>RSA算法</title>

    <style type="text/css">
        p {
            text-align: center;
            font-family: 微软雅黑;
            font-weight: bold;
        }

        span {
            text-align: center;

        }

        div {
            width: 220px;
            margin-top: 260px;
            margin-bottom: 100px;
            margin-left: 30px;
            margin-right:30px;

        }
    </style>
    <script type="text/javascript" th:inline="javascript" >
        var request;
        var status;
        //一加载就进行

        function Dom() {
            var mtext = document.form1.obvtext.value;
            var ctext = document.form1.ciphertext.value;
            if (mtext == "") {
                alert("明文不可为空");
            }
            if (mtext != "" && ctext == "") {
                alert("密文不可为空");
            }
            document.getElementById("result").innerHTML = "<p>Alice选取的明文为:</p>" + mtext + "<br />"
                + "<p>Trudy选取的r为:</p>" + ctext + "<br />";
            status=200;
        }
      document.forms[0].target = "rfFrame";
       function transdata() {
          var trandata;
           if(status!=200)
           {
               alert("请先输入明文M与r");
           }
            else {$.ajax({
                url : "/transdata",
                dataType : "json",//数据格式
                type : "post",//请求方式
                async : false,//是否异步请求
                success : function(data) {   //如果请求成功,返回数据。
                    alert(JSON.stringify(data));
                    document.getElementById("result1").innerHTML=data.Mr+"<br/>"+"<br/>";
                    document.getElementById("result2").innerHTML=data.M;
                },
            })
        }}

    </script>
</head>
<body>
<!-- 标题 -->
<div style="height: 30px;width: 100% ;margin-top: 10px;margin-bottom: -10px;">
    <p style="font-size:30px;">RSA加密算法</p>
</div>

<!-- 基本参数输出框 随输出改变大小-->

<div style="width:500px;margin-top:88px;word-wrap: break-word; height:auto;display:inline-block !important; display:inline;float:left;border:solid #4c4c4c">
    <p>素数p,q,密钥d,e等参数输出:</p>
    <span style="font-size: 14px" th:utext="${sty_p}" ></span>
    <span style="font-size: 12px" th:utext="${p}" ></span>
    <span style="font-size: 14px" th:utext="${sty_q}" ></span>
    <span style="font-size: 12px" th:utext="${q}" ></span>
    <span style="font-size: 14px" th:utext="${sty_e}" ></span>
    <span style="font-size: 12px" th:utext="${e}" ></span>
    <span style="font-size: 14px" th:utext="${sty_d}" ></span>
    <span style="font-size: 12px" th:utext="${d}" ></span>

</div>
<!-- 提交框 -->
<div style="float:left;border:solid #4c4c4c ;height:266px;margin-top: 210px ;">

    <form name="form1" style="text-align: center;" target="rfFrame" method="post" action="/get_obv">
       <iframe id="rfFrame" name="rfFrame" src="about:blank" style="display:none;"></iframe>
        <p style="">Alice进行加密</p>

        <span>请输入Alice选取的明文M:</span>
        <input type="text" name="obvtext" id="obvtext" style="margin-top: 20px">
        <p>Trudy进行攻击</p>

        <span>请输入Trudy选取的r:</span>
        <input type="text" name="ciphertext" id="ciphertext" style="margin-top: 20px;">

        <input type="submit"  value="提交" style="font-weight: bold;margin-top:6px;display: flex;margin-left: 86px;" onClick="Dom()">
    </form>
</div>

<!-- 提交信息输出框 -->
<div style="height:auto;float:left;border:solid #4c4c4c;text-align: center;margin-top: 230px">
    <p style="">提交信息</p>
    <span style="font-size: 14px" id="result" name="result"></span>
    <input type="submit"  value="开始破解" style="margin-top:6px;display: flex;margin-left: 78px;margin-bottom: 10px;font-weight: bold;" onClick="transdata()">
</div>
<!-- 计算结果输出框 -->
<div style="height:auto;float:left;border:solid #4c4c4c;text-align: center;">
    <p style="">计算结果</p>
    <span>由C^d=(Mr)^de,解得Mr为:</span><br/>
    <span style="font-size: 14px" id="result1" name="Mr" > </span>
    <span>由M=Mr/r解得明文M为:</span><br/>
    <span style="font-size: 14px;margin-bottom: 10px" id="result2" name="M" > </span>

</div>

</body>

</html> 

接下来总结一下ajax。
datatype为 text时,可以直接alert出文本,不用转格式,但是不能用键值对形式取值。
datatype为 json时,alert会显示object object,可以用方法alert(JSON.stringify(data));同样会显示文本;
alert(data.Mr)可以直接取到键值对的value。
再用document.getElementById("result2").innerHTML=data.M;即可在html中显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值