This example will explain how to connect database with
JSF-Primefaces using Spring JdbcTemplate framework.
Step 1:
Create archetype web-app maven project in Eclipse IDE for Java EE and write all
dependencies in pom.xml file.
<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.blogspot.evaluatethecode</groupId> <artifactId>JsfPrimefacesSpringJdbc</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>JsfPrimefacesSpringJdbc Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <mysql.connector.version>5.1.9</mysql.connector.version> <spring.version>4.3.0.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- Spring framework --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.2.9</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.2.9</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId> <artifactId>el-impl</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.sun.el</groupId> <artifactId>el-ri</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>6.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.connector.version}</version> </dependency> </dependencies> <build> <finalName>JsfPrimefacesSpringJdbc</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
Step 2:
Create JSF managed bean classes
package blogspot.evaluatethecode.bean; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; import javax.faces.event.ActionEvent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import blogspot.evaluatethecode.dao.IndexDao; import blogspot.evaluatethecode.model.Users; @Component @ManagedBean(name = "indexBean") @RequestScoped @Scope("request") public class IndexBean { private List<Users> userList; private String username; private String firstname; private String lastname; private String email; private String address; private String phone; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public List<Users> getUserList() { return userList; } public void setUserList(List<Users> userList) { this.userList = userList; } @Autowired private IndexDao indexDao; public void setIndexDao(IndexDao indexDao) { this.indexDao = indexDao; } @PostConstruct public void init() { this.setUserList(indexDao.getUsersList()); } public void addUser(ActionEvent actionEvent) { System.out.println("Inside add user"); Users users = new Users(); users.setUsername(this.getUsername()); users.setFirstname(this.getFirstname()); users.setLastname(this.getLastname()); users.setAddress(this.getAddress()); users.setEmail(this.getEmail()); users.setPhone(this.getPhone()); indexDao.insertUser(users); this.setUserList(indexDao.getUsersList()); System.out.println("Successfully added"); resetAll(); } private void resetAll() { this.username = null; this.firstname = null; this.lastname = null; this.address = null; this.email = null; this.phone = null; } }
Step 3:
Create DAO classes for JDBC retrieve and save operations.
package blogspot.evaluatethecode.dao; import java.util.List; import blogspot.evaluatethecode.model.Users; public interface IndexDao { public List<Users> getUsersList(); public int insertUser(Users users); }
package blogspot.evaluatethecode.dao; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import blogspot.evaluatethecode.model.Users; @Repository("indexDao") public class IndexDaoImpl implements IndexDao{ @Autowired private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public List<Users> getUsersList() { String sql = "select userid, username," + " firstname, lastname, email, address, phone from users"; List<Users> usersList = jdbcTemplate.query( sql, new BeanPropertyRowMapper<Users>(Users.class)); return usersList; } public int insertUser(Users users) { String sql = "insert into users(username, firstname," + " lastname, email, address, phone) values " + "(?, ?, ?, ?, ?, ?)"; int value = jdbcTemplate.update(sql, new Object[] { users.getUsername(), users.getFirstname(), users.getLastname(), users.getEmail(), users.getAddress(), users.getPhone() }); return value; } }
Step 4:
Create database table in MYSQL database
create database evaluatethecode use database evaluatethecode create table users (userid int primary key AUTO_INCREMENT, username varchar(20), firstname varchar(20),lastname varchar(20), email varchar(20),address varchar(50),phone varchar(20));
Step 5:
Create configuration files – web.xml, faces-config.xml and,
application-Context.xml
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><display-name>JsfPrimefacesSpringJdbc Maven Webapp</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.context.request.RequestContextListener </listener-class> </listener> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <welcome-file-list> <welcome-file>index.xhtml</welcome-file> </welcome-file-list> <servlet> <servlet-name>facesServlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>/jsf/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>facesServlet</servlet-name> <url-pattern>*.xhtml</url-pattern> </servlet-mapping> </web-app>
faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?><faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd" version="2.1"><application> <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver> </application> </faces-config>
application-Context.xml:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"><context:component-scan base-package="blogspot.evaluatethecode" /> <context:annotation-config /> <bean id="driverManagerDataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/evaluatethecode" /> <property name="username" value="root" /> <property name="password" value="mysql" /> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="driverManagerDataSource"></property> </bean> <bean id="indexDao" class="blogspot.evaluatethecode.dao.IndexDaoImpl"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> </beans>
Step 6:
Build maven project and deploy the war file inside target
folder to Glassfish server.
Command to build maven project -> mvn clean install
Command to build maven project -> mvn clean install
No comments:
Post a Comment