后台数据传到前台,使用jsp显示问题

6饼 2017-03-04 04:53:12
我后台有个arraylist传到前台,然后在前台jsp页面中显示出现了错误.经过测试,后台中的数据已经存在了arraylist中

后台返回arraylist的servlet类如下:
package com.zyh.action;

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

import com.zyh.dao.Exam;

/**
* Project Name: sdut-deliver File name: Query.java
*
* @author : zyh
* @version 创建时间:2017年3月4日 上午12:24:29 TODO
*/
public class Query {

public ArrayList query(String name) {
System.out.println("已经进入Qquery");
String url = "jdbc:mysql://localhost:3306/sdutEXAM?useSSL=false";
String user = "root";
String password = "root";
String driver = "com.mysql.jdbc.Driver";

try {
Class.forName(driver);

Connection conn = DriverManager.getConnection(url, user, password);
if (!conn.isClosed())
System.out.println("Succeeded connecting to the Database!");
Statement stmt = conn.createStatement();

String sqlseme = "select course_name,teacher_name,course_name,exam_time,"
+ "exam_week,class_name,campus,remarks,semester from exam " + "where semester= " + name;

ResultSet rs = stmt.executeQuery(sqlseme);

Exam exam = new Exam();
ArrayList arrayList = new ArrayList();

while (rs.next()) {
exam.course_name = rs.getString("course_name");// 课程名称
exam.teacher_name = rs.getString("teacher_name");// 代课老师
exam.exam_time = rs.getString("exam_time");// 考试时间(按具体日期算)
exam.exam_week = rs.getString("exam_week");// 考试时间(按周算)
exam.class_name = rs.getString("class_name");// 考试地点
exam.campus = rs.getString("campus");// 校区
exam.remarks = rs.getString("remarks");// 系别
exam.semester = rs.getString("semester");// 学期

arrayList.add(exam);

System.out.println(exam.course_name+" "+exam.teacher_name+" "+exam.course_name+" "+exam.exam_time+" "+exam.exam_week+" "+exam.class_name+" "+exam.campus+" "+exam.remarks+" "+exam.semester);

System.out.println();
}
return arrayList;

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;

}

}


前台负责显示的jsp界面为

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>sss</title>
</head>
<body>
后台数据已经获取完成,现在开始在前台显示.


<C:forEach items="${arrayList}" var="arrayList" varStatus="status">
<tr>
<td>${arrayList.course_name}</td>
<td>${arrayList.teacher_name}</td>
<td>${arrayList.exam_time}</td>
<td>${arrayList.exam_week}</td>
<td>${arrayList.class_name}</td>
<td>${arrayList.campus}</td>
<td>${arrayList.remarks}</td>
<td>${arrayList.semester}</td>
</tr>
</C:forEach>

</body>
</html>




错误提示

HTTP Status 500 - An exception occurred processing JSP page /test.jsp at line 14

type Exception report

message An exception occurred processing JSP page /test.jsp at line 14

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /test.jsp at line 14

11:
12: <C:forEach items="${arrayList}" var="arrayList" varStatus="status">
13: <tr>
14: <td>${arrayList.course_name}</td>
15: <td>${arrayList.teacher_name}</td>
16: <td>${arrayList.exam_time}</td>
17: <td>${arrayList.exam_week}</td>


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
com.zyh.action.SemesterCheck.doPost(SemesterCheck.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
root cause

java.lang.NumberFormatException: For input string: "course_name"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
javax.el.ListELResolver.coerce(ListELResolver.java:163)
javax.el.ListELResolver.getValue(ListELResolver.java:51)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:1026)
org.apache.jsp.test_jsp._jspService(test_jsp.java:77)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
com.zyh.action.SemesterCheck.doPost(SemesterCheck.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.

Apache Tomcat/7.0.47
...全文
2006 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
6饼 2017-03-05
  • 打赏
  • 举报
回复
已经输出来了,谢谢大家的帮助哈! ,循环输出的代码这样写就能输出来 1.可能的原因:items和var变量名冲突,让两个值不一样 2.我之前写的(c:forEach)标签中的C是大写的,我现在改成小写的c后就可以输出了.
<body>
	以下内容为要输出的内容</br>
	<c:forEach items="${arrayList}" var="array">
		
		<td>${array.course_name}</td>
		<td>${array.teacher_name}</td>
		<td>${array.exam_time}</td>
		<td>${array.exam_week}</td>
		<td>${array.class_name}</td>
		<td>${array.campus}</td>
		<td>${array.remarks}</td>
		<td>${array.semester}</td>
		<br />
	</c:forEach>
</body>
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 6 楼 pany1209 的回复:
[quote=引用 3 楼 u013492736 的回复:] [quote=引用 1 楼 pany1209 的回复:] java.lang.NumberFormatException: For input string: "course_name"数字格式化异常。。。。检查一下这个course_name
再加一下信息,数据格式应该没错啊,bean里面是string类型的,传到前台显示不了,难道是因为变量名中有下划线(比如course_name)
package com.zyh.dao;

/**
 * Project Name: sdut-deliver File name: Exam.java
 * 
 * @author : zyh
 * @version 创建时间:2017年3月3日 下午10:41:26 TODO
 */
public class Exam {

	public String course_name;// 课程名称
	public String teacher_name;// 代课老师
	public String exam_time;// 考试时间(按具体日期算)
	public String exam_week;// 考试时间(按周算)
	public String class_name;// 考试地点
	public String campus;// 校区
	public String remarks;// 系别
	public String semester;// 学期
	
	public String getCourse_name() {
		return course_name;
	}
	public void setCourse_name(String course_name) {
		this.course_name = course_name;
	}
	public String getTeacher_name() {
		return teacher_name;
	}
	public void setTeacher_name(String teacher_name) {
		this.teacher_name = teacher_name;
	}
	public String getExam_time() {
		return exam_time;
	}
	public void setExam_time(String exam_time) {
		this.exam_time = exam_time;
	}
	public String getExam_week() {
		return exam_week;
	}
	public void setExam_week(String exam_week) {
		this.exam_week = exam_week;
	}
	public String getClass_name() {
		return class_name;
	}
	public void setClass_name(String class_name) {
		this.class_name = class_name;
	}
	public String getCampus() {
		return campus;
	}
	public void setCampus(String campus) {
		this.campus = campus;
	}
	public String getRemarks() {
		return remarks;
	}
	public void setRemarks(String remarks) {
		this.remarks = remarks;
	}
	public String getSemester() {
		return semester;
	}
	public void setSemester(String semester) {
		this.semester = semester;
	}
	
	
	
}
package com.zyh.action;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.jasper.tagplugins.jstl.core.Choose;

import com.zyh.dao.Exam;
import com.zyh.dao.ss;

/**
 * Project Name: sdut-deliver File name: SemesterCheck.java
 * 
 * @author : zyh
 * @version 创建时间:2017年3月3日 下午11:14:41 TODO
 */
public class SemesterCheck extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		String id = req.getParameter("choose");
		System.out.println("choose = " + id);
		
		Query seme = new Query();
		ArrayList arrayList = seme.query(id);
		System.out.println("进入semestercheck");
		req.setAttribute("arrayList", arrayList );
		req.getRequestDispatcher("/test.jsp").forward(req, resp);
//		  System.out.println("没有跳转");
		
		
	}
}
[/quote]你的所有arrayList都改成arrayList[0]再加上属性试试[/quote] 我把arraylist改成了泛型,就是我自己这个bean的泛型,我测试后,list中,已经存有数据了,我在前台输出的jsp文件,按照你说的加上了[0],然后输出了,只输出了第一条数据,,是循环没执行吗
<C:forEach items="${arrayList}" var="arrayList" >
		<tr>
			<td>${arrayList[0].course_name}</td>
			<td>${arrayList[0].teacher_name}</td>
			<td>${arrayList[0].exam_time}</td>
			<td>${arrayList[0].exam_week}</td>
			<td>${arrayList[0].class_name}</td>
			<td>${arrayList[0].campus}</td>
			<td>${arrayList[0].remarks}</td>
			<td>${arrayList[0].semester}</td>
		</tr>
		
 	</C:forEach> 
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 29 楼 yyz3366 的回复:
<C:forEach items="${arrayList}" var="array" begin="1"> <td>${array}</td> </C:forEach> 属性去掉看能不能打印出东西
还是不行,还是没有数据,不会是arraylist里没有数据吧
yyz3366 2017-03-05
  • 打赏
  • 举报
