从JSP调用Java方法而不是wotking

时间:2017-03-26 14:47:15

标签: java jsp servlets rcaller

我试图在JSP页面('button1')上单击特定按钮时调用运行某些r代码(使用RCaller)的java方法('method1'),但是当我单击按钮时它不会什么都不做,我的输出没有错误。我正在尝试使用servlet从JSP文件运行java方法。我很感激任何帮助。

Analysis.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="style.css">
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Analysis Page</title>
    </head>
    <body>
    <center><h2>
            Final year Prototype
        </h2></center>

    <center> <table border="0">
            <thead>
                <tr>
                    <th>Disabilities Analysis</th>
                </tr>
            </thead>
            <tbody>
                <tr>
            <center><td></td></center>
            </tr>
            <tr>
                <td>
            <center>
                <a href="index.jsp" class="myButton">Current HSE Support Centre Locations</a>
            </center>
            </td>
            </tr>
            <tr>
                <td>
            <center>
                <a href="index.jsp" class="myButton">New HSE Support Centre Locations</a>
            </center>
            </td>
            </tr>
            <tr>
                <td>
            <center>
                <form action="${pageContext.request.contextPath}/myservlet" method="POST">
                    <button type="submit" name="button" value="button1">Button 1</button>
                    <button type="submit" name="button" value="button2">Button 2</button>
                    <button type="submit" name="button" value="button3">Button 3</button>
                </form>
            </center>
            </td>
            </tr>
            <tr>
                <td>
            <center>
                <a href="index.jsp" class="myButton">Return</a>
            </center>
            </td>
            </tr>
            </tbody>
        </table></center>
</body>
</html>

myServlet.java:

package webJava;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/myservlet")
public class MyServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        TestMethods t = new TestMethods();
        String button = request.getParameter("button");

        if ("button1".equals(button)) {
            t.method1();
        } else if ("button2".equals(button)) {
            t.method2();
        } else if ("button3".equals(button)) {
            t.method3();
        } else {

        }

        request.getRequestDispatcher("/Analysis.jsp").forward(request, response);
    }

}

TestMethods.java:

package webJava;

import java.io.File;
import javax.swing.ImageIcon;
import rcaller.RCaller;
import rcaller.RCode;


public class TestMethods {

    public void method1() {    
        try {
            RCaller caller = new RCaller();
            RCode code = new RCode();
            caller.setRscriptExecutable("/Library/Frameworks/R.framework/Versions/3.3/Resources/Rscript");
            caller.cleanRCode();
            caller.setRCode(code);

            // load the ggplot2 library into R
            code.R_require("ggplot2");

            // create a data frame in R using x and y variables
            code.addRCode("df <- data.frame(x,y)");

            // plot the relationship between x and y
            File file = code.startPlot();
            code.addRCode("ggplot(df, aes(x, y)) + geom_point() + geom_smooth(method='lm') + ggtitle('y = f(x)')");
            caller.runOnly();
            ImageIcon ii = code.getPlot(file);
            code.showPlot(file);
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }

    public void method2() {
        //some code
    }

    public void method3() {
        //some code
    }

}

我的项目目录:

Screenshot

0 个答案:

没有答案