struts1.2 从jsp页面传递数据到action的问题!!求解~~

snow4799 2011-01-03 08:41:51
在jsp页面显示两个下拉列表,选中值后查询,如何在action中得到所选的值,并从数据库查询

action代码如下,得不到getParameter("name")的值,jsp页面需要改动吗?


public class Search_disAction extends Action {




public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
Search_disForm search_disForm = (Search_disForm) form;

ArrayList<String> result=new ArrayList<String>();





try{
Connection con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=db_struts","sa","1234");

String name=request.getParameter("name");


String sql=" select con_id,con_name,total_in,total_out,total,date from tb_kucun where dis_name LIKE '"+name+"' and date in (select max(date) from tb_kucun group by con_name ) order by con_id";

Statement connection=con.createStatement();
ResultSet rs_result=connection.executeQuery(sql);
while(rs_result.next()){

result.add(rs_result.getString("con_id"));
result.add(rs_result.getString("con_name"));
result.add(rs_result.getString("total_in"));
result.add(rs_result.getString("total_out"));
result.add(rs_result.getString("total"));
result.add(rs_result.getString("date"));

}


if(rs_result!=null){
rs_result.close();
}
if(con!=null){
con=null;
} }catch (SQLException e) {}
request.setAttribute("result", result);
return mapping.findForward("success");
// TODO Auto-generated catch block

}
}[/size]
...全文
442 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
snow4799 2011-01-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jaykenhomee 的回复:]
对了jsp页面的 List list=airD.findAllName();
写漏了一点应该是: List list=airD.findAllName(name); (你要查找的名字)
(由于某些原因,这是我的第二个号,有什么不懂的可以再问问)
[/Quote]

有点不太懂,可能没理解我的意思。我是想把jsp页面中选定的值传递到对应的action页面中,
用request.getParameter("name")得不到值是什么问题呢?
snow4799 2011-01-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jaykenhomee 的回复:]
对了jsp页面的 List list=airD.findAllName();
写漏了一点应该是: List list=airD.findAllName(name); (你要查找的名字)
(由于某些原因,这是我的第二个号,有什么不懂的可以再问问)
[/Quote]

不太懂你的意思,我是在jsp页面中有个name的下拉列表,从中选择name作为查询数据库的条件,在jsp所对应的Ation中查询最终结果,怎么能把选中的name值传递到action中??
Spring89 2011-01-04
  • 打赏
  • 举报
回复
String name=request.getParameter("name");

得不到值,select的name属性是不是为getParameter的参数一样!
陈志凯 2011-01-04
  • 打赏
  • 举报
回复
呵呵,不还意思,是我的表达不清楚,List list=airD.findAllName(name)这是根据你的姓名查找对应的信息,上面的JSP页面就是action页面,list里边包含了所有数据库里你定义的Search_disForm类 的内容,
request.getParameter("name")得不到值是因为你没传进来,不是上个页面设置有问题,就是你的action的public class Search_disAction extends Action方法写法有误,建议你的action的jsp页面这样写:(主要的)
<%page import="implDao.*" %> //导入这个类里边的东西(包)
<html>
<body>
<table boder="0">
<tr>
<td>
<option value="xiaoqiang">查看XXXXX</option>
<%
//假设上面的JAVA页面的类名定为implDao (即包含findAllName()这个方法的类名)
implDao airD=new implDao();

List list=airD.findAllName(request.getParameter("name"));
for(int i=0;i<list.size();i++)
{
Search_disForm Se=(Search_disForm )list.get(i);

%>



<option value=<%=Se.getCon_name() %> >
<%
%>
<%=Se.getCon_name() %>
<%
%>
</option>

<%
}
%>
</tr>
</table>
</body>
</html>