回复
<C:forEach items="${arrayList}" var="array" begin="1"> <td>${array}</td> </C:forEach> 属性去掉看能不能打印出东西
ljheee 2017-03-05
  • 打赏
  • 举报
回复
C大写,尽然 编译不报错
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 26 楼 qq_35976173 的回复:
不用下标了,直接arrayList.course_name就行了


这样的话,没有错误了,但是没有输出数据,原本应该在下面图片右边的空白出输出数据的

6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 26 楼 qq_35976173 的回复:
不用下标了,直接arrayList.course_name就行了
你的意思是 这样就可以吗
<C:forEach items="${arrayList}" var="array" begin="1">
			
		<td>${array.course_name}</td>
		<td>${array.teacher_name}</td>
		<td>${array.exam_time}</td>
		<td>${array.exam_week}</td>
		<td>${array.class_name}</td>
		<td>${array.campus}</td>
		<td>${array.remarks}</td>
		<td>${array.semester}</td>
		<br />
	</C:forEach>

LeoChen晓阳 2017-03-05
  • 打赏
  • 举报
回复
不用下标了,直接arrayList.course_name就行了
墨笙弘一 2017-03-05
  • 打赏
  • 举报
回复
引用 9 楼 u013492736 的回复:
[quote=引用 8 楼 u012934325 的回复:] 你用的是el表达式取值,应该是实体对象.属性 这样取值吧,你的list中只是存储了这个对象的各个属性值,但它不是该对象,怎么取值。。。
那应该怎么取值呢,刚用el这块[/quote] 你在Java代码里面创建个该实体的对象,然后循环一下集合,把每个属性都赋值给对象,最后返回vo就可以了,在EL中直接用vo.attributeName
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 22 楼 qq_35976173 的回复:
在 <C:forEach items="${arrayList}" var="arrayList"> : <td>${arrayList.course_name}</td><br /> </C:forEach> 中的var="arrayList"后面加上这句代码begin="1",意思是遍历循环的开始索引即从一个行数据开始循环。
加上后,那么 <td>${arrayList[下标].course_name}</td><br /> ,这段代码中的"下标"应该写什么
yannsPeng 2017-03-05
  • 打赏
  • 举报
