Java 从数据库表中检索数据并用html将其显示在table中
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23141409/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
retrieve data from database table and display it in atable with html
提问by user3546361
i am a beginer and am currently working on my final school project which require retrieving data from a database table and displaying the datas in an html page. i have searched alot but still no progress. i was linked to this site through google, i saw a format and i try to do the same thing but after running the code i get this error
我是初学者,目前正在从事我的最终学校项目,该项目需要从数据库表中检索数据并在 html 页面中显示数据。我已经搜索了很多,但仍然没有进展。我通过谷歌链接到这个网站,我看到了一种格式,我尝试做同样的事情,但在运行代码后我得到这个错误
Exception report
异常报告
message An exception occurred processing JSP page /crimeinfo.jsp at line 32 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 /crimeinfo.jsp at line 32
29:
30:
31: <%List <String> data =(List)request.getAttribute("data");
32: Iterator <String> itr = data.iterator() ;
33: for (itr = data.iterator();
34: itr.hasNext();)
35: {%>
please i need help. i dont known what else to do. thnks...
请我需要帮助。我不知道还能做什么。谢谢...
viewcrime.xml
viewcrime.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--web.xml code-->
<servlet>
<servlet-name>viewcrimereport</servlet-name>
<servlet-class>viewcrimereport</servlet-class>
<servlet-mapping>
<servlet-name>viewcrimereport</servlet-name>
<url-pattern>viewcrimereport</url-pattern>
</servlet-mapping></servlet>
viewcrimereport.java
查看犯罪报告.java
public class viewcrimereport extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
private ServletConfig config;
String page = "crimeinfo.jsp";
public void init(ServletConfig config)
throws ServletException{
this.config = config; }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out=response.getWriter();
response.setContentType("text/html");
Connection conn = null;
String url = "jdbc:mysql://localhost/citycrime";
String userName = "root";
String passw = "jids";
PreparedStatement pst = null;
ResultSet rs;
ArrayList<String> datalist = new ArrayList<String>();
try{
int i=0;
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, passw);
pst = conn.prepareStatement("");
String sql ="select suspectname,suspectaliases,suspectht,suspectgender,features,crimeaddress,crimetype,caseno,casestatus from crimereport";
pst.executeQuery(sql);
rs = pst.getResultSet();
while(rs.next()){
datalist.add(rs.getString("suspectname"));
datalist.add(rs.getString("suspectaliases"));
datalist.add(rs.getString("suspectht"));
datalist.add(rs.getString("suspectgender"));
datalist.add(rs.getString("features"));
datalist.add(rs.getString("crimeaddress"));
datalist.add(rs.getString("crimetype"));
datalist.add(rs.getString("caseno"));
datalist.add(rs.getString("casestatus"));}
rs.close();pst.close(); }
catch(Exception e){System.out.println("Exception is;"+e);}
request.setAttribute("data",datalist);
RequestDispatcher dispatcher = request.getRequestDispatcher(page);
if (dispatcher != null){
dispatcher.forward(request, response);
}
}
}
crimeinfo.jsp
犯罪信息.jsp
<%@ page language="java" import="java.sql.*" import="java.util.*"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!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>Crime Report</title>
</head>
<body>
<table border="1" with="600">
<tr><td><tb><td>SuspectName</td></b>
<td><tb>SuspectAlias</b></td>
<td><tb>suspectaliases</tb></td>
<td><tb>Height</tb></td>
<td><tb>suspectht</tb></td>
<td><tb>Gender</tb></td>
<td><tb>suspectgender</tb></td>
<td><tb>Features</tb></td>
<td><tb>features</tb></td>
<td><tb>Address</tb></td>
<td><tb>crimeaddress</tb></td>
<td><tb>CrimeType</tb></td>
<td><tb>crimetype</tb></td>
<td><tb>CaseNumber</tb></td>
<td><tb>caseno</tb></td>
<td><tb>Status</tb></td>
<td><tb>casestatus</tb></td></tr>
<% Iterator <String> itr;%>
<%List data =(List)request.getAttribute("datalist");
for (itr = data.iterator();
itr.hasNext();){%><tr>
<%String s =(String)itr.next(); %>
<td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td>
<tr><td><%=itr.next()%>></td></tr><%} %>
</table>
</body>
</html>
回答by maxx777
At line 32, make it
Iterator itr = data.iterator() ;
I advise you to usewhile(itr.hasNext()
instaed of for loop for more clarity of the code. Also, the initialization part in the for loop is retundant.rename your xml file to
web.xml
and put it as\WEB-INF\web.xml
in web.xml, url-pattern should be
<url-pattern>/viewcrimereport</url-pattern>
for your servlet, since you have already extended
HttpServlet
class, there is no need to implementServlet
interface. HttpServlet class already implements that interfaceyou have not closed your connection. use
conn.close()
.in your jsp, it should be
<%List data =(List)request.getAttribute("data");
because you have set request attribute with namedata
and not "datalist"use of scriptlets (those
<% %>
things) are discouraged. see thissince you are not outputting anything from your servlet to your browser, you can omit the following code
PrintWriter out=response.getWriter(); response.setContentType("text/html");
in my personal opinion, i would suggest to use
service
instead ofdoGet()
. Service method will itself call the doGet method. Plus it can also invoke other meyhods like doPost, doHead etc if it requires.
在第 32 行,
Iterator itr = data.iterator() ;
我建议您使用while(itr.hasNext()
for 循环的 instaed 以使代码更清晰。此外,for 循环中的初始化部分是冗长的。将您的 xml 文件重命名
web.xml
为\WEB-INF\web.xml
在 web.xml 中,url-pattern 应该是
<url-pattern>/viewcrimereport</url-pattern>
对于您的 servlet,由于您已经扩展了
HttpServlet
类,因此无需实现Servlet
接口。HttpServlet 类已经实现了该接口您尚未关闭连接。使用
conn.close()
.在您的jsp中,应该是
<%List data =(List)request.getAttribute("data");
因为您设置了名称data
而不是“datalist”的请求属性<% %>
不鼓励使用脚本(那些东西)。看到这个由于您没有从 servlet 向浏览器输出任何内容,因此可以省略以下代码
PrintWriter out=response.getWriter(); response.setContentType("text/html");
在我个人看来,我建议使用
service
而不是doGet()
. Service 方法本身会调用 doGet 方法。此外,如果需要,它还可以调用其他方法,如 doPost、doHead 等。
回答by Kashish Narang
You can use the datalist.get(column index)
method of ArrayList
. For more details refer to:
http://www.tutorialspoint.com/java/java_arraylist_class.htm
您可以使用 的datalist.get(column index)
方法ArrayList
。更多详情请参考:http:
//www.tutorialspoint.com/java/java_arraylist_class.htm