现在假设传进来action页面的jsp页面是这样写的(主体):
<html>
<body>
<form name="myform" action="action.jsp">
<table>
<tr>
<td>
<input type="text" name="name" id="name"></td>
<td><input type="submit" name="submit" value="提交"></td>
</tr>
//不想用表格,这样写也可以<a href="action.jsp?name=XXX"></a> (XXX是你想传进action页面的值)
</table>
</form>
</body>
</html>
够详细了吧?
X00608 2011-01-03
  • 打赏
  • 举报
回复
真纠结, 这么看代码会死人去。。。
jaykenhomee 2011-01-03
  • 打赏
  • 举报
回复
对了jsp页面的 List list=airD.findAllName();
写漏了一点应该是: List list=airD.findAllName(name); (你要查找的名字)
(由于某些原因,这是我的第二个号,有什么不懂的可以再问问)
陈志凯 2011-01-03
  • 打赏
  • 举报
回复
对了:
List list=airD.findAllName();
中的airD是你自定义上面那个java类的初始化简称,这个懂吧?
举例:
相当于你的:
Search_disForm search_disForm = new (Search_disForm) form 中的search_disForm ,上面的好像写少了个关键字new
陈志凯 2011-01-03
  • 打赏
  • 举报
回复
在JSP页面这样写:(关键的:)
<option value="xiaoqiang">查看XXXXX</option>
<%

List list=airD.findAllName();
for(int i=0;i<list.size();i++)
{
Search_disForm Se=(Search_disForm )list.get(i);

%>



<option value=<%=Se.getCon_name() %> >
<%
%>
<%=Se.getCon_name() %>
<%
%>
</option>

<%
}
%>
陈志凯 2011-01-03
  • 打赏
  • 举报
回复
首先在后缀名为java的文件里写方法:
private Connection conn = null; // 保存数据库连接
private PreparedStatement pstmt = null; // 用于执行SQL语句
private ResultSet rs = null; // 用户保存查询结果集

public List findAllName(String name) {
// TODO Auto-generated method stub

List list=new ArrayList();

String sql="select con_id,con_name,total_in,total_out,total,date from tb_kucun where dis_name LIKE '"+name+"' and date in (select max(date) from tb_kucun group by con_name ) order by con_id";
try
{

conn=this.getConn();
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
/*将结果集中的的信息(从数据库里得到的)取出保存到List中*/
while(rs.next())
{
Search_disForm search_disForm = (Search_disForm) form;

result.add(rs.getString("con_id"));
result.add(rs.getString("con_name"));
result.add(rs.getString("total_in"));
result.add(rs.getString("total_out"));
result.add(rs.getString("total"));
result.add(rs.getString("date"));
list.add(result);
}


}
catch(Exception e)
{e.printStackTrace();}
finally{
this.closeALL(conn, pstmt, rs);

}
return list;
}

snow4799 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 czk740960212 的回复:]
你表达的不好,还有在JSP页面里写这些数据库操作方法是很不好的,
String name=search_disForm.getName(); 取不到值,是因为你根本没设置过他的值,
[/Quote]
那是将这些都写在action里吗?怎么实现从数据库读的值在下拉列表里显示呢~~
陈志凯 2011-01-03
  • 打赏
  • 举报
回复
你表达的不好,还有在JSP页面里写这些数据库操作方法是很不好的,
String name=search_disForm.getName(); 取不到值,是因为你根本没设置过他的值,

snow4799 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gl74gs48 的回复:]
Search_disForm search_disForm = (Search_disForm) form;

String name=search_disForm.getName();
[/Quote]
这样改过也不行~~
snow4799 2011-01-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xiaoye2892 的回复:]
select的name貌似要封装在ActionForm中
然后通过action中ActionForm读值 而不是request
[/Quote]
这个name在form里定义了,那怎么读取呢??
阿甘1976 2011-01-03
  • 打赏
  • 举报
回复
Search_disForm search_disForm = (Search_disForm) form;

String name=search_disForm.getName();

happyfmy 2011-01-03
  • 打赏
  • 举报
回复
select的name貌似要封装在ActionForm中
然后通过action中ActionForm读值 而不是request

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