回复
引用 21 楼 u013492736 的回复:
[quote=引用 20 楼 baidu_27893705 的回复:] 你要迭代的是i。
确实是,但是i怎么定义?不能像在java程序中那么定义[/quote] <c:forEach>标签,需要与el表达式联合使用 <c:forEach>标签的语法定义如下所示。 <c:forEach var="每个变量名字" items="要迭代的list" varStatus="每个对象的状态" begin="循环从哪儿开始" end="循环到哪儿结束" step="循环的步长"> 循环要输出的东西 </c:forEach> <c:forEach>标签具有以下一些属性:
LeoChen晓阳 2017-03-05
  • 打赏
  • 举报
回复
在 <C:forEach items="${arrayList}" var="arrayList"> : <td>${arrayList.course_name}</td><br /> </C:forEach> 中的var="arrayList"后面加上这句代码begin="1",意思是遍历循环的开始索引即从一个行数据开始循环。
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 20 楼 baidu_27893705 的回复:
你要迭代的是i。
确实是,但是i怎么定义?不能像在java程序中那么定义
yannsPeng 2017-03-05
  • 打赏
  • 举报
回复
你要迭代的是i。
yannsPeng 2017-03-05
  • 打赏
  • 举报
回复
arraylist。。。一个list怎么能有属性,全部换成arraylist[i].属性
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 17 楼 yyz3366 的回复:
你把foeach标签的这个var="arrayList",换成var="item",然后下面的用item替换掉arrayList试下, 我怀疑是变量名冲突了
改了变量名之后不报错了,但是没有前端jsp界面没有输出数据来,空白一片?但是我在后台,把数据加到list后,迭代测试输出了arraylist中的数据,是存在.
yyz3366 2017-03-05
  • 打赏
  • 举报
回复
你把foeach标签的这个var="arrayList",换成var="item",然后下面的用item替换掉arrayList试下, 我怀疑是变量名冲突了
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 15 楼 yyz3366 的回复:
这样呢?<td>${arrayList[0].source_name}</td>
这样只能输出数据表中的第一条数据的source_name.其他的没有输出. 如果定义一个下标的话,我觉得应该可以?但是在这个循环中怎么定义?
yyz3366 2017-03-05
  • 打赏
  • 举报
回复
这样呢?<td>${arrayList[0].source_name}</td>
6饼 2017-03-05
  • 打赏
  • 举报
回复
引用 13 楼 yyz3366 的回复:
先<td>${arrayList}</td>这样看下能否打印结果
输出的是这个
[com.zyh.dao.Exam@9656dd2, com.zyh.dao.Exam@5074f46c, com.zyh.dao.Exam@4c3ededd, com.zyh.dao.Exam@4e3849d0, com.zyh.dao.Exam@6c91b638, com.zyh.dao.Exam@1b31e852, com.zyh.dao.Exam@214305df, com.zyh.dao.Exam@2db9beee, com.zyh.dao.Exam@4cf8fd17, com.zyh.dao.Exam@589fefa2, com.zyh.dao.Exam@61cb6493, com.zyh.dao.Exam@1e5f88a, com.zyh.dao.Exam@afebde4, com.zyh.dao.Exam@2d3bb1e6, com.zyh.dao.Exam@176eb72e, com.zyh.dao.Exam@39e13ce1, com.zyh.dao.Exam@468fa7a4, com.zyh.dao.Exam@364b8a12, com.zyh.dao.Exam@54fe8c32, com.zyh.dao.Exam@6448a478, com.zyh.dao.Exam@5f419dd2, com.zyh.dao.Exam@35b08732, com.zyh.dao.Exam@150f02aa, com.zyh.dao.Exam@34450f17, com.zyh.dao.Exam@6739ab40, com.zyh.dao.Exam@56012982] 
加载更多回复(15)

81,092

社区成员

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

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