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>

现在运行该应用程序,您将看到下面的输出响应页面。