You can also access the database using Hibernate in Struts2. Following is the project structure :-
Write the following query to make table in the database 'data'ADS_TO_REPLACE_1
CREATE TABLE `registration` ( `id` int(11) NOT NULL auto_increment, `first_name` varchar(50) NOT NULL, `last_name` varchar(50) default NULL, `phone_no` decimal(16,0) default NULL, `email` varchar(150) default NULL, `address` text, `gender` varchar(5) default NULL, PRIMARY KEY (`id`) )
Write the following domain class and map the table as
Registration.java
package net.roseindia.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "registration") public class Registration { @Id @GeneratedValue @Column(name = "id") private Integer id; @Column(name = "first_name") private String firstName; @Column(name = "last_name") private String lastName; @Column(name = "phone_no") private Long phoneNo; @Column(name = "email") private String email; @Column(name = "address") private String address; @Column(name = "gender") private String gender; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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 Long getPhoneNo() { return phoneNo; } public void setPhoneNo(Long phoneNo) { this.phoneNo = phoneNo; } 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
Map the Registration class in the hibernate.cfg.xml as
hibernate.cfg.xmlADS_TO_REPLACE_2
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/data </property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.connection.pool_size">10</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.current_session_context_class">thread</property> <mapping class="net.roseindia.domain.Registration" /> </session-factory> </hibernate-configuration>
Write the Connection class as
ConnectionUtil.java
package net.roseindia.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class ConnectionUtil { private static ServiceRegistry serviceRegistry; private static SessionFactory sessionFactory; static { try { Configuration configuration = new Configuration(); configuration.configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings( configuration.getProperties()).buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); } catch (Throwable e) { e.printStackTrace(); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
Make a Service inteface as ADS_TO_REPLACE_3
Service.java
package net.roseindia.service; import net.roseindia.domain.Registration; public interface Service { public void saveData(Registration registration); }
Make A ServiceImpl class
ServiceImpl.javaADS_TO_REPLACE_4
package net.roseindia.service.serviceImpl; import net.roseindia.domain.Registration; import net.roseindia.service.Service; import net.roseindia.util.ConnectionUtil; import org.hibernate.Session; import org.hibernate.Transaction; public class ServiceImpl implements Service { public void saveData(Registration registration) { Session session = null; try { ConnectionUtil connectionFactory = new ConnectionUtil(); session = connectionFactory.getSessionFactory().openSession(); Transaction transaction = session.beginTransaction(); session.save(registration); transaction.commit(); session.flush(); session.close(); } catch (Exception e) { e.getMessage(); e.printStackTrace(); } } }
Write the two JSP files one for form and another for diplaying data
registration.jsp
<%@taglib prefix="s" uri="/struts-tags"%> <h2 align="center">Registration Form</h2> <center><s:form action="doRegistation" method="POST"> <s:textfield name="firstName" size="50" label="First Name"></s:textfield> <s:textfield name="lastName" size="50" label="Last Name"></s:textfield> <s:textfield name="phoneNo" size="50" label="Phone Number"></s:textfield> <s:textfield name="email" size="50" label="Email Address"></s:textfield> <s:textarea name="address" cols="38" label="Address"></s:textarea> <s:radio list="genderList" name="gender" label="Gender"></s:radio> <s:submit value="Register"></s:submit> </s:form></center>
home-page.jspADS_TO_REPLACE_5
<h2 align="center">The Following Record Has Been Added</h2> <center> <table cellpadding="5" cellspacing="5" bgcolor="#EBFFD6"> <tr> <td>First Name</td> <td>:</td> <td>${firstName}</td> </tr> <tr> <td>Last Name</td> <td>:</td> <td>${lastName}</td> </tr> <tr> <td>Phone Number</td> <td>:</td> <td>${phoneNo}</td> </tr> <tr> <td>Email</td> <td>:</td> <td>${email}</td> </tr> <tr> <td>Address</td> <td>:</td> <td>${address}</td> </tr> <tr> <td>Gender</td> <td>:</td> <td>${gender}</td> </tr> <tr> <td colspan="3" align="center"> <button onclick="JavaScript: window.print();">Print</button> </td> </tr> </table> </center>
Write the Action class as
RegistrationAction.java
package net.roseindia.action; import java.util.ArrayList; import java.util.List; import net.roseindia.domain.Registration; import net.roseindia.service.Service; import net.roseindia.service.serviceImpl.ServiceImpl; import com.opensymphony.xwork2.ActionSupport; public class RegistrationAction extends ActionSupport { private ListgenderList = new ArrayList (); private String firstName; private String lastName; private Long phoneNo; private String email; private String address; private String gender; private Service service; public RegistrationAction() { genderList.add("Male"); genderList.add("Female"); service = new ServiceImpl(); } 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 Long getPhoneNo() { return phoneNo; } public void setPhoneNo(Long phoneNo) { this.phoneNo = phoneNo; } 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public List getGenderList() { return genderList; } public void setGenderList(List genderList) { this.genderList = genderList; } public String execute() throws Exception { Registration registration = new Registration(); registration.setFirstName(firstName); registration.setLastName(lastName); registration.setAddress(address); registration.setEmail(email); registration.setGender(gender); registration.setPhoneNo(phoneNo); service.saveData(registration); return SUCCESS; } }
And Finally map the Action in struts.xml file asADS_TO_REPLACE_6
stuts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="roseindia" extends="struts-default"> <action name="register" class="net.roseindia.action.RegistrationAction"> <result name="success">/jsp/registration.jsp</result> </action> <!-- Redirect to another namespace --> <action name="doRegistation" class="net.roseindia.action.RegistrationAction"> <result name="success">/jsp/home-page.jsp</result> <result name="input">/jsp/registration.jsp</result> </action> </package> </struts>
Advertisements
Ads
Ads