如何在网页中显示数据库中的数据?
在过去的三天里,我一直在尝试开发一个基于 Web 的 CRUD 应用程序,它可以执行所有 CRUD 操作。考虑到代码的复杂性,我决定先显示数据,然后才能继续进行进一步的 CRUD 操作。
对于这个应用程序,我在这里发布了几个问题。从我的答案到现在为止。
这是我的完整源代码。它没有显示任何错误。但我无法获得输出。
我的服务器端代码中有两个类。对我来说,它看起来不错。但它需要更多的东西才能活跃起来。这是一个很棒的论坛,请告诉我,我该如何克服这个问题。
1) EmpApp.java 只需考虑 getAllEmployee() 方法,忽略其余的。
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import com.mysql.jdbc.PreparedStatement;
public abstract class EmpApp implements Set<Employee>
{
public Set<EmpApp> empobj = new HashSet<EmpApp>();
private Set<Employee> persons = new HashSet<Employee>();
public boolean add(Employee employee) {
return persons.add(employee);
}
public EmpApp(){
}
public Set<EmpApp> getAllEmp()
{
return empobj;
}
public void addEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
int tempID = employee.getId();
String tname = employee.getName();
int tage = employee.getAge();
String tdept = employee.getDept();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.prepareStatement("INSERT INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
pstmt.setInt(1, tempID);
pstmt.setString(2, tname);
pstmt.setInt(3, tempID);
pstmt.setString(4, tdept);
pstmt.executeUpdate();
}
public void updateEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
int tempID = employee.getId();
String tname = employee.getName();
int tage = employee.getAge();
String tdept = employee.getDept();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.createStatement();
pstmt = (PreparedStatement) con.prepareStatement("UPDATE PERSON SET NAME=?, AGE=?, DEPT=? WHERE ID=?");
pstmt.setInt(2, tage);
pstmt.setString(1, tname);
pstmt.setString(3, tdept);
pstmt.setInt(4, tempID);
pstmt.executeUpdate();
}
public void deleteEmployee(Employee employee) throws ClassNotFoundException, SQLException
{
int eid = employee.getId();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.createStatement();
pstmt = (PreparedStatement) con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
pstmt.executeUpdate("DELETE FROM PERSON WHERE ID="+eid);
}
@SuppressWarnings("unchecked")
private Set<EmpApp> getAllEmployee() throws ClassNotFoundException, SQLException
{
Employee employee = new Employee();
Statement stmt;
ResultSet rs;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
stmt = con.createStatement();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("SELECT * " + "from person ORDER BY ID");
while(rs.next())
{
String name = rs.getString(2);
employee.setName(name);
int id = rs.getInt(1);
employee.setId(id);
String dept = rs.getString(4);
employee.setDept(dept);
int age = rs.getInt(3);
employee.setAge(age);
empobj.addAll((Collection<? extends EmpApp>) employee);
}
return empobj;
}
}
2) Employee.java
package test;
public class Employee
{
private Set<Employee> employee = new HashSet<Employee>();
public Employee() {
// TODO Auto-generated constructor stub
}
private String name;
private String dept;
private int age;
private int id;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = Security.escapeHtml(name);;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getDept(){
return dept;
}
public void setDept(String dept){
this.dept = Security.escapeHtml(dept);
}
public boolean equals(Object obj){
if (obj == null)
{
return false;
}
if (obj == this)
{
return true;
}
if (!this.getClass().equals(obj.getClass()))
{
return false;
}
Employee that = (Employee) obj;
if (this.id != that.id)
{
return false;
}
return true;
}
public String toString(){
return "Employee[id=" + id + ",name=" + name + "]";
}
}
index.html 代码:
<!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>Employee Data</title>
<script type='text/javascript' src='dwr/engine.js'> </script>
<script type='text/javascript' src='dwr/util.js'> </script>
<script type='text/javascript' src='dwr/interface/EmpApp.js'> </script>
<script>
function init() {
showTable();
}
var empCache = { };
var viewed = -1;
function showTable() {
EmpApp.getAllEmployee(function(empobj) {
dwr.util.removeAllRows("EmpRow", { filter:function(tr) {
return (tr.id != "pattern");
}});
var employee, eid;
for (var i = 0; i < empobj.length; i++) {
employee = empobj[i];
eid = empobj.id;
dwr.util.cloneNode("pattern", { idSuffix:id });
dwr.util.setValue("ID" + id, employee.id);
dwr.util.setValue("NAME" + id, employee.name);
dwr.util.setValue("AGE" + id, employee.age);
dwr.util.setValue("DEPT" + id, employee.dept);
$("pattern" + id).style.display = "table-row";
empCache[id] = employee;
}
});
}
</script>
</head>
<body onload="init();">
<div id="tabContents">
<div id="demoDiv">
<h3>Employee</h3>
<table border="1" class="rowed grey">
<thead>
<tr>
<th>ID</th>
<th>NAME</th>
<th>AGE</th>
<th>DEPT</th>
</tr>
</thead>
<tbody id="EmpRow">
<tr id="pattern" style="display:none;">
<td>
<span id="ID">Name</span><br/>
<span id="NAME">Name</span><br/>
<span id="AGE">Age</span>
</td>
<td><span id="DEPT">Dept</span></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
当然是异步 Web 应用程序。我这里用的是DWR。 dwr.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="EmpApp" scope="script">
<param name="class" value="test.EmpApp"/>
<include method="GetAllEmployee"/>
</create>
<convert match="test.EmpApp" converter="bean"/>
</allow>
</dwr>
以及最终的 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>LastDisplay</display-name>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
For the last three days I have been trying to develop a web based CRUD application which does all the CRUD operations. Given the complexity of the code, I decided to show the data first then I can move on to further CRUD operations.
For this application I posted several questions in here. From the Answers I came this far.
Here is my full source code. It's not showing any errors. But I'm not able to get the output.
I have two class in my server side code. For me, its looks like good. But it needs something more to come alive. This is a great forum, please tell me, how can I overcome this.
1) EmpApp.java
Just consider the getAllEmployee() method, omit the rest.
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import com.mysql.jdbc.PreparedStatement;
public abstract class EmpApp implements Set<Employee>
{
public Set<EmpApp> empobj = new HashSet<EmpApp>();
private Set<Employee> persons = new HashSet<Employee>();
public boolean add(Employee employee) {
return persons.add(employee);
}
public EmpApp(){
}
public Set<EmpApp> getAllEmp()
{
return empobj;
}
public void addEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
int tempID = employee.getId();
String tname = employee.getName();
int tage = employee.getAge();
String tdept = employee.getDept();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.prepareStatement("INSERT INTO PERSON SET ID=?, NAME=?, AGE=?, DEPT=?");
pstmt.setInt(1, tempID);
pstmt.setString(2, tname);
pstmt.setInt(3, tempID);
pstmt.setString(4, tdept);
pstmt.executeUpdate();
}
public void updateEmployee(Employee employee) throws SQLException, ClassNotFoundException
{
int tempID = employee.getId();
String tname = employee.getName();
int tage = employee.getAge();
String tdept = employee.getDept();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.createStatement();
pstmt = (PreparedStatement) con.prepareStatement("UPDATE PERSON SET NAME=?, AGE=?, DEPT=? WHERE ID=?");
pstmt.setInt(2, tage);
pstmt.setString(1, tname);
pstmt.setString(3, tdept);
pstmt.setInt(4, tempID);
pstmt.executeUpdate();
}
public void deleteEmployee(Employee employee) throws ClassNotFoundException, SQLException
{
int eid = employee.getId();
PreparedStatement pstmt;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
pstmt = (PreparedStatement) con.createStatement();
pstmt = (PreparedStatement) con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
pstmt.executeUpdate("DELETE FROM PERSON WHERE ID="+eid);
}
@SuppressWarnings("unchecked")
private Set<EmpApp> getAllEmployee() throws ClassNotFoundException, SQLException
{
Employee employee = new Employee();
Statement stmt;
ResultSet rs;
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost:3306/general";
Connection con = DriverManager.getConnection(url,"root", "1234");
System.out.println("URL: " + url);
System.out.println("Connection: " + con);
stmt = con.createStatement();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery("SELECT * " + "from person ORDER BY ID");
while(rs.next())
{
String name = rs.getString(2);
employee.setName(name);
int id = rs.getInt(1);
employee.setId(id);
String dept = rs.getString(4);
employee.setDept(dept);
int age = rs.getInt(3);
employee.setAge(age);
empobj.addAll((Collection<? extends EmpApp>) employee);
}
return empobj;
}
}
2) Employee.java
package test;
public class Employee
{
private Set<Employee> employee = new HashSet<Employee>();
public Employee() {
// TODO Auto-generated constructor stub
}
private String name;
private String dept;
private int age;
private int id;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = Security.escapeHtml(name);;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
public String getDept(){
return dept;
}
public void setDept(String dept){
this.dept = Security.escapeHtml(dept);
}
public boolean equals(Object obj){
if (obj == null)
{
return false;
}
if (obj == this)
{
return true;
}
if (!this.getClass().equals(obj.getClass()))
{
return false;
}
Employee that = (Employee) obj;
if (this.id != that.id)
{
return false;
}
return true;
}
public String toString(){
return "Employee[id=" + id + ",name=" + name + "]";
}
}
The index.html code:
<!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>Employee Data</title>
<script type='text/javascript' src='dwr/engine.js'> </script>
<script type='text/javascript' src='dwr/util.js'> </script>
<script type='text/javascript' src='dwr/interface/EmpApp.js'> </script>
<script>
function init() {
showTable();
}
var empCache = { };
var viewed = -1;
function showTable() {
EmpApp.getAllEmployee(function(empobj) {
dwr.util.removeAllRows("EmpRow", { filter:function(tr) {
return (tr.id != "pattern");
}});
var employee, eid;
for (var i = 0; i < empobj.length; i++) {
employee = empobj[i];
eid = empobj.id;
dwr.util.cloneNode("pattern", { idSuffix:id });
dwr.util.setValue("ID" + id, employee.id);
dwr.util.setValue("NAME" + id, employee.name);
dwr.util.setValue("AGE" + id, employee.age);
dwr.util.setValue("DEPT" + id, employee.dept);
$("pattern" + id).style.display = "table-row";
empCache[id] = employee;
}
});
}
</script>
</head>
<body onload="init();">
<div id="tabContents">
<div id="demoDiv">
<h3>Employee</h3>
<table border="1" class="rowed grey">
<thead>
<tr>
<th>ID</th>
<th>NAME</th>
<th>AGE</th>
<th>DEPT</th>
</tr>
</thead>
<tbody id="EmpRow">
<tr id="pattern" style="display:none;">
<td>
<span id="ID">Name</span><br/>
<span id="NAME">Name</span><br/>
<span id="AGE">Age</span>
</td>
<td><span id="DEPT">Dept</span></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Of course its Asynchronous web application. I am using DWR here.
The dwr.xml file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="EmpApp" scope="script">
<param name="class" value="test.EmpApp"/>
<include method="GetAllEmployee"/>
</create>
<convert match="test.EmpApp" converter="bean"/>
</allow>
</dwr>
And the Final web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>LastDisplay</display-name>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看看数据绑定,我从来没有在 Java 中这样做过,但在 .net 中是这样的。
表适配器主要是连接信息和一些存储的sql命令,以便于重复。
对于 java,请查找 javax.sql.datasource 以获取更多信息。
look into databinding, I've never done this in Java but in .net its something like this.
the table adapter is mostly what the connection information and some stored sql commands for easy repetition.
for java look up javax.sql.datasource for more info.