如何从jsp页面获取参数到java helper函数

时间:2015-05-24 17:34:27

标签: java jsp

我正在尝试从jsp文件的下拉菜单中获取a参数到我在java文件中的辅助函数。我正在检查用户是否单击了一个按钮然后我想采用“rows”参数。这就是下拉菜单的样子......

<div class="panel panel-default">
    <div class="panel-body">
        <div class="bottom-nav">
            <h4> Options </h4>
            <form action="AnalysisHelper.java"> 
                    <div>
                Rows: 
                    <select name="rows">
                        <option value="users">users</option>
                        <option value="states">states</option>
                    </select>
                </div>

                    <div>
                    <input type="submit" value="Next 20 Users" name="nextUsers">
                    <input type="submit" value="Next 10 products" name="nextProd">
                    <input type="submit" value="RUN QUERY!" name="run">
                </div>

这是我的助手功能:

package helpers;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

public class AnalysisHelper {

    public static List<AnalysisWithCategories> listAnalysis() {

        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        // list object holding data
        List<AnalysisWithCategories> analysis = new ArrayList<AnalysisWithCategories>();

        try {
            try {

                // connect to DB
                conn = HelperUtils.connect();

            } catch (Exception e) {

                // error
                System.err.println("Internal Server Error. This shouldn't happen.");
                return new ArrayList<AnalysisWithCategories>();
            }

            // get all the products
            stmt = conn.createStatement();

                        // check if user wants to filter results
            String runQuery = request.getParameter("run");
            if()

            // might need indexes on userandstates(u_id), userandproductsales(u_id), userandproductsales(p_id), product(p_id)
            rs = stmt.executeQuery("SELECT s.p_name, s.p_id, s.u_name, s.u_id, s.s_price, s.quantity, s.name, s.c_name, u.u_totalSales, p.p_totalSales" 
                    + " FROM userAndProductSales s" 
                    + " left outer join usersandstates u on u.u_id = s.u_id" 
                    + " join product p on p.p_id = s.p_id"
                    + " ORDER BY u_name, p_name LIMIT 20");

我已尝试request.getParameter("run")request.getParameter("rows"),但收到错误消息称“请求未解决”。如何将请求映射到我的jsp文件?或者,如果有另一种获取参数的方法,请告诉我。

1 个答案:

答案 0 :(得分:0)

这不仅仅是建筑问题。

你必须记住的是,JSP被编译成HTML并发送到客户端 - 一旦那里(或实际编译完成后),它就不知道服务器上发生了什么。它不再是JSP而且对Java一无所知。

如果要在服务器上调用函数,则需要公开函数(servlet,REST等)并通过客户端上的Javascript调用它。客户端不会(也不应该)知道服务器的内部 - 即使您作为程序员也这样做。

特别是要求不解决:

你需要编写一个函数,它将httprequest作为其参数之一,由网络通信框架(JEE,Spring,另一个servlet)注入 - 你可以在其上请求从客户端传递的参数(! )。魔术不会发生这种情况。 :-)