struts2中显示查询出来的结果集_2
如题,我从数据库查出的结果 需要显示到jsp页面上来,用的是struts2,现在查询的结果都能在控制台打印出来, jsp页面不显示,请高手指导。Action:
public class displayAction extends ActionSupport {
private List<String[]> resultlist;
public List<String[]> getResultlist() {
return resultlist;
}
public void setResultlist(List<String[]> resultlist) {
this.resultlist = resultlist;
}
public String execute() {
resultlist = display.display();
if (null != resultlist && resultlist.size() > 0) {
System.out.println(resultlist.size());
// ServletActionContext.getRequest().setAttribute("resultlist",resultlist);
// ActionContext.getContext().put("resultlist", resultlist);
// ActionContext.getContext().getSession().put("result", result);
return "have";
} else {
return "nothave";
}
}
Action中调用的display()方法代码:
public class display {
public static List<String[]> display(){
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/userlogin";
String user = "root";
String pwd = "xiao0923";
List<String[]> result = new LinkedList<String[]>();
try {
Class.forName(driver);
Connection conn = DriverManager.getConnection(url, user, pwd);
if (!conn.isClosed())
System.out.println("Succeeded connected!");
String sql = "SELECT filename,filecontent FROM file";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
String[] row = new String[2];
row[0] = rs.getString("filename");
System.out.println(row[0]);
row[1] = rs.getString("filecontent");
System.out.println(row[1]);
result.add(row);
}
rs.close();
conn.close();
return result;
} catch (ClassNotFoundException e) {
System.out.println("can't find driver!");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
显示用画面:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>display</title>
</head>
<body>
<table>
<s:iterator value="resultlist" status="index">
<tr>
<td><s:property value="filename" /></td>
<td><s:property value="filecontent" /></td>
</tr>
</s:iterator>
</table>
</body>
</html>
请高手指点 到底哪里错了 纠结好久了的 --------------------编程问答-------------------- filename 在哪里、、 --------------------编程问答-------------------- 能跳转至JSP页面吗 --------------------编程问答--------------------
数据库里面,看调用的方法 --------------------编程问答--------------------
<s:iterator value="resultlist" status="index">
<tr>
<td><s:property value="filename" /></td>
<td><s:property value="filecontent" /></td>
</tr>
</s:iterator>
你的这里有问题哦,你的list里不是对象比如a.filename,a.filecontent,而是String[] 系统不知道你的String[0]就是filename,String[1]就是filecontent --------------------编程问答-------------------- 而且你还没有将结果设置到request.setAttribute("resultlist",resultlist); --------------------编程问答--------------------
我看了一遍你的方法、、我说的是你没有声明filename
比如。你有个file实体、、里面有 filename属性、、声明getset
然后界面、file.filename
--------------------编程问答-------------------- 应该是你的属性没有声明get和set方法,导致在页面无法获得 --------------------编程问答--------------------
额。。。楼主刚刚做这种把?数据库有的字段查出来就能直接在页面显示?那就太酷了。。。。
1.你好像没有对应的getset方法,你是直接row[0] = rs.getString("filename");放到数组里面了,这样好像不行。。。没这样用过
2.你就没有把你的list结果集放进request里面。。。页面去哪里找这些数据啊。。。 --------------------编程问答-------------------- 如果后台已经可以打印出你查询的数据集合,那么前台直接遍历就行了,我一般使用el表达式,这样感觉比较简单 --------------------编程问答-------------------- 感觉你的后台是struts1 但是前台导入的标签是struts2的标签,即使是struts2的标签,你的标签用法也不对
<s:iterator id="ser" status="sta" value="#request.resultlist">
<s:property value="#ser.xxx"/>
</s:iterator>
xxx是你的实体类的属性
Map request = (Map)ActionContext.getContext().get("request");
后台request对象是这样获取的(如果是struts2) --------------------编程问答-------------------- <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" isELIgnored="false"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>display</title>
</head>
<body>
<table>
<c:forEach items=${resultlist} var="re">
<td>${re.filename}</td>
<td>${re.filecontent}</td>
</c:forEach>
</table>
</body>
</html>
试一下看看可以不
补充:Java , Web 开发