Wednesday 3 August 2022

Create A Struts2 CRUD Application with Tiles configuration











-----------------------------------------  Auth.java -------------------------------------

package com.ramsis.actions;
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Entity;

@Entity
@Table(name = "auth")
public class Auth implements Serializable {
@Id
@GeneratedValue
@Column(name="uid")
private int uid;
@Column(name="username")
private String username;
@Column(name="pass")
private String pass;

public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}


-------------------------------- CustomerAction.java ----------------------------------
package com.ramsis.actions;

import com.opensymphony.xwork2.ActionSupport;

public class CustomerAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
private Integer age;
private String email;
private String telephone;

public String addCustomer() {
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}

}

-------------------------- LoginAction.java -------------------------

package com.ramsis.actions;

import com.opensymphony.xwork2.ActionSupport;

import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
import org.hibernate.*;
import org.hibernate.cfg.AnnotationConfiguration;

public class LoginAction extends ActionSupport implements SessionAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private String username;
private String pass;
private String u;
private String p;
Map m;
public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPass() {
return pass;
}

public void setPass(String pass) {
this.pass = pass;
}



public String getU() {
return u;
}

public void setU(String u) {
this.u = u;
}

public String getP() {
return p;
}

public void setP(String p) {
this.p = p;
}



public String logOut(){
m.remove("loginId");
addActionMessage("You Have Been Successfully Logged Out");
return SUCCESS;
}

public String execute() {
try{
SessionFactory cfg = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = cfg.openSession();
Transaction t = session.beginTransaction();
//Auth auth = new Auth();
//auth.setUsername("pavan");
//auth.setPass("pavan");
//session.save(auth);
//t.commit();

Query u= session.createQuery("from Auth where username= '"+username+"' and pass= '"+pass+"'");
List<Auth> li = u.list();
if(li.size()>0){
Iterator<Auth> itr = li.iterator();
while(itr.hasNext()){
Auth a = itr.next();
m.put("loginId", a.getUsername());
}

System.out.println("session name is :"+m.get("loginId"));
t.commit();
session.close();


return "success";
}else{

addActionError(getText("Your User name and Password is not valid. "));
return "error";
}
}catch(Exception e){
e.printStackTrace();
addActionError(getText("Some technical error has been occured, Please login after some time.  "));
return "error";

}
}


@Override
public void setSession(Map<String, Object> arg0) {
this.m=arg0;

}

}

-------------------------------- LoginAction-Validation.xml ------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>User Name is required.</message>
</field-validator>
</field>
<field name="pass">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="password.required" />
</field-validator>
</field>
</validators>

----------------------------- ClearCacheInterceptor.java ---------------------------

package com.ramsis.clearcache.interceptor;

import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.StrutsStatics;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ClearCacheInterceptor  extends AbstractInterceptor{
private static final long serialVersionUID = 1L;

@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext context=(ActionContext)invocation.getInvocationContext();
HttpServletResponse response=(HttpServletResponse)context.get(StrutsStatics.HTTP_RESPONSE);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
String result=invocation.invoke();
return result;
}
}

--------------------------- ClientForSave.java -------------------------------

