我正在尝试从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文件?或者,如果有另一种获取参数的方法,请告诉我。
答案 0 :(得分:0)
这不仅仅是建筑问题。
你必须记住的是,JSP被编译成HTML并发送到客户端 - 一旦那里(或实际编译完成后),它就不知道服务器上发生了什么。它不再是JSP而且对Java一无所知。
如果要在服务器上调用函数,则需要公开函数(servlet,REST等)并通过客户端上的Javascript调用它。客户端不会(也不应该)知道服务器的内部 - 即使您作为程序员也这样做。
特别是要求不解决:
你需要编写一个函数,它将httprequest作为其参数之一,由网络通信框架(JEE,Spring,另一个servlet)注入 - 你可以在其上请求从客户端传递的参数(! )。魔术不会发生这种情况。 :-)