Java Servlet Programing Laungage

Java Servlet Projects

Servlet Project 3

adplus-dvertising
Create an application for access JPA Entity class from database into Servlet
Previous Home Next

This servlet application, creates a JPA Entity class from MySQL Database and accesses it into Servlet.Consider following steps for creating this application

Step-1 Create a new web project and name it as JPA&Servlet . Go to source package and name it as r4r.JPA.Servlet, now right click over package and go to New -> other ->New File, window open (as show into below picture). Now choose Persistence from the Categories list and and Entity Class from DataBase from File Types list, then click on Next button.

Step-2 Provide DataBase connection, then select Table from Available Tables. If selected table have mapping like one-To-many and Many-To-One, then Include related Table help to generate every table Table Entity class is similar form as mapping.

Step-3 Specify the values as shown below picture which help to generate Entity Class from selected Table and then click on Next button for mapping these classes.

Step-4 Now, mapping classes into persistence.xml file.

Application directory structure

persistence.xml

Entity Class

/*
 * Save as a Address.java
 */
package r4r.JPA.Servlet;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
/**
 *
 * @author R4R
 */
@Entity
@Table(name = "address")
@XmlRootElement
@NamedQueries({
 @NamedQuery(name = "Address.findAll",
	  query = "SELECT a FROM Address a"),
 @NamedQuery(name = "Address.findByAddressId",
	  query = "SELECT a FROM Address a WHERE a.addressId = :addressId"),
 @NamedQuery(name = "Address.findByName",
	  query = "SELECT a FROM Address a WHERE a.name = :name"),
 @NamedQuery(name = "Address.findByLine1",
	  query = "SELECT a FROM Address a WHERE a.line1 = :line1"),
 @NamedQuery(name = "Address.findByLine2",
	  query = "SELECT a FROM Address a WHERE a.line2 = :line2"),
 @NamedQuery(name = "Address.findByCity",
	  query = "SELECT a FROM Address a WHERE a.city = :city"),
 @NamedQuery(name = "Address.findByCountry",
	 query = "SELECT a FROM Address a WHERE a.country = :country")})
public class Address implements Serializable {
 private static final long serialVersionUID = 1L;
 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Basic(optional = false)
 @Column(name = "address_id")
 private String addressId;
 @Basic(optional = false)
 @Column(name = "name")
 private String name;
 @Basic(optional = false)
 @Column(name = "line1")
 private String line1;
 @Column(name = "line2")
 private String line2;
 @Basic(optional = false)
 @Column(name = "city")
 private String city;
 @Basic(optional = false)
 @Column(name = "country")
 private String country;

 //------------------------- constructor
 public Address() {
 }

 public Address(String addressId) {
  this.addressId = addressId;
 }
 
public Address
 (String addressId, String name, String line1, String city, String country) 
 {
  this.addressId = addressId;
  this.name = name;
  this.line1 = line1;
  this.city = city;
  this.country = country;
 }

 //--------------------------- getter/Setter
 public String getAddressId() {
  return addressId;
 }

 public void setAddressId(String addressId) {
  this.addressId = addressId;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getLine1() {
  return line1;
 }

 public void setLine1(String line1) {
  this.line1 = line1;
 }

 public String getLine2() {
  return line2;
 }

 public void setLine2(String line2) {
  this.line2 = line2;
 }

 public String getCity() {
  return city;
 }

 public void setCity(String city) {
  this.city = city;
 }

 public String getCountry() {
  return country;
 }

 public void setCountry(String country) {
  this.country = country;
 }

 @Override
 public int hashCode() {
  int hash = 0;
  hash += (addressId != null ? addressId.hashCode() : 0);
  return hash;
 }

 @Override
 public boolean equals(Object object) {
/* TODO: Warning -this method won't work in 
   the case the id fields are not set
  */
  if (!(object instanceof Address)) {
return false;
  }
  Address other = (Address) object;
  if ((this.addressId == null && other.addressId != null) 
|| (this.addressId != null && !this.addressId.equals(other.addressId))) 
{
return false;
  }
  return true;
 }

 @Override
 public String toString() {
  return "r4r.JPA.Servlet.Address[ addressId=" + addressId + " ]";
 }
 
}

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
  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_3_0.xsd">
 <servlet>
  <servlet-name>JPAServlet</servlet-name>
  <servlet-class>r4r.JPA.Servlet.JPAServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>JPAServlet</servlet-name>
  <url-pattern>/JPAServlet</url-pattern>
 </servlet-mapping>
 <session-config>
  <session-timeout>
    30
  </session-timeout>
 </session-config>
</web-app>

Index.jsp

<%-- 
 Document: index.jsp
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type"
     content="text/html; charset=UTF-8">
  <title>r4r.co.in-index</title>
 </head>
 <body>
  <h1>JPA and Servlet Connectivity Application!</h1>
  <form action="JPAServlet" method="POST">
   Enter name: <input type="text" name="name" 
       value="" size="40" maxlength="20" /><br/>
   Address line1: <textarea name="line1"
       rows="2" cols="30" maxlength="40"></textarea> <br/>
   Address line2: <textarea name="line2"
      rows="2" cols="30" maxlength="40"></textarea>(null allow)<br/>
   Enter City: <input type="text" 
      name="city" value="" size="30" /><br/>
   Enter Country: <input type="text"
      name="country" value="" size="30" /><br/><br/>
   <input type="submit" value="Insert Data" name="insert" />
   <input type="submit" value="Fetch Data" name="fetch" />
  </form>  
 </body>
</html>

Servlet Program

/*
 * Save as a JPAServlet.java
 */
package r4r.JPA.Servlet;
import java.io.*;
import java.util.List;
import javax.persistence.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
/**
 *
 * @author R4R
 */
public class JPAServlet extends HttpServlet {

