百度链接IDM小工具V1.7(附带源码)

https://www.52pojie.cn/thread-1216514-1-1.html

package com.example.janinodemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * http://janino-compiler.github.io/janino/
 * 需要再深入janino
 * 将web界面的输入与后台处理做得更好
 */
@SpringBootApplication
public class JaninoDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(JaninoDemoApplication.class, args);
    }

}

package com.example.janinodemo;

import org.codehaus.commons.compiler.CompileException;
import org.codehaus.janino.ScriptEvaluator;

import java.lang.reflect.InvocationTargetException;

public class JaninoEEMethodTest {
    public static void main(String[] args) {
        ScriptEvaluator se = new ScriptEvaluator();
        try {
            se.cook(
                    ""
                    +"static void method1(){
"
                    +" System.out.println(1);
"
                    +"}
"
                    +"method1();
"
                    +"method2();
"
                    +"
"
                    +"static void method2() {
"
                    +" System.out.println(2);
"
                    +"}
"
            );
            //求值
            se.evaluate(new Object[0]);
        } catch (CompileException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } finally {
        }
    }
}

package com.example.janinodemo;
import org.codehaus.janino.ExpressionEvaluator;

/**
 * @author ukyo
 * 测试使用janino
 * 老师推荐
 */
public class JaninoEETest {
    public static void main(String[] args) {
        //Now here's where the story begins...
        try {
            ExpressionEvaluator ee = new ExpressionEvaluator();
//            ee.cook("3 + 4");
//            System.out.println(ee.evaluate(null));

            //The expression will have two "int" parameters:"a" and "b"
            ee.setParameters(new String[]{"a","b"},new Class[]{int.class,int.class});

            //And the expression(i.e. "result")type is also "int".
            ee.setExpressionType(int.class);

            //And now we "cook"(scan,parse,compile and load)the fabulous expression.
            ee.cook("a+b");

            //Eventually we evaluate the expression - and that goes super-fast.
            int result = (Integer) ee.evaluate(new Object[]{19,23});
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }

    }
}

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>edit codes</title>
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
    <style>
        textarea::-webkit-input-placeholder {
            /* WebKit browsers */
            color:orangered;
        }
        textarea:-moz-placeholder {
            /* Mozilla Firefox 4 to 18 */
            color: orangered;
        }
        textarea::-moz-placeholder {
            /* Mozilla Firefox 19+ */
            color: orangered;
        }
        textarea::-ms-input-placeholder {
            /* Internet Explorer 10+ */
            color: orangered;

        }

    </style>
</head>
<body>
<textarea rows="30" cols="130" id="textarea1"
          placeholder="please code here~~" style="background-color: blue;color: snow">
public static void main(){


}

main();
</textarea>
<textarea rows="30" cols="50" id="textarea2"
          placeholder="" style="background-color: black;color: snow">
public static boolean testEquals(int[] arr1,int[] arr2){

    if(arr1.length!=arr2.length){
        return false;
    }
    int arrLenth = arr1.length;
    while(arrLenth!=0){
        if(arr1[arrLenth -1]!=arr2[arrLenth -1]){
            return false;
        }
        arrLenth --;
    }
    return true;
}



</textarea>
<br>
<button id="submitBtn">提交运行</button>
<br>
<h3>运行结果:</h3>
<div style="background-color: lightsalmon">
<span id="cookResult"></span>
</div>
</body>
<script>
    $("#submitBtn").click(cook);

    function cook(){
        $.ajax({
            url:'/edit/cookCodes',
            type:"POST",
            data:{"codes":$("#textarea1").val(),"codes2":$("#textarea2").val()},
            // data:{"codes":$("#textarea1").val()},
            dataType:"json",
            success:function(data){
                if(data.success){
                    $("#cookResult").html(data.print)
                }else{
                    $("#cookResult").html("");
                }
            }
        })
    }


</script>
</html>
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>
<h1>code online</h1>
index
<a href="/edit">code edit</a>
</body>
</html>
        <!-- https://mvnrepository.com/artifact/org.codehaus.janino/janino -->
        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>janino</artifactId>
            <version>3.1.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.codehaus.janino/commons-compiler -->
        <dependency>
            <groupId>org.codehaus.janino</groupId>
            <artifactId>commons-compiler</artifactId>
            <version>3.1.2</version>
        </dependency>
原文地址:https://www.cnblogs.com/ukzq/p/13285208.html