JSF数据库示例– MySQL JDBC
时间:2020-02-23 14:33:42 来源:igfitidea点击:
欢迎使用JSF数据库示例。
我们将在MySQL数据库中使用JSF,并在示例中使用JDBC。
可以将Java Server Faces连接到数据库,以使用JDBC API对数据执行操作。
JSF数据库示例
让我们考虑一个示例,该示例从驻留在数据库中的Car表中提取数据并使用JDBC显示它们。
首先,如下所示在mysql数据库中创建car表。
创建一个新的数据库cardb为
CREATE DATABASE cardb;
使用创建的数据库cardb将表创建为
USE cardb;
创建桌子车,如下所示
CREATE TABLE Car( car_id INTEGER NOT NULL AUTO_INCREMENT, cname VARCHAR(60) NOT NULL, color VARCHAR(60), speed INTEGER, Manufactured_Country VARCHAR(100), PRIMARY KEY(car_id));
现在我们将一些值插入Car表中,如下所示:
INSERT INTO Car VALUES(1,'Zen','Grey',45.34,'San Franceco'); INSERT INTO Car VALUES(2,'Volkswagen','Black',49.64,'Germany'); INSERT INTO Car VALUES(3,'Polo','White',52.33,'Japan'); INSERT INTO Car VALUES(4,'Audi','Blue',55.98,'Germany'); INSERT INTO Car VALUES(5,'Innova','Maroon',39.97,'France'); INSERT INTO Car VALUES(6,'FiatPalio','Silver',35.45,'Italy'); INSERT INTO Car VALUES(7,'Qualis','Red',23.35,'Paris');
模型类
现在,使用字段以及getter和setter方法创建普通的旧Java对象类Car.java,如下所示。
package com.theitroad.jsf.beans;
public class Car {
private Integer cid;
private String cname;
private String color;
private Integer speed;
private String mfdctry;
public Car() {
}
public Car(Integer cid, String cname, String color, Integer speed,
String mfdctry) {
this.cid = cid;
this.cname = cname;
this.color = color;
this.speed = speed;
this.mfdctry = mfdctry;
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public Integer getSpeed() {
return speed;
}
public void setSpeed(Integer speed) {
this.speed = speed;
}
public String getMfdctry() {
return mfdctry;
}
public void setMfdctry(String mfdctry) {
this.mfdctry = mfdctry;
}
}
创建一个托管bean CarBean.java,我们将使用它通过Class.forName方法建立与数据库的连接,以执行查询以从car表中提取数据。
请注意,这是创建和管理数据库连接的低效方式。
您应该将JNDI Connection与Datasource一起使用或者为此创建实用程序类。
但是,为简单起见,我的项目中没有这些多余的类。
package com.theitroad.jsf.beans;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class CarBean implements Serializable {
private static final long serialVersionUID = 6081417964063918994L;
public List<Car> getCars() throws ClassNotFoundException, SQLException {
Connection connect = null;
String url = "jdbc:mysql://localhost:3306/cardb";
String username = "hyman";
String password = "hyman123";
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection(url, username, password);
//System.out.println("Connection established"+connect);
} catch (SQLException ex) {
System.out.println("in exec");
System.out.println(ex.getMessage());
}
List<Car> cars = new ArrayList<Car>();
PreparedStatement pstmt = connect
.prepareStatement("select car_id, cname, color, speed, Manufactured_Country from Car");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Car car = new Car();
car.setCid(rs.getInt("car_id"));
car.setCname(rs.getString("cname"));
car.setColor(rs.getString("color"));
car.setSpeed(rs.getInt("speed"));
car.setMfdctry(rs.getString("Manufactured_Country"));
cars.add(car);
}
//close resources
rs.close();
pstmt.close();
connect.close();
return cars;
}
}
现在创建JSF视图页面car.xhtml,如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml"
xmlns:f="https://java.sun.com/jsf/core"
xmlns:h="https://java.sun.com/jsf/html">
<h:head>
<title>JSF JDBC Integration</title>
</h:head>
<h:body>
<h2>Car Details</h2>
<h:dataTable value="#{carBean.cars}" var="car" border="2">
<h:column>
<f:facet name="header">Car ID</f:facet>
#{car.cid}
</h:column>
<h:column>
<f:facet name="header">Car Name</f:facet>
#{car.cname}
</h:column>
<h:column>
<f:facet name="header">Car Color</f:facet>
#{car.color}
</h:column>
<h:column>
<f:facet name="header">Car Speed</f:facet>
#{car.speed}
</h:column>
<h:column>
<f:facet name="header">Manufactured Country</f:facet>
#{car.mfdctry}
</h:column>
</h:dataTable>
</h:body>
</html>
注意,我们需要在我们的项目中包括MySQL Connector jar,以获取MySQL数据库连接。
因此,在" pom.xml"文件中添加以下依赖项。
根据您的MySQL安装,添加mysql连接器jar版本。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
现在运行该应用程序,您将看到下面的输出响应页面。

