В этой статье мы продемонстрируем, как интегрировать базу данных в JSF с помощью JDBC.
Ниже приведены требования к базе данных для запуска этого примера.
| S.No | Программное обеспечение и описание |
|---|---|
| 1 | PostgreSQL 9.1
Открытая и легкая база данных |
| 2 | PostgreSQL JDBC4 Драйвер
Драйвер JDBC для PostgreSQL 9.1 и JDK 1.5 или выше |
Открытая и легкая база данных
Драйвер JDBC для PostgreSQL 9.1 и JDK 1.5 или выше
Поместите jar драйвера PostgreSQL JDBC4 в каталог lib веб-сервера tomcat.
SQL-команды базы данных
create user user1; create database testdb with owner = user1; CREATE TABLE IF NOT EXISTS authors ( id int PRIMARY KEY, name VARCHAR(25) ); INSERT INTO authors(id, name) VALUES(1, 'Rob Bal'); INSERT INTO authors(id, name) VALUES(2, 'John Carter'); INSERT INTO authors(id, name) VALUES(3, 'Chris London'); INSERT INTO authors(id, name) VALUES(4, 'Truman De Bal'); INSERT INTO authors(id, name) VALUES(5, 'Emile Capote'); INSERT INTO authors(id, name) VALUES(7, 'Breech Jabber'); INSERT INTO authors(id, name) VALUES(8, 'Bob Carter'); INSERT INTO authors(id, name) VALUES(9, 'Nelson Mand'); INSERT INTO authors(id, name) VALUES(10, 'Tennant Mark'); alter user user1 with password 'user1'; grant all on authors to user1;
Пример приложения
Давайте создадим тестовое приложение JSF для тестирования интеграции JDBC.
| шаг | Описание |
|---|---|
| 1 | Создайте проект с именем helloworld в пакете com.tutorialspoint.test, как описано в главе « JSF — первое приложение» . |
| 2 | Создайте папку ресурсов в src → main folder. |
| 3 | Создайте папку css в папке src → main → resources . |
| 4 | Создайте файл styles.css в папке src → main → resources → css . |
| 5 | Измените файл styles.css, как описано ниже. |
| 6 | Измените файл pom.xml, как описано ниже. |
| 7 | Создайте Author.java в пакете com.tutorialspoint.test, как описано ниже. |
| 8 | Создайте UserData.java в пакете com.tutorialspoint.test, как описано ниже. |
| 9 | Измените home.xhtml, как описано ниже. Оставьте остальные файлы без изменений. |
| 10 | Скомпилируйте и запустите приложение, чтобы убедиться, что бизнес-логика работает в соответствии с требованиями. |
| 11 | Наконец, соберите приложение в виде файла war и разверните его на веб-сервере Apache Tomcat. |
| 12 | Запустите ваше веб-приложение, используя соответствующий URL-адрес, как описано ниже в последнем шаге. |
styles.css
.authorTable { border-collapse:collapse; border-bottom:1px solid #000000; } .authorTableHeader { text-align:center; background:none repeat scroll 0 0 #B5B5B5; border-bottom:1px solid #000000; border-top:1px solid #000000; padding:2px; } .authorTableOddRow { text-align:center; background:none repeat scroll 0 0 #FFFFFFF; } .authorTableEvenRow { text-align:center; background:none repeat scroll 0 0 #D3D3D3; }
pom.xml
<project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.tutorialspoint.test</groupId> <artifactId>helloworld</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>helloworld Maven Webapp</name> <url>http://maven.apache.org</url > <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.1.7</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency> </dependencies> <build> <finalName>helloworld</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <executions> <execution> <id>copy-resources</id> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/helloworld/resources </outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
Author.java
package com.tutorialspoint.test;
public class Author {
int id;
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
UserData.java
package com.tutorialspoint.test;
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;
import javax.faces.event.ComponentSystemEvent;
@ManagedBean(name = "userData", eager = true)
@SessionScoped
public class UserData implements Serializable {
private static final long serialVersionUID = 1L;
public List<Author> getAuthors() {
ResultSet rs = null;
PreparedStatement pst = null;
Connection con = getConnection();
String stm = "Select * from authors";
List<Author> records = new ArrayList<Author>();
try {
pst = con.prepareStatement(stm);
pst.execute();
rs = pst.getResultSet();
while(rs.next()) {
Author author = new Author();
author.setId(rs.getInt(1));
author.setName(rs.getString(2));
records.add(author);
}
} catch (SQLException e) {
e.printStackTrace();
}
return records;
}
public Connection getConnection() {
Connection con = null;
String url = "jdbc:postgresql://localhost/testdb";
String user = "user1";
String password = "user1";
try {
con = DriverManager.getConnection(url, user, password);
System.out.println("Connection completed.");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
finally {
}
return con;
}
}
home.xhtml
<?xml version = "1.0" encoding = "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"
xmlns:f = "http://java.sun.com/jsf/core"
xmlns:h = "http://java.sun.com/jsf/html">
<h:head>
<title>JSF Tutorial!</title>
<h:outputStylesheet library = "css" name = "styles.css" />
</h:head>
<h:body>
<h2>JDBC Integration Example</h2>
<h:dataTable value = "#{userData.authors}" var = "c"
styleClass = "authorTable"
headerClass = "authorTableHeader"
rowClasses = "authorTableOddRow,authorTableEvenRow">
<h:column><f:facet name = "header">Author ID</f:facet>
#{c.id}
</h:column>
<h:column><f:facet name = "header">Name</f:facet>
#{c.name}
</h:column>
</h:dataTable>
</h:body>
</html>
Когда вы будете готовы со всеми внесенными изменениями, давайте скомпилируем и запустим приложение, как мы делали в главе JSF — Первое приложение. Если с вашим приложением все в порядке, это даст следующий результат.