package com.ramsis.hibernate.contact.util;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.opensymphony.xwork2.ActionSupport;
public class ClientForSave extends ActionSupport {

private Long id;
private String name;
private int age;
private String email;
private String telephone;

public Long getId() {
return id;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}

public String getEmail() {
return email;
}

public String getTelephone() {
return telephone;
}

public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setEmail(String email) {
this.email = email;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
   

    public String addCustomer()
    {
   
        Configuration cfg = new AnnotationConfiguration().configure();
 
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
        Contact p=new Contact();
       
        p.setName(getName());
        p.setAge(getAge());
        p.setEmail(getEmail());
        p.setTelephone(getTelephone());
 
        Transaction tx = session.beginTransaction();
        session.save(p);
        System.out.println("Object saved successfully.....!!");
        tx.commit();
        session.close();
        factory.close();
       
        return "success";
    }
 
}

---------------------------------- Contact.java ---------------------------

package com.ramsis.hibernate.contact.util;

public class Contact{

private Long id;
private String name;
private Integer age;
private String email;
private String telephone;
private String username;


public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
private String password;

public Long getId() {
return id;
}

public String getName() {
return name;
}

public Integer getAge() {
return age;
}

public String getEmail() {
return email;
}

public String getTelephone() {
return telephone;
}

public void setId(Long id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setEmail(String email) {
this.email = email;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
   

}

------------------------------ DeleteData.java ---------------------------------

package com.ramsis.hibernate.contact.util;

import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;


import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;

public class DeleteData extends ActionSupport{

    private String telephone;
private String msg="Records found.";
private String q;
public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getTelephone() {
return telephone;
}

public void setTelephone(String telephone) {
this.telephone = telephone;
}

public String execute(){
try{
SessionFactory cfg = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = cfg.openSession();
Transaction t = session.beginTransaction();
Transaction t1 = session.beginTransaction();
Query qr1 = session.createQuery("from Contact where telephone='"+telephone+"'");
List<Contact> li = qr1.list();
//System.out.println("telephone : "+telephone);
if(telephone==(null)||telephone==("")||li.size()==0){
    System.out.println("No record Deleted!!");
    msg="No record Deleted!!";
    return "success";
}
else{
   q ="delete from Contact where telephone='"+telephone+"'";

Query qr = session.createQuery(q);
qr.executeUpdate();
t.commit();
session.close();
System.out.println("Record has been Deleted.");
    msg="Record has been Deleted!!";
      return "success";
}
}
catch(Exception e){
e.printStackTrace();
return "error+'"+e+"'";
}

}
  }

------------------------------------- Product.java ----------------------------------------

package com.ramsis.hibernate.contact.util;
public class Product{

private int productId;
private String proName;
private double price;

public void setProductId(int productId)
{
   this.productId = productId;
}
public int getProductId()
{
   return productId;
}

public void setProName(String proName)
{
   this.proName = proName;
}
public String getProName()
{
   return proName;
}

public void setPrice(double price)
{
   this.price = price;
}
public double getPrice()
{
   return price;
}
}

----------------------------------- ShowData.java -------------------------------------

package com.ramsis.hibernate.contact.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.*;
import org.hibernate.cfg.AnnotationConfiguration;

import com.opensymphony.xwork2.ActionSupport;

public class ShowData extends ActionSupport {
private List<Contact> comboMeals = new ArrayList<Contact>();

public List<Contact> getComboMeals() {
return comboMeals;
}
 
public void setComboMeals(List<Contact> comboMeals) {
this.comboMeals = comboMeals;
}
public String execute(){
try{
SessionFactory cfg = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = cfg.openSession();
Transaction t = session.beginTransaction();

Query s = session.createQuery("from Contact");

List<Contact> li = s.list();
Iterator<Contact> itr = li.iterator();

while(itr.hasNext()){
Contact c = itr.next();
//System.out.println(c.getName());
// c.getName();
// c.getEmail();
// c.getPassword();
// c.getTelephone();
// c.getUsername();
comboMeals.add(c);
//System.out.println(t.wasCommitted());
}

t.commit();
session.close();

}
catch(Exception e){
e.printStackTrace();
}
if(comboMeals.size()>0){
return "success";
}
else{
return "error";
}

 }

}

----------------------------------------- ShowTest.java -----------------------

package com.ramsis.hibernate.contact.util;

import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;

public class ShowTest extends ActionSupport {
private List<String> comboMeals;

public List<String> getComboMeals() {
return comboMeals;
}
 
public void setComboMeals(List<String> comboMeals) {
this.comboMeals = comboMeals;
}
 
public String execute() {
 
comboMeals = new ArrayList<String>();
comboMeals.add("Snack Plate");
comboMeals.add("Dinner Plate");
comboMeals.add("Colonel Chicken Rice Combo");
comboMeals.add("Colonel Burger");
comboMeals.add("O.R. Fillet Burger");
comboMeals.add("Zinger Burger");
 
return SUCCESS;
}

}


------------------------------------ Update.java ------------------------

package com.ramsis.hibernate.contact.util;

import org.hibernate.*;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import com.opensymphony.xwork2.ActionSupport;

public class Update extends ActionSupport {

private int id;
private String name;
private String age;
private String telephone;
private String email;
private String msg="";


public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getEmail(){
return email;
}
public void setEmail(String email){
this.email=email;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}

public String execute(){

 try{
SessionFactory cfg = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = cfg.openSession();
Transaction t =  session.beginTransaction();
Query u = session.createQuery("update Contact set name='"+name+"', age='"+age+"', email='"+email+"' , telephone='"+telephone+"' where id ='"+id+"'");
       u.executeUpdate();
   t.commit();
   session.close();
   //System.out.println(t.wasCommitted());
   boolean ck = t.wasCommitted();
   
   if(ck==(false)){
    System.out.println("Record has not updated.");
    msg="Record has not updated.";
    return "error";
   }
   
   else
    System.out.println("Record has been updated.");
       msg="Record has been updated.";
       return "success";
   }  
catch(Exception e){
e.printStackTrace();
return "error";
}

}

}

---------------------------------- UpdateData.java --------------------------------

package com.ramsis.hibernate.contact.util;
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import org.hibernate.*;
import org.hibernate.annotations.*;
import org.hibernate.cfg.AnnotationConfiguration;

import com.opensymphony.xwork2.ActionSupport;

public class UpdateData extends ActionSupport{

private String name;
private String telephone;
private String msg="";
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}

private List<Contact> list = new ArrayList<Contact>();

public List<Contact> getList() {
return list;
}
public void setList(List<Contact> list) {
this.list = list;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}

public String execute(){
       try{
SessionFactory cfg = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = cfg.openSession();
Transaction t = session.beginTransaction();

Query q = session.createQuery("from Contact where telephone='"+telephone+"' and name='"+name+"'");

List <Contact> li = q.list();

Iterator <Contact> itr = li.iterator();
System.out.println(name);
System.out.println(telephone);
if(li.size()==0){
msg="No record found!!";
System.out.println(msg);
return "error";
}
System.out.println("size : "+li.size());
msg="Records found.";
while(itr.hasNext()){

Contact c = itr.next();

System.out.println(msg);
list.add(c);
}

t.commit();

       }
       catch(Exception e){
      e.printStackTrace();
       }
    return "success";
}

public String click(){
return "success";
}
}

---------------------------------------- ClientForSave-validation.xml ----------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
  "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
  "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message key="name.required" />
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message key="error.required" />
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message key="age.range"/>
</field-validator>
</field>
<field name="email">
<field-validator type="requiredstring">
<message key="email.required" />
</field-validator>
<field-validator type="email">
<message key="email.invalid" />
</field-validator>
</field>
<field name="telephone">
<field-validator type="requiredstring">
<message key="errors.required" />
</field-validator>
</field>
</validators>

------------------------------------ LoginInterceptor.java -------------------------

package com.ramsis.loginapi.interceptor;

import java.util.Map;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class LoginInterceptor implements Interceptor {
private static final long serialVersionUID = 1L;
@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void init() {
// TODO Auto-generated method stub

}

@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, Object> sessionAttributes = invocation.getInvocationContext().getSession();

if (sessionAttributes == null || sessionAttributes.get("loginId") == null) {
return "login";
} else {
if (!((String) sessionAttributes.get("loginId")).equals(null)) {
return invocation.invoke();
} else {
return "login";
}
}

}

}

------------------------------------ Contact.hbm.xml --------------------------------

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.ramsis.hibernate.contact.util.Contact" table="Contact">

<id name="id" column="Id"  >
<generator class="increment"/>
</id>
<property name="name" column="Name" length="30"/>
<property name="age" column="Age" length="10"/>
<property name="email" column="Email" length="20"/>
<property name="telephone" column="Telephone" length="30"/>

</class>
</hibernate-mapping>

------------------------------------ hibernate.cfg.xml --------------------------------

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!-- Database connection settings -->
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/exampledb
</property>
<property name="connection.username">cdb</property>
<property name="connection.password">1234</property>

<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>

<!-- SQL dialect -->
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>

<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>

<!-- Disable the second-level cache  -->
<property name="cache.provider_class">
org.hibernate.cache.NoCacheProvider
</property>

<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>

<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>

<!--  <mapping class="com.ramsis.hibernate.contact.model.Contact" /> -->
          <mapping class="com.ramsis.actions.Auth" />
          <mapping resource="Contact.hbm.xml" />
       
</session-factory>

</hibernate-configuration>

----------------------------------- struts.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" />
    <constant name="struts.custom.i18n.resources" value="ApplicationResources" />
   
