Action文件:
package action;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;public class enterToGetListToGatherAction extends Action { @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors();
try{
Context ctx=new InitialContext();
Connection conn=null;
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn=ds.getConnection(); String sqlStr1 = new String("select count(*) as rscount from registryInfo where registerFlag=1");
String sqlStr2 = new String("select * from registryInfo where registerFlag=1");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sqlStr1);
if(rs.next()){
int i = 0;
Object[][] rsArray = new Object[rs.getInt("rscount")][10];
Statement stmt1 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs1 = stmt1.executeQuery(sqlStr2);
while(rs1.next()){
rsArray[i][0] = rs1.getString("registerID");
rsArray[i][1] = rs1.getString("instrID");
rsArray[i][2] = rs1.getString("instrCode");
rsArray[i][3] = rs1.getString("instrIP");
rsArray[i][4] = rs1.getString("instrPort");
rsArray[i][5] = rs1.getString("sampleRate");
rsArray[i][6] = rs1.getString("channelNum");
rsArray[i][7] = rs1.getString("itemCode");
rsArray[i][8] = rs1.getString("registerTime");
rsArray[i][9] = rs1.getString("registerFlag");
i++;
}
request.setAttribute("rsArray", rsArray);
}
rs.close();
stmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
errors.add("DBError", new ActionMessage("DBError"));
}
return mapping.findForward("EnterToGather");
}}
前台JSP文件
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<title>选择仪器查看采数状态</title>
<script type="text/javascript">
function SubmitControl(id){
alert(id);
window.location="viewDataTable.do?instrCode="+id;
}
</script>
</head>
<body bgcolor="#DCDADA">
<select name="device">
<option value="">--请选择仪器--<option>
<c:forEach items="${requestScope.rsArray}" var="record">
<option value="${record[0]}">${record[1]}<option>
</c:forEach>
</select>
<input type="button" onclick="SubmitControl(${record[0]})" value="查看采数状态">
</body>
</html:html>我在按钮提交时无法拿到record[0]的值,改成<input type="button" onclick="SubmitControl(${requestScope.rsArray})" value="查看采数状态">请问Action中的request.SetAttribute在前台怎么取值?
package action;import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;public class enterToGetListToGatherAction extends Action { @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors();
try{
Context ctx=new InitialContext();
Connection conn=null;
DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/mysql");
conn=ds.getConnection(); String sqlStr1 = new String("select count(*) as rscount from registryInfo where registerFlag=1");
String sqlStr2 = new String("select * from registryInfo where registerFlag=1");
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sqlStr1);
if(rs.next()){
int i = 0;
Object[][] rsArray = new Object[rs.getInt("rscount")][10];
Statement stmt1 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs1 = stmt1.executeQuery(sqlStr2);
while(rs1.next()){
rsArray[i][0] = rs1.getString("registerID");
rsArray[i][1] = rs1.getString("instrID");
rsArray[i][2] = rs1.getString("instrCode");
rsArray[i][3] = rs1.getString("instrIP");
rsArray[i][4] = rs1.getString("instrPort");
rsArray[i][5] = rs1.getString("sampleRate");
rsArray[i][6] = rs1.getString("channelNum");
rsArray[i][7] = rs1.getString("itemCode");
rsArray[i][8] = rs1.getString("registerTime");
rsArray[i][9] = rs1.getString("registerFlag");
i++;
}
request.setAttribute("rsArray", rsArray);
}
rs.close();
stmt.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
errors.add("DBError", new ActionMessage("DBError"));
}
return mapping.findForward("EnterToGather");
}}
前台JSP文件
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html:html>
<head>
<title>选择仪器查看采数状态</title>
<script type="text/javascript">
function SubmitControl(id){
alert(id);
window.location="viewDataTable.do?instrCode="+id;
}
</script>
</head>
<body bgcolor="#DCDADA">
<select name="device">
<option value="">--请选择仪器--<option>
<c:forEach items="${requestScope.rsArray}" var="record">
<option value="${record[0]}">${record[1]}<option>
</c:forEach>
</select>
<input type="button" onclick="SubmitControl(${record[0]})" value="查看采数状态">
</body>
</html:html>我在按钮提交时无法拿到record[0]的值,改成<input type="button" onclick="SubmitControl(${requestScope.rsArray})" value="查看采数状态">请问Action中的request.SetAttribute在前台怎么取值?
页面里面
<bean:write name="ErrorMessage" scope="request" />
就把值取出来了,建议楼主不要用el表达式和jstl标签,既然用了struts标签,那就用struts标签来做
再说struts标签完全可以代替那些标签,html标签等
Object[][] objs = (Object[][])request.getAttribute("rsArray");
%>之后遍历输出二维数组即可。
但我弄不明白,你为啥要用二维数组类?? 把数据库记录风装成Pojo多好!
<select name="device">
<option value="">--请选择仪器--<option>
<c:forEach items="${requestScope.rsArray}" var="record">
<option value="${record[0]}">${record[1]}<option>
</c:forEach>
</select>
就可以很方便的将第一个ID值装入value中,第二个name值在页面上显示,请问Pojo是怎么回事?能介绍一下吗?
不过这样也行用:
request.setattribute("name",string [] str);//request.setattribute("name",object)object 什么类型都行要jdk1.6支持
${requestScope.NAME}
String str="test";
request.setAttribute("str", str); 在JSP页面获取
方法1:
<%String str = request.getAttribute("str");%>方法2,用EL表达式:
<input type="text" value="${str}" />
EL 就直接用了比如<c:forEach var="arr" items=${rsArray}>
1楼结果集为何不用list或arraylist啊