Java-Business-Application/C2/Database-and-validation/English
Title of script: Database and validation
Author: arya
Keywords: servlets, video tutorial, database,validation
|
|
Slide 1 | Welcome to the spoken-tutorial on Database and validation. |
Slide 2 | In this tutorial we will learn to:
|
Slide 3
Software Requirements |
Here we are using
You can use any web-browser of your choice. |
Slide 4
Prerequisites |
To follow this tutorial you must have knowledge of
If not, for relevant tutorials please visit our website. |
Go to Netbeans IDE. | Let us go to Netbeans IDE. |
Highlight MySQL Server. | I have started the MySQL server. |
Highlight library. | I have created a database named library. |
Highlight users. | I have created a table in it named Users. |
I have already inserted some values into this table. | |
I will show them now. | |
Right click on Users. | For that, right click on Users and click on View Data.
Click on the Output button at the bottom. |
Scroll down. | We can see that we have 10 users here. |
Point to all the columns. | Here, we can see the FirstName, Surname, Age, Gender, Email, Username and Password. |
Now, let us load the JDBC driver that is Java Database Connectivity Driver. | |
Click on the Projects tab. | Click on the Projects tab. |
Right click on Libraries tab. | Right click on Libraries tab. |
Click on Add Library. | Click on Add Library. |
Click on MySQL JDBC Driver. | Click on MySQL JDBC Driver. |
Click on Add Library. | Then click on Add Library. |
This will load the JDBC Driver. | |
Now, let us run the Project as we had done earlier. | |
Type the username as arya and password as arya123*. | Let me type the username as arya and password as arya123*. |
Click on Sign In. | Then click on Sign In. |
We can see the successGreeting page. | |
Click on here to logout. | Click on here to logout. |
Switch back to the IDE. | Now, let us switch back to the IDE. |
Go to GreetingServlet dot java. | We will go to GreetingServlet dot java. |
Highlight String username = request.getParameter("userName");
String password = request.getParameter("password");
|
We get the Username and Password from the request using getParameter method. |
Next we will see the code for JDBC connection. | |
Highlight Connection con = null;
PreparedStatement stmt = null; ResultSet rs = null;
|
We have initialized the Connection object, PreparedStatement object and Resultset object to null. |
Highlight Class.forName("com.mysql.jdbc.Driver"); | Then we register the driver in our program. |
Highlight con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/library", "root", "root"); | Then we create a connection to the database. |
Highlight stmt = con.prepareStatement("select * from Users where username = ? and password = ?"); | Here, we execute the prepareStatement method on the Connection object.
|
Highlight question mark. | The question mark denotes each field in the database. |
Highlight stmt.setString(1, username);
stmt.setString(2, password);
|
To supply values in place of question mark, we execute the setString method.
|
Highlight rs=stmt.executeQuery(); | Then we execute the executeQuery method on the ResultSet object. |
Highlight RequestDispatcher view = request.getRequestDispatcher("successGreeting.jsp");
view.forward(request, response); return; }
|
For successful login, we display the successGreeting page. |
Highlight RequestDispatcher. | For this, we use the RequestDispatcher interface. |
Slide 5
RequestDispatcher Interface |
* This interface provides the facility of dispatching the request to another resource.
|
Highlight RequestDispatcher view = request.getRequestDispatcher("successGreeting.jsp"); | We use the getRequestDispatcher method on the request to obtain the RequestDispatcher object. |
Highlight view.forward(request, response);
return; } |
We then invoke the forward method on RequestDispatcher.
In this way, we forward to successGreeting dot jsp.
|
Come to successGreeting dot jsp. | Let us come to successGreeting dot jsp. |
Highlight <p> You have successfully logged in!!!</p> | Here, we are displaying the success message You have successfully logged in. |
Come back to the browser. | Now, come back to the browser. |
Again type a username and password that we have not included in the database. | |
Type Jai as the username and jai123* as the password. | So, let me type abc as the username and abc123* as the password. |
click on Sign In. | Again click on Sign In. |
Highlight the error message. | We can see that we get the error message on the same page itself. |
Now, let us see the code for this. | |
Go to GreetingServlet dot java. | Go to GreetingServlet dot java. |
If the validation fails, then we should display the error messages. | |
Highlight List<String> errorMsgs = new ArrayList<String>(); | We have first initialized a List of errorMsgs. |
Highlight request.setAttribute("errorMsgs", errorMsgs); | We set the variable errorMsgs into the request scope using setAttribute method. |
Highlight errorMsgs. | Here, errorMsgs is the attribute name. |
Highlight String id = null; | We have initialized a String variable id to null. |
Highlight if(rs.next()){
id= rs.getString(1);
|
Here, we check if the user exists in the database.
|
Highlight else{
errorMsgs.add("Invalid username or password"); //return; } |
Else, we add the error Invalid username or password to errorMsgs list. |
Highlight if (!errorMsgs.isEmpty()) {
RequestDispatcher view = request.getRequestDispatcher("index.jsp"); view.forward(request, response); return; }
|
If the errorMsgs list is not empty, we display the error messages on index dot jsp.
|
Highlight the try catch block. | Note that we have included this code in the try catch block to handle exception scenarios. |
Now, we will see how to fetch errorMsgs variable in index dot jsp. | |
Highlight <%
if( request.getAttribute("errorMsgs") != null){ %>
|
First, we obtain the value of the attribute errorMsgs.
This is done using the getAttribute method on the request. |
Highlight <% and %> | Note that we have included the Java code within the opening tag less than sign percentage sign and the closing tag percentage sign and greater than sign. |
Highlight <%
if( request.getAttribute("errorMsgs") != null){ %> |
This block of code is known as scriptlet.
|
Highlight <div>
<%="Please correct the following errors!!!!" %> </div>
|
If the value of errorMsgs is not null, we first display this message.
|
Highlight <%
java.util.List<String> errorMsgs = (java.util.List<String>)request.getAttribute("errorMsgs"); for(String errorMsg: errorMsgs){ %> |
We then iterate through the errorMsgs. |
Highlight <li> <%= errorMsg%></li> | We then display the error messages as a list. |
This is how we display the error messages on the index dot jsp. | |
Now, let us see how to add a user into the database. | |
Before adding a user into the database, we have to create a model for the User table.
| |
Slide 6
Model |
A model :
|
Switch to Netbeans IDE. | Switch back to Netbeans IDE.
|
Highlight package org.spokentutorial.model; | Note that we have created this Java class inside the package org dot spokentutorial dot model. |
Highlight
private String firstName=" "; private String surname=""; private int age=0; private String gender=""; private String email=""; private String username=""; private String password=""; |
We have the following attributes firstName, surname, age, gender, email, username, password.
|
Highlight public User(String firstName, String surname, int age,String gender,String email,String username,String password){
this.firstName=firstName; this.surname=surname; this.age=age; this.gender=gender; this.email=email; this.username=username; this.password=password; } |
We have a parameterized constructor. |
Highlight public User() {
|
We also have the default constructor. |
Highlight public String getFirstName() {
return firstName; } |
We define the getFirstName method. |
Highlight public void setFirstName(String firstName) {
this.firstName = firstName; }
|
We also define the setFirstName method. |
Highlight public String getSurname() {
return surname; } public void setSurname(String surname) { this.surname = surname; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getEmail() { return email; } public void setEmail(String email) { this.email= email; }
return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password ; } public void setPassword(String password) { this.password=password; }
|
Similary we define the set and get methods on each of the attributes. |
Come back to the browser. | Come back to the browser. |
Click on here to register. | Now, let us click on here link to register. |
Type all the fields in the Registration Page. | |
Click on Add User. | Then click on Add User. |
We get a Add User Success Page. | |
Now, let us see how this is done. | |
Switch back to the IDE. | Switch back to the IDE. |
Open AddUserServlet dot java. | Open AddUserServlet dot java. |
The steps are similar to that we had followed in GreetingServlet dot java. | |
Highlight String firstName=request.getParameter("firstname").trim();
String surname=request.getParameter("surname").trim(); String age=request.getParameter("age").trim(); String gender=request.getParameter("gender").trim(); String email=request.getParameter("email").trim(); String userName=request.getParameter("username").trim(); String password=request.getParameter("password").trim();
|
We get the form parameters using the getParameter method. |
Highlight User user =new User(firstName,surname,ageUser,gender,email,userName,password); | We initialize variable user as instance of User Model with individual attributes. |
Highlight request.setAttribute("user", user); | We set the variable user into the request scope using setAttribute method. |
Then we insert the values into the User table. | |
Highlight RequestDispatcher view = request.getRequestDispatcher("successUser.jsp");
view.forward(request, response); return;
|
If there are no errors while filling up the form, we forward to the successUser page. |
Go to successUser dot jsp. | Now, let us come to successUser dot jsp. |
Highlight <%@page import="org.spokentutorial.model.User"%> | First, we have imported User dot java.
|
Highlight <%@ and %> | A JSP directive starts with opening tag less than sign percentage sign and at the rate sign and ends with percentage sign and greater than sign. |
Highlight <%@page import="org.spokentutorial.model.User"%> | This one is a page directive.
|
Highlight <%User user = (User)request.getAttribute("user");
%> |
We get the value of the attribute user and store it as the User object. |
Highlight Your request to add <i> <%=user.getUsername() %></i> was successful. | We have the success message here. |
Highlight <%=user.getUsername() %> | Here, we have retrieved the Username.
We have used the getUsername() method on the request object. |
We have done this using scriptlet tags. | |
Now, let us come back to the browser. | |
We will try to add a user already present in the database. | |
Type the fields for nisha again. | I will add nisha again. |
Highlight Duplicate entry for key username. | We can see that we get the error message Duplicate entry for key username. |
Let us register for a user once again. | |
Show the registration form filled up. | Here, I have filled up the form now. |
Highlight the Age textbox. | I have created a mistake in the Age field. |
I have typed ab instead of a valid number. | |
Click on Add User. | Now, click on Add User. |
Highlight the error message. | We see we get the error message The age must be a positive integer. |
Switch back to the IDE. | Now, let us see how this is done.
|
Open AddUserServlet dot java. | Open AddUserServlet dot java. |
Highlight List<String> errorMsgs=new ArrayList<String>(); | Here also, we have created a list for errorMsgs. |
Highlight request.setAttribute("errorMsgs", errorMsgs); | Then we set the variable errorMsgs into the request scope using setAttribute method. |
Highlight int ageUser=-1; | Here, we have declared ageUser of type integer. |
Highlight try {
ageUser=Integer.parseInt(age); }
|
Inside the try catch block we have used parseInt method.
|
Highlight catch(NumberFormatException nfe) {
errorMsgs.add("The age must be a positive integer"); }
|
So here we validate that the age field contains a valid positive integer.
|
Highlight if(firstName.length()==0) {
errorMsgs.add("Please enter the first name"); } if(surname.length()==0) { errorMsgs.add("Please enter the surname"); } if(age.length()==0) { errorMsgs.add("Please enter the age"); } if(userName.length()==0) { errorMsgs.add("Please enter the username"); } if(password.length()==0) { errorMsgs.add("Please enter the password"); }
|
Similarly, we have to validate that all the other fields too have valid data. |
Highlight if(!errorMsgs.isEmpty()) {
RequestDispatcher view = request.getRequestDispatcher("addUser.jsp"); view.forward(request, response); return; }
|
If there are no errors, then we will display the errorMsgs on addUser dot jsp.
We have already seen how to do this using the RequestDispatcher. |
Now, let us come to the addUser dot jsp. | |
Highlight <%@page import="org.spokentutorial.model.User"%> | Here also, we have imported User dot java. |
Highlight <%
User user = new User();
|
Inside the scriptlet tags we have created an object of type User. |
Highlight if(request.getAttribute("errorMsgs") != null){ | Then we get the value of attribute errorMsgs using getAttribute method. |
Highlight if(request.getAttribute("errorMsgs") != null){ | We check if this value is null. |
Highlight java.util.List<String> errorMsgs = (java.util.List<String>)request.getAttribute("errorMsgs");
for(String errorMsg: errorMsgs){ %> <li> <%= errorMsg%></li> <%
|
If yes, we display the error message just as we had done for index dot jsp. |
Highlight user = (User)request.getAttribute("user");
|
If not, we will get the value of the attribute user from request using the User model. |
Then we have the form. | |
Highlight the form tag. | The form tag has action as AddUserServlet and method as POST. |
Highlight First Name:<input type='text' name='firstname' value="<%=user.getFirstName()%>"> | The first field is First Name of input type as text ,name as firstName and value as user dot getFirstName.
|
Highlight the other fields. | Similarly you have to do for other fields. |
Highlight the submit button. | We also have a button of type submit and name Add User. |
Highlight the link to index dot jsp. | We also have a link to index dot jsp which allows you to log out. |
This is how we validate the fields in addUser.jsp. | |
You can try out different errors on the Add User page. | |
Show in database | We can see that the user nisha has been added to the database. |
Slide 6
Summary |
Let us summarize.
In this tutorial we have learnt:
|
Slide 7
About slide
|
Watch the video available at the following link.
|
Slide 8
About slide |
The Spoken Tutorial Project Team
|
Slide 9
Acknowledgement |
Spoken Tutorial Project is a part of the Talk to a Teacher Project
|
Slide 10
Contributor Slide |
The Library Management System has been contributed by a leading software MNC, through their Corporate Social Responsibility Programme.
|