    <package name="default" extends="struts-default" namespace="/" >
         <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
       
      <interceptors>
<interceptor name="loginInterceptor" class="com.ramsis.loginapi.interceptor.LoginInterceptor1" ></interceptor>
<interceptor name="clear-cache" class="com.ramsis.clearcache.interceptor.ClearCacheInterceptor" ></interceptor>
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor" />
<interceptor-ref name="defaultStack" />
</interceptor-stack>
 </interceptors>
     
         <global-results>
<result name="login">/Login.jsp</result>
</global-results>

        <action name="login"
            class="com.ramsis.actions.LoginAction" method="execute">
           
            <result name="success" type="tiles">/welcome.tiles</result>
              <result name="error">/Login.jsp</result>
            <result name="input">/Login.jsp</result>
        </action>
      <!--  <action name="customer"
            class="com.ramsis.actions.CustomerAction">
    <interceptor-ref name="loginStack" />
            <result name="success" type="tiles">/customer.success.tiles</result>
            <result name="input" type="tiles">/customer.tiles</result>
        </action> -->
        <action name="customer-form">
            <interceptor-ref name="loginStack" />  
            <result name="success" type="tiles">/customer.tiles</result>
        </action>
        <!--   logout action  -->
<action name="logOut" class="com.ramsis.actions.LoginAction" method="logOut">
       <interceptor-ref name="clear-cache" />
       <interceptor-ref name="loginStack" />
<result name="success">/Login.jsp</result>
</action>

      <action name="customer" class="com.ramsis.hibernate.contact.util.ClientForSave" method="addCustomer">
    <interceptor-ref name="loginStack" />
<result name="success" type="tiles">/customer.success.tiles</result>
<result name="input" type="tiles">/customer.tiles</result>
</action>

<action name="ShowTest" class="com.ramsis.hibernate.contact.util.ShowData">
    <interceptor-ref name="loginStack" />
    <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/ShowTest.success.tiles</result>
</action>

<action name="DeleteData" class="com.ramsis.hibernate.contact.util.DeleteData">
    <interceptor-ref name="loginStack" />
   <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/DeleteData.success.tiles</result>
</action>

<action name="DeleteDataClick" class="">
    <interceptor-ref name="loginStack" />
   <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/DeleteDataClick.success.tiles</result>
</action>

<action name="BeforeUpdate" class="com.ramsis.hibernate.contact.util.UpdateData" method="click">
    <interceptor-ref name="loginStack" />
    <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/BeforeUpdate.success.tiles</result>
</action>

<!-- <action name="BeforeUpdate" class="com.ramsis.hibernate.contact.util.UpdateData" method="execute">
    <interceptor-ref name="loginStack" />
    <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/BeforeUpdate.success.tiles</result>
</action> -->

<action name="UpdateData" class="com.ramsis.hibernate.contact.util.UpdateData" method="execute">
    <interceptor-ref name="loginStack" />
    <result type="tiles" name="error">/BeforeUpdate.error.tiles</result>
<result type="tiles" name="success" >/Update.success.tiles</result>
</action>

         <action name="Updated" class="com.ramsis.hibernate.contact.util.Update" method="execute">
    <interceptor-ref name="loginStack" />
    <result name="error">/error.jsp</result>
<result type="tiles" name="success" >/Updated.success.tiles</result>
</action>

    </package>
</struts>

--------------------------------------- tiles.xml -----------------------------------------

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

<definition name="baseLayout" template="/BaseLayout.jsp">
<put-attribute name="title" value="" />
<put-attribute name="header" value="/Header.jsp" />
<put-attribute name="menu" value="/Menu.jsp" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/Footer.jsp" />
</definition>

<definition name="/welcome.tiles" extends="baseLayout">
<put-attribute name="title" value="Welcome" />
<put-attribute name="body" value="/Welcome.jsp" />
</definition>

<definition name="/customer.tiles" extends="baseLayout">
<put-attribute name="title" value="Customer Form" />
<put-attribute name="body" value="/Customer.jsp" />
</definition>
<definition name="/customer.success.tiles" extends="baseLayout">
<put-attribute name="title" value="Customer Added" />
<put-attribute name="body" value="/SuccessCustomer.jsp" />
</definition>
<definition name="/ShowTest.success.tiles" extends="baseLayout">
<put-attribute name="title" value="ShowTest" />
<put-attribute name="body" value="/ShowTest.jsp" />
</definition>
    <definition name="/DeleteData.success.tiles" extends="baseLayout">
<put-attribute name="title" value="DeleteData" />
<put-attribute name="body" value="/DeleteData.jsp" />
</definition>
<definition name="/DeleteDataClick.success.tiles" extends="baseLayout">
<put-attribute name="title" value="DeleteDataClick" />
<put-attribute name="body" value="/DeleteData.jsp" />
</definition>
<definition name="/BeforeUpdate.success.tiles" extends="baseLayout">
<put-attribute name="title" value="BeforeUpdate" />
<put-attribute name="body" value="/BeforeUpdate.jsp" />
</definition>
<definition name="/BeforeUpdate.error.tiles" extends="baseLayout">
<put-attribute name="title" value="UpdateError" />
<put-attribute name="body" value="/BeforeUpdate.jsp" />
</definition>
<definition name="/Update.success.tiles" extends="baseLayout">
<put-attribute name="title" value="Update" />
<put-attribute name="body" value="/Update.jsp" />
</definition>
<definition name="/Updated.success.tiles" extends="baseLayout">
<put-attribute name="title" value="Updated" />
<put-attribute name="body" value="/BeforeUpdate.jsp" />
</definition>

</tiles-definitions>

----------------------------------------- web.xml -----------------------------

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>Struts2 Application</display-name>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<context-param>
<param-name>tilesDefinitions</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>Login.jsp</welcome-file>
</welcome-file-list>

</web-app>

---------------------------------------- BaseLayout.jsp ----------------------------------

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><tiles:insertAttribute name="title" ignore="true" /></title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="2" align="center">
<tr>
<td height="30" colspan="3"><tiles:insertAttribute name="header" />
</td>
</tr>
<tr>
<td height="300" width="100"><tiles:insertAttribute name="menu" /></td>
<td width="350"><tiles:insertAttribute name="body" /></td>
<td height="300"><tiles:insertAttribute name="menu" /></td>
</tr>
<tr>
<td height="30" colspan="3"><tiles:insertAttribute name="footer" />
</td>
</tr>
</table>
</body>
</html>

--------------------------------- BeforeUpdate.jsp -----------------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Check Data which you have to update.</title>
</head>
<body>
<h2>Update your data.</h2>
<p><s:property value="msg" /></p>

<s:form action="UpdateData.action" method="Post" >
    <s:textfield  name="name"  size="20" label="Name" />
    <s:textfield  name="telephone" size="20" label="Telephone" />
    <s:submit method="execute" key="Submit" />
</s:form>
</body>
</html>

------------------------------- body.jsp ------------------------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p> sample body content.</p>
</body>
</html>

----------------------------- Customer.jsp ----------------------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Customer Form - Struts2 Demo </title>
</head>

<body>
<h2>Customer Form</h2>

<s:form action="customer.action" method="post" validate="true">
<s:textfield name="name" key="name" size="20" label="Name" />
<s:textfield name="age" key="age" size="20" label="Age" />
<s:textfield name="email" key="email" size="20" label=" Email" />
<s:textfield name="telephone" key="telephone" size="20" label="Telephome" />
<s:submit method="addCustomer" key="submit" align="center" />
</s:form>
</body>
</html>

--------------------------- DeleteData.jsp --------------------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Delete Data</h2>
<s:property value="msg" />
<s:form action="DeleteData.action" method="post" >
 
  <s:textfield  name="telephone" size="20" label="Enter Telephone Number " />
  <s:submit method="execute" key="Submit" />
 
</s:form>

</body>
</html>

------------------------------- error.jsp -------------------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h2>Error has been occur. Try again. </h2>
</body>
</html>

------------------------------------ Footer.jsp -------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
Copyright &copy; ramsis-code.blogspot.in

------------------------------------ Header.jsp -------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<center><h2>Ramsis-Code</h2></center>
<table width="100%" border="0">
<tr>
<td>
Hello <s:property value="%{#session['loginId']}"/>&nbsp;|&nbsp;<a href="<s:url action="logOut"/>">LogOut</a>
&nbsp;|&nbsp;<a href="<s:url action="logOut"/>">Log In</a>
</td>
</tr>
</table>

--------------------------------- Login.jsp ----------------------------


<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Struts 2 - Login Application | ViralPatel.net</title>
</head>
<body>
<h2>Struts 2 - Login Application</h2>
<s:actionmessage />
<s:actionerror />
<s:form action="login.action" method="post" namespace="LoginUser">
<s:textfield name="username" key="label.username" size="20" label="User Name" />
<s:password name="pass" key="label.password" size="20" label="Password" />
<s:submit method="execute" value="Submit" key="label.login" align="center"  />
</s:form>
</body>
</html>


--------------------------------- Logout.jsp ---------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=Test.action">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
 <p> Logout Successfully...</p>
</body>
</html>

------------------------------- Menu.jsp --------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:a href="customer-form">Submit Form</s:a><br/>
<s:a href="ShowTest">Show Data</s:a><br/>
<s:a href="DeleteDataClick">Delete Data</s:a><br/>
<s:a href="BeforeUpdate">Update Data</s:a>

----------------------------- ShowTest.jsp ------------------------

<%@ taglib prefix="s" uri="/struts-tags" %>
 
<html>
<head>
</head>
 
<body>
<!--  <h1>Struts 2 Iterator tag example</h1>-->
 
<h3>Show Records</h3>
<table border="1" style="border-collapse:collapse;">
<th>Name</th>
<th>Age</th>
<th>Email</th>
<th>Telephone</th>
<s:iterator value="comboMeals" status="comboMealsStatus" >
<tr>
  <!--  <s:if test="comboMealsStatus.odd == true" />  -->
  <td style="background: #CCCCCC"> <s:property value="name" /></td>
  <td> <s:property value="age" /></td>
  <td> <s:property value="email" /></td>
  <td> <s:property value="telephone" /></td>
</tr>  
</s:iterator>
</table>

</body>
</html>

-------------------------- SuccessCustomer.jsp -----------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Customer Page - Struts2 Demo | ViralPatel.net</title>
</head>

<body>
<h2>Customer Added Successfully.</h2>
</body>
</html>

--------------------------- Update.jsp -------------------------------

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
<head>
<title>Check Data which you have to update.</title>
</head>
<body>
<h2>Update your data.</h2>
<p><s:property value="msg" /></p>
<p><s:set var="strmsg" value="msg"/></p>
<s:form action="Updated.action" method="Post" >
    <s:iterator value="list" var="list">
    <s:hidden name="id" value="%{#list.id}" />
    <s:textfield  name="name" value="%{#list.name}" size="20" label="Name" />
    <s:textfield  name="age" value="%{#list.age}" size="20" label="Age " />
    <s:textfield  name="email" value="%{#list.email}"  size="20" label="Email" />
    <s:textfield  name="telephone" value="%{#list.telephone}"  size="20" label="Telephone" />
    </s:iterator>
    <s:submit method="execute" key="Submit" />
     
</s:form>
</body>
</html>

--------------------------- Welcome.jsp ----------------------------------

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Welcome</title>
</head>

<body>
<h2>Howdy, <s:property value="username" />...!</h2>

</body>
</html>

Download Code

No comments:

Post a Comment