 private EntityManagerFactory emf;
 private EntityManager em;

 @Override
 public void init() throws ServletException {
  emf = Persistence.createEntityManagerFactory
	  ("JPA_ServletPU");
  em = emf.createEntityManager();
 }
 @Override
 protected void doGet(HttpServletRequest request,
   HttpServletResponse response)throws ServletException, IOException 
{
 }
 @Override
 protected void doPost(HttpServletRequest request,
  HttpServletResponse response)throws ServletException, IOException 
{
  response.setContentType("text/html;charset=UTF-8");
  PrintWriter out = response.getWriter();

  String name = request.getParameter("name");
  String line1 = request.getParameter("line1");
  String line2 = request.getParameter("line2");
  String city = request.getParameter("city");
  String country = request.getParameter("country");
  try {
 if (request.getParameter("insert") != null) {
 if (!name.equals("") || !line1.equals("") || !city.equals("")
|| !country.equals("")) {
  Address address = new Address();
  em.getTransaction().begin();
  address.setName(name);
  address.setLine1(line1);
  address.setLine2(line2);
  address.setCity(city);
  address.setCountry(country);
  em.persist(address); //save data into entity class
  em.getTransaction().commit();

  out.println("Data successfully store into SQL table through JPA");
  out.println("<BR><a href=\"index.jsp\">Return to index page</a>");
 } else {
  out.println("<b>Please don't leave any TextFiled empty</b>");
  out.println("<BR><a href=\"index.jsp\">Return to index page</a>");
 }
} else {
 prcessHeader(out);
 processRequest(out);
 processFooter(out);
}
  } finally {
//free resource
emf.close();
out.flush();
out.close();
  }
 }

 @Override
 public String getServletInfo() {
  return "r4r.co.in-JPAServlet";
 }

 private void prcessHeader(PrintWriter out) {
  out.println("<html>");
  out.println("<head>");
  out.println("<title>" + getServletInfo() + "</title>");
  out.println("</head>");
  out.println("<body>");
  out.println("<h1>Fetch Data from Database</h1>");
  out.println("<table border=\"1\" cellspacing=\
              "2\" cellpadding=\"2\">");
  out.println("<thead><tr>");
  out.println("<td> Id </td>");
  out.println("<td> Name </td>");
  out.println("<td> Address Line_1 </td>");
  out.println("<td> Address Line_2 </td>");
  out.println("<td> City </td>");
  out.println("<td> Country </td>");
  out.println("</thead></tr>");
 }

 private void processRequest(PrintWriter out) {
  em.getTransaction().begin();
  Query q = em.createQuery
	   ("select object(o) from Address as o");
  List<Address> list = q.getResultList();
  out.println("Total record found : <b>" + list.size() + "</b><BR>");
  for (int i = 0; i < list.size(); i++) {
Address address1 = list.get(i);
out.println("<tbody><tr>");
out.println("<td> " + "<I><b>"
               + address1.getAddressId() + "</I></b>" + "</td>");
out.println("<td> " + "<I><b>"
               + address1.getName() + "</I></b>" + "</td>");
out.println("<td> " + "<I><b>"
               + address1.getLine1() + "</I></b>" + "</td>");
out.println("<td> " + "<I><b>" 
	          + address1.getLine2() + "</I></b>" + "</td>");
out.println("<td> " + "<I><b>" 
	          + address1.getCity() + "</I></b>" + "</td>");
out.println("<td> " + "<I><b>" 
	         + address1.getCountry() + "</I></b>" + "</td>");
out.println("</tr></tbody>");
  }
 }

 private void processFooter(PrintWriter out) {
  out.println("</body>");
  out.println("</html>");
  out.println
	  ("<BR><a href=\"index.jsp\">Return to index page</a>");
 }
}

Test Program

/*
 * Save as a EntityServletMain.java
 * This class is only for test purpose
 (fetch data from database and display over server console)
*/
package r4r.Entity.Servlet;
import java.util.List;
import javax.persistence.*;
/**
 *
 * @author R4R
 */
public class EntityServletMain {
  private static final EntityManagerFactory emf =
	  Persistence.createEntityManagerFactory
				("EntityServletPU");
	private static EntityManager em = emf.createEntityManager();
 public static void main(String[] args) {
 try
 {
	
 }
 catch ()
 {
 }{
 em.getTransaction().begin();
 //fetch total record from Entity class and store into List
 Query q = em.createQuery
	  ("select object(o) from ServletEntity as o");
List<ServletEntity> list = q.getResultList();
System.out.printf
	   ("Total (%d) result found into table", list.size());

for (int i = 0; i < list.size(); i++) {
 ServletEntity entity = list.get(i);
 //display record over server console
 System.out.println(entity.getId() + "|" 
	          + entity.getFname() + "|" + entity.getLname()
+ "|" + entity.getCity() + "|" + entity.getCountry());
}
  } finally {
//free all resource
em.getTransaction().commit();
em.close();
emf.close();
  }
 }
}
Output of Program
Previous Home Next