Thursday, February 25, 2016

simple CRUD Using JSF (standard) and MySQL with netbeans and Tomcat

The database


create database TestDB;
use TestDB;


CREATE TABLE TestDB.`users` (
  `userid` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(45) DEFAULT NULL,
  `lastname` varchar(45) DEFAULT NULL,
  `dob` date DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
The entity (POJO)
public class User {

    private int userid;
    private String firstName;
    private String lastName;
    private Date dob;
    private String email;
    public int getUserid() {
        return userid;
    }
    public void setUserid(int userid) {
        this.userid = userid;
    }
    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 Date getDob() {
        return dob;
    }
    public void setDob(Date dob) {
        this.dob = dob;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "User [userid=" + userid + ", firstName=" + firstName
                + ", lastName=" + lastName + ", dob=" + dob + ", email="
                + email + "]";
    }    
}
The DAO (insert, select, update, delete)
  • 1 
     2 package dao;
     3 
     4 import entities.User;
     5 import gm.GM;
     6 import java.sql.Connection;
     7 import java.sql.PreparedStatement;
     8 import java.sql.ResultSet;
     9 import java.sql.SQLException;
    10 import java.sql.Statement;
    11 import java.util.ArrayList;
    12 import java.util.List;
    13 import javax.naming.NamingException;
    14 
    15 /**
    16  *
    17  * @author pascalfares
    18  */
    19 public class UserDao {
    20     public static void addUser(User user) throws SQLException, NamingException {
    21             Connection connection = GM.getTestDB().getConnection();
    22             PreparedStatement preparedStatement = connection
    23                     .prepareStatement("insert into users(firstname,lastname,dob,email) values (?, ?, ?, ? )");
    24             // Parameters start with 1
    25             preparedStatement.setString(1, user.getFirstName());
    26             preparedStatement.setString(2, user.getLastName());
    27             preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
    28             preparedStatement.setString(4, user.getEmail());
    29             preparedStatement.executeUpdate();
    30 
    31       
    32     }
    33 
    34     public static void deleteUser(int userId) throws NamingException, SQLException {
    35         Connection connection = GM.getTestDB().getConnection();
    36             PreparedStatement preparedStatement = connection
    37                     .prepareStatement("delete from users where userid=?");
    38             // Parameters start with 1
    39             preparedStatement.setInt(1, userId);
    40             preparedStatement.executeUpdate();
    41 
    42     }
    43 
    44     public static void updateUser(User user) throws NamingException, SQLException {
    45         Connection connection = GM.getTestDB().getConnection();
    46             PreparedStatement preparedStatement = connection
    47                     .prepareStatement("update users set firstname=?, lastname=?, dob=?, email=?" +
    48                             "where userid=?");
    49             // Parameters start with 1
    50             preparedStatement.setString(1, user.getFirstName());
    51             preparedStatement.setString(2, user.getLastName());
    52             preparedStatement.setDate(3, new java.sql.Date(user.getDob().getTime()));
    53             preparedStatement.setString(4, user.getEmail());
    54             preparedStatement.setInt(5, user.getUserid());
    55             preparedStatement.executeUpdate();
    56 
    57         
    58     }
    59 
    60     public static List<User> getAllUsers() throws NamingException, SQLException {
    61         List<User> users = new ArrayList<User>();
    62         Connection connection = GM.getTestDB().getConnection();
    63             Statement statement = connection.createStatement();
    64             ResultSet rs = statement.executeQuery("select * from users");
    65             while (rs.next()) {
    66                 User user = new User();
    67                 user.setUserid(rs.getInt("userid"));
    68                 user.setFirstName(rs.getString("firstname"));
    69                 user.setLastName(rs.getString("lastname"));
    70                 user.setDob(new java.util.Date(rs.getDate("dob").getTime()));
    71                 user.setEmail(rs.getString("email"));
    72                 users.add(user);
    73             }
    74         
    75 
    76         return users;
    77     }
    78 
    79     public static User getUserById(int userId) throws NamingException, SQLException {
    80         User user = new User();
    81         Connection connection = GM.getTestDB().getConnection();
    82             PreparedStatement preparedStatement = connection.
    83                     prepareStatement("select * from users where userid=?");
    84             preparedStatement.setInt(1, userId);
    85             ResultSet rs = preparedStatement.executeQuery();
    86 
    87             if (rs.next()) {
    88                 user.setUserid(rs.getInt("userid"));
    89                 user.setFirstName(rs.getString("firstname"));
    90                 user.setLastName(rs.getString("lastname"));
    91                 user.setDob(rs.getDate("dob"));
    92                 user.setEmail(rs.getString("email"));
    93             }
    94        
    95         return user;
    96     }
    97 }
    98 
Create the UserControl managedBean

 1 package mb;
 2 
 3 import dao.UserDao;
 4 import entities.User;
 5 import java.sql.SQLException;
 6 import java.util.List;
 7 import javax.faces.bean.ManagedBean;
 8 import javax.faces.bean.SessionScoped;
 9 import javax.naming.NamingException;
10 
11 /**
12  * A minimal Managed Bean for CRUD 2 attributes
13  * one for current User
14  * one for the list of users
15  * @author pfares
16  */
17 @ManagedBean
18 @SessionScoped
19 public class UserControl {
20     private User selectedUser;
21     private List<User> lusers;
22     /**
23      * Creates a new instance of UserControl
24      */
25     public UserControl() {
26         selectedUser=new User();
27     }
28 
29     /**
30      * @return the selectedUser
31      */
32     public User getSelectedUser() {
33         return selectedUser;
34     }
35 
36     /**
37      * @param selectedUser the selectedUser to set
38      */
39     public void setSelectedUser(User selectedUser) {
40         this.selectedUser = selectedUser;
41     }
42 
43     /**
44      * @return the lusers
45      */
46     public List<User> getLusers() throws NamingException, SQLException {
47         lusers=UserDao.getAllUsers();
48         return lusers;
49     }
50 
51     /**
52      * @param lusers the lusers to set
53      */
54     public void setLusers(List<User> lusers) {
55         this.lusers = lusers;
56     }
57     
58     public String create() throws SQLException, NamingException {
59         UserDao.addUser(selectedUser);
60         
61         return "index";
62         
63     }
64 }

Minimal pages : List Users and Create Users

 <?xml version='1.0' encoding='UTF-8' ?>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml"
 4       xmlns:h="http://java.sun.com/jsf/html"
 5       xmlns:f="http://java.sun.com/jsf/core">
 6     <h:head>
 7         <title>Facelet Title</title>
 8     </h:head>
 9     <h:body>
10         <f:view>
11             <h:form>
12                 <h:dataTable border="1" value="#{userControl.lusers}" var="item">
13                     <h:column>#{item.firstName}</h:column>
14                     <h:column>#{item.lastName}</h:column>
15                     <h:column>#{item.userid}</h:column>
16                     <h:column>#{item.email}</h:column>
17                     <h:column>
18                         <h:outputText value="#{item.dob}" />
19                     </h:column>
20                 </h:dataTable>
21             </h:form>
22         </f:view>
23 
24     </h:body>
25 </html>






===
1 <?xml version='1.0' encoding='UTF-8' ?>
 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 3 <html xmlns="http://www.w3.org/1999/xhtml"
 4       xmlns:h="http://java.sun.com/jsf/html"
 5       xmlns:f="http://java.sun.com/jsf/core">
 6     <h:head>
 7         <title>Crud Example : Create a user</title>
 8     </h:head>
 9     <h:body>
10         <f:view>
11             <h:form>
12                 <h:outputLabel value="Nom" for="nom" />
13                 <h:inputText id="nom" value="#{userControl.selectedUser.lastName}" />
14                 <h:outputLabel value="PreNom" for="prenom" />
15                 <h:inputText id="prenom" value="#{userControl.selectedUser.firstName}" />
16                  <h:outputLabel value="Email" for="email" />
17                 <h:inputText id="email" required="true" label="email" size="40"
18                              requiredMessage="Please enter your email address."
19                              validatorMessage="Invalid email format"
20                              value="#{userControl.selectedUser.email}">
21                     <f:validateRegex
22                         pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
23                 </h:inputText>
24                 <h:message for="email" />
25                 <h:inputText value="#{userControl.selectedUser.dob}" >
26                     <f:convertDateTime pattern="dd-MM-yyyy" />
27                 </h:inputText>
28                 <h:commandButton action="#{userControl.create()}" value="Create" />
29             </h:form>
30         </f:view>
31     </h:body>
32 </html>

No comments:

Post a Comment