In this example we
will see how to create a login application using ActionForm. The following
files are required for the login application.
·
login.jsp
·
success.jsp
·
failure.jsp
·
web.xml
·
struts-config.xml
·
LoginAction.java
·
LoginForm.java
web.xml
The first page that
will be called in the login application is the login.jsp page. This
configuration should be done in web.xml as shown below.
1.<welcome-file-list>
2.<welcome-file>login.jsp</welcome-file>
3.</welcome-file-list>
login.jsp
We use Struts HTML Tags to create
login page. The form has one text field to get the user name and one password
field to get the password. The form also has one submit button, which when
clicked calls the login action. <html:errors /> tag is used to display the error messages to the user.
01.<%@taglib
uri="/WEB-INF/struts-html.tld" prefix="html" %>
02.<html>
03.<head>
04.<title>Login Page</title>
05.</head>
06.<body>
07.<div style="color:red">
08.<html:errors />
09.</div>
10.<html:form action="/Login" >
11.User Name :<html:text name="LoginForm" property="userName" />
12.Password :<html:password name="LoginForm" property="password" />
13.<html:submit value="Login" />
14.</html:form>
15.</body>
16.</html>
The user enters the
user name and password and clicks the login button. The login action is
invoked.
struts-config.xml
The validate method
in the LoginForm class is called when the Form is submitted. If any errors are
found then the control is returned back to the input page where the errors are
displayed to the user. The input page is configured in the action tag of strut-config
file. <html:errors /> tag is used to display the errors in the jsp page.
01.<struts-config>
02.<form-beans>
03.<form-bean name="LoginForm" type="com.vaannila.LoginForm"/>
04.</form-beans>
05.
06.<action-mappings>
07.<action input="/login.jsp" name="LoginForm" path="/Login"scope="session" type="com.vaannila.LoginAction">
08.<forward name="success" path="/success.jsp" />
09.<forward name="failure" path="/failure.jsp" />
10.</action>
11.</action-mappings>
12.</struts-config>
Here the action is "/Login" , the input
page is "login.jsp" and the
corresponding action class is LoginAction.java. Now the validate method in the
LoginForm class will be invoked.
LoginForm.java
Inside the validate
method, we check whether the user name and password is entered. If not the
corresponding error message is displayed to the user. The error messages are
configured in the ApplicationResource.properties file.
01.public ActionErrors validate(ActionMapping mapping, HttpServletRequest
request) {
02.ActionErrors errors = new ActionErrors();
03.if (userName == null ||
userName.length() < 1) {
04.errors.add("userName", new ActionMessage("error.userName.required"));
05.}
06.if (password == null ||
password.length() < 1) {
07.errors.add("password", new ActionMessage("error.password.required"));
08.}
09.return errors;
10.}
ApplicationResource.properties
The ApplicationResource.properties
file contains the error messages. The key "error.userName.required" is used in
the validate function to add a new error. Since the error messages are
configured in a seperate properties file they can be changed anytime without
making any changes to the java files or the jsp pages.
1.error.userName.required = User Name is
required.
2.error.password.required = Password is required.
If either user name
or password is not entered then the corresponding error message will be added
to the ActionErrors. If any errors are found then the control is returned back
to the input jsp page, where the error messages are displayed using the
<html:errors /> tag. The validate method is used to perform the
client-side validations. Once when the input data is valid the execute method
in the LoginAction class is called.
LoginAction.java
The execute method
contains the business logic of the application. Here first we typecast the ActionForm
object to LoginForm, so that we can access the form variables using the getter
and setter methods. If the user name and password is same then we forward the
user to the success page else we forward to the failure page.
01.public class LoginAction extends org.apache.struts.action.Action {
02.
03.private final static String SUCCESS = "success";
04.private final static String FAILURE = "failure";
05.
06.public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throwsException {
07.LoginForm loginForm =
(LoginForm) form;
08.if (loginForm.getUserName().equals(loginForm.getPassword())) {
09.return mapping.findForward(SUCCESS);
10.} else {
11.return mapping.findForward(FAILURE);
12.}
13.}
14.}
Lets enter the user names and
password as "Eswar". Since the
user name and password is same the execute method will return an ActionForward
"success". The
corresponding result associated with the name "success" will be
shown to the user. This configuration is done in struts-config.xml file.
1.<action-mappings>
2.<action input="/login.jsp" name="LoginForm" path="/Login"scope="session" type="com.vaannila.LoginAction">
3.<forward name="success" path="/success.jsp" />
4.<forward name="failure" path="/failure.jsp" />
5.</action>
6.</action-mappings>
So according to the
configuration in struts-config.xml the user will be forwarded to success.jsp
page.
|
No comments:
Post a Comment