**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.convention.result.path value= /pages />
<constant name= struts.convention.action.packages value= com.icici.recon />
<constant name= struts.custom.i18n.resources value= global />
<package name= default extends= struts-default, json-default namespace= / >
<action name= index class= com.credentek.recon.sms.action.IndexAction >
<result>/pages/index.jsp</result>
</action>
<action name= indexLogin class= com.credentek.recon.sms.action.IndexAction method= login >
<result>/pages/sms/login.jsp</result>
</action>
<action name= login class= com.credentek.recon.sms.action.LoginAction >
<result >/pages/sms/login.jsp</result>
</action>
<action name= showmenu class= com.credentek.recon.sms.action.LoginAction method= showmenu >
<result name= success >pages/menu/menu.jsp</result>
<result name= error >pages/menu/blank1.jsp</result>
</action>
</package>
</struts>
**LoginAction.java**
package com.credentek.recon.sms.action;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.SessionAware;
import com.credentek.recon.sms.dao.LoginDAO;
import com.credentek.recon.sms.dao.LoginDAOImpl;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport implements SessionAware {
private static final long serialVersionUID = -8841529855335717596L;
private final Logger log = Logger.getLogger(LoginAction.class);
private Map<String, Object> session;
private String userID;
private String welcomeDetails;
private String loginDetails;
private boolean implementationStatus;
private String subSystem;
private LoginDAOImpl loginDAO = new LoginDAOImpl();
public String execute() {
log.info( Loading login page... );
log.info( Login page loaded successfully. );
return SUCCESS;
}
public String showmenu() {
log.info( showmenu );
System.out.println( show menu.... );
if(userID.equalsIgnoreCase( ) || userID == null){
System.out.println( no user ID..... );
return ERROR;
}
System.out.println( USER ID..... );
HttpServletRequest request = (HttpServletRequest) ActionContext
.getContext().get(ServletActionContext.HTTP_REQUEST);
log.info( Validating login information... );
String dateFormat = loginDAO.getDateFormat();
if(! .equals(dateFormat)) {
session.put( dateFormat , dateFormat);
log.info( Date Format set to + dateFormat);
} else {
session.put( dateFormat , dd/MM/yyyy );
log.error( Date Format is not set properly, please set dateFormat parameter in Parameter table );
}
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
String businessDate = sdf.format(new Date());
session.put( userID , userID);
session.put( userName , userID);
session.put( businessDate , 30/04/2012 );
session.put( subSystem , subSystem);
String moduleID = loginDAO.getModuleDetails(subSystem);
log.info( moduleID is set to + moduleID );
session.put( moduleID , moduleID);
session.put( lastLoginDate , );
session.put( lastBusinessDate , );
session.put( currencyFormat , );
dateFormat = dateFormat.replace( yy , y );
dateFormat = dateFormat.replace( E , D );
dateFormat = dateFormat.replace( DD , D );
if(StringUtils.countMatches(dateFormat, MMMM ) == 1)
dateFormat = dateFormat.replace( MMMM , MM );
else if(StringUtils.countMatches(dateFormat, MMM ) == 1)
dateFormat = dateFormat.replace( MMM , M );
else if(StringUtils.countMatches(dateFormat, MM ) == 1)
dateFormat = dateFormat.replace( MM , mm );
else if(StringUtils.countMatches(dateFormat, M ) == 1)
dateFormat = dateFormat.replace( M , m );
session.put( datePickerFormat , dateFormat);
log.info( DatePicker format set to + dateFormat);
log.info( Login successfull. Login Information = + session);
welcomeDetails = Welcome + userID;
sdf = new SimpleDateFormat( dd MMMM, yyyy HH:mm:ss z );
loginDetails = Current Login : + sdf.format(new Date());
log.info( Login Details: User- + userID + , + loginDetails);
implementationStatus = true;
request.getSession().setMaxInactiveInterval(60 * 60);
return SUCCESS;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
public String getUserID() {
return userID;
}
public void setUserID(String userID) {
this.userID = userID;
}
public String getWelcomeDetails() {
return welcomeDetails;
}
public void setWelcomeDetails(String welcomeDetails) {
this.welcomeDetails = welcomeDetails;
}
public String getLoginDetails() {
return loginDetails;
}
public void setLoginDetails(String loginDetails) {
this.loginDetails = loginDetails;
}
public boolean isImplementationStatus() {
return implementationStatus;
}
public void setImplementationStatus(boolean implementationStatus) {
this.implementationStatus = implementationStatus;
}
public String getSubSystem() {
return subSystem;
}
public void setSubSystem(String subSystem) {
this.subSystem = subSystem;
}
}
**index.jsp**
<%@ page language= java contentType= text/html; charset=ISO-8859-1
pageEncoding= ISO-8859-1 %>
<%@ taglib prefix= s uri= /struts-tags %>
<%@ taglib prefix= sj uri= /struts-jquery-tags %>
<!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 />
<meta http-equiv= Content-Style-Type content= text/css />
<meta http-equiv= pragma content= no-cache />
<meta http-equiv= cache-control content= no-cache />
<meta http-equiv= expires content= 0 />
<meta http-equiv= keywords content= struts2, jquery, jquery-ui, plugin, showcase, jqgrid />
<meta http-equiv= description content= Debit Card Reconciliation System />
<link href= styles/layout.css rel= stylesheet type= text/css />
<link rel= stylesheet href= styles/styles.css type= text/css />
<!--[if lte IE 7]>
<link href= styles/patch_layout.css rel= stylesheet type= text/css />
<![endif]-->
<!-- This files are needed for AJAX Validation of XHTML Forms -->
<script type= text/javascript src= ${pageContext.request.contextPath}/struts/utils.js ></script>
<script type= text/javascript src= ${pageContext.request.contextPath}/struts/xhtml/validation.js ></script>
<script type= text/javascript src= js/jquery.js ></script>
<sj:head debug= true compressed= false jquerytheme= humanity loadFromGoogle= false ajaxhistory= false defaultIndicator= myDefaultIndicator defaultLoadingText= Please wait ... />
<!-- This file includes necessary functions/topics for validation and all topic examples -->
<script type= text/javascript src= js/showcase.js ></script>
<script type= text/javascript src= js/common.js ></script>
<script type= text/javascript src= js/right.js ></script>
<script type= text/javascript src= js/date.js ></script>
<script type= text/javascript src= js/ui/jquery.ui.datepicker.js ></script>
<script type= text/javascript src= js/jquery.tablesorter.js ></script>
<script type= text/javascript src= js/jquery.tablesorter.pager.js ></script>
<script type= text/javascript src= js/jquery.tablesorter.filter.js ></script>
<script type= text/javascript src= js/ui/jquery.ui.core.js ></script>
<script type= text/javascript src= js/ui/jquery.ui.widget.js ></script>
<script type= text/javascript src= js/ui/jquery.ui.mouse.js ></script>
</head>
<body>
<div class= page_margins >
<div class= page >
<table width= 100% border= 0 class= ui-widget-header >
<tr>
<td width= 40% ><div id= headline >
<h1 class= ui-state-default style= background: none; border: none; >Login Attempt </h1>
<h4 class= ui-state-default style= background: none; border: none; >Login <i><small>Login</small></i></h4>
<img id= myDefaultIndicator src= images/ajax-loader.gif alt= Loading... style= display:none />
</div></td>
<td width= 30% ><div id= subSystemInfo class= ui-state-default style= background: none; border: none;font-size: 20px; ></div> </td>
<td width= 30% >
<div >
<div style= float: right; >
<s:form id= themeform action= setlocale theme= simple >
<div id= languageBox >
<span>
</span>
<span>
</span>
</div>
<sj:submit id= submitForm formIds= themeform listenTopics= formTopic cssStyle= display: none; />
</s:form>
<div class= ui-state-default style= background: none; border: none; padding-top: 3px; padding-bottom: 3px; float: right; ><span id= userInfo ></span><span><a id= logout href= index.action ></a></span></div><br>
<div id= loginInfo class= ui-state-default style= background: none; border: none;float: right; ></div>
</div>
</div>
</td>
</tr>
</table>
<div id= menu ></div>
<s:url id= urlLogin action= login />
<sj:div id= main href= %{urlLogin} cssStyle= height:320px >
<img id= indicator src= images/indicator.gif alt= Loading... />
</sj:div>
<!-- begin: #footer -->
<div id= footer >
Copyright © 2012, CredenTek Software & Consultancy Private Limited. <a href= http://www.credentek.com/ target= _blank >www.credentek.com</a>
</div>
</div>
</div>
<div class= curtain id= loading-filter style= display:none; height: 850px; >
<div style= margin-top: 200px; text-align: center; >
<img src= images/loading.gif width= 110 height= 90 alt= loading ... />
</div>
</div>
</body>
</html>
**login.jsp**
<%@ taglib prefix= s uri= /struts-tags %>
<%@ taglib prefix= sj uri= /struts-jquery-tags %>
<div id= col3 align= center style= width: 100%; >
<div id= col3_content align= center class= clearfix style= width: 90%; >
<s:url id= urlShowMenu action= showmenu />
<%-- <sj:a id= loginLink >Login</sj:a> --%>
<table cellpadding= 0 cellspacing= 7 border= 0 width= 100% >
<tr valign= top >
<td width= 35% ><img src= images/icicibank.jpg width= 250px ></td>
<td><br></br><br></br><br></br></td>
<td width= 35% align= right >
</td>
</tr>
<tr>
<td>
</td>
<td>
<h4 class= ui-state-default style= background: none; border: none; >Login</h4>
</td>
<td>
</td>
</tr>
<tr>
<td></td>
<td>
<hr></hr>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td>
<s:form id= loginForm theme= simple >
<table cellpadding= 0 cellspacing= 15 border= 3 width= 100% >
<tr style= border:0px; >
<td width= 50% style= border:0px; align= left >User Name </td>
<td width= 50% style= border:0px; >
<s:textfield id= userID cssClass= searchInputText name= userID ></s:textfield>
</td>
</tr>
<tr style= border:0px; >
<td style= border:0px; align= left >Password </td>
<td style= border:0px; ><s:password id= password cssClass= searchInputText /></td>
</tr>
<tr style= border:0px; >
<td style= border:0px; align= left >Sub-System</td>
<td style= border:0px; ><s:select name= subSystem list= { Nostro , CMS } cssStyle= width:132px cssClass= searchInputText /></td>
</tr>
<tr align= right style= border:0px; >
<td align= right colspan= 2 style= border:0px; >
<sj:submit id= loginBtn name= Logn href= %{urlShowMenu} targets= menu button= true ></sj:submit>
</td>
</tr>
</table>
</s:form>
</td>
<td></td>
</tr>
</table>
</div>
<!-- IE Column Clearing -->
<div id= ie_clearing > </div>
</div>
<script type= text/javascript >
$(document).ready(function() {
$( #bankName ).focus();
$( #loginBtn ).click(function()
{
$( #main ).empty();
});
});
</script>
Please visit the following links:
http://www.roseindia.net/struts/struts/struts2.2.1/tags/LonginValidation.html
http://www.roseindia.net/struts/struts2/struts2validation.shtml