zoukankan      html  css  js  c++  java
  • 创建Struts2登录程序

    http://www.cnblogs.com/cxy0703/archive/2012/05/22/2513610.html 

    通过硬编码的形式在Action中验证的(用户名: Admin 密码: Admin)

    程序是如何工作的 :

    1.      显示登录页面等待输入

    2.      用户输入用户名和密码后点击"Login"按钮

    3.      在Action类中用户校验得到了执行,如果用户在name/password字段输入Admin/Admin,那么将会显示成功页面.否则页面显示错误信息.

    开发本程序的步骤 :

    这是些简单的创建登录页面的步骤 :

    1. 创建登录页面

    程序的用户界面由登录表单(login.jsp)和成功消息页面(loginsuccess.jsp)组成. 
    login.jsp用来向用户显示登录页面.在我们的程序中它存放在"webapps\Struts2tutorial\pages\",这就是login.jsp的代码 :

    复制代码
    1<%@ taglib prefix="s"uri="/struts-tags"%>2<html>3<head>4<title>Struts 2 Login Application!</title>56<link href="<s:url value="/css/main.css"/>" rel="stylesheet" type="text/css"/>  78</head>9<body>10<s:form action="doLogin"method="POST">11<tr>12<td colspan="2">13Login  14</td>1516</tr>1718<tr>19<td colspan="2">20<s:actionerror />21<s:fielderror />22</td>23</tr>2425<s:textfield name="username"label="Login name"/>26<s:password name="password"label="Password"/>27<s:submit value="Login"align="center"/>2829</s:form>3031</body>3233</html>
    复制代码

    代码 <s:actionerror />
    <s:fielderror />

    用来显示Action和字段校验的错误

    代码 <s:form action="doLogin" method="POST">为程序生成了HTML表单

    代码 <s:textfield name="username" label="Login name"/>
    <s:password name="password" label="Password"/>

    生成了Login Name和Password字段.

    提交按钮由代码<s:submit value="Login" align="center"/>生成

    当程序执行时产生了如下的HTML代码 :

    复制代码
    1<html>2<head>3<title>Struts 2 Login Application!</title>4<link href="/Struts2tutorial/css/main.css"rel="stylesheet"5type="text/css"/>67</head>8<body>9<form id="doLogin"name="doLogin"onsubmit="return true;"10action="/Struts2tutorial/roseindia/doLogin.action"method="POST">11<table class="wwFormTable">1213<tr>14<td colspan="2">15Login  16</td>17</tr>18<tr>19<td class="tdLabel"><label for="doLogin_username"class="label">20Login name:</label>21</td>22<td><input type="text"name="username"value=""id="doLogin_username"/>23</td>24</tr>25<tr>26<td class="tdLabel"><label for="doLogin_password"class="label">27Password:</label></td>28<td><input type="password"name="password"id="doLogin_password"/>29</td>30</tr>31<tr>32<td colspan="2"><div align="center"><input type="submit"33id="doLogin_0"value="Login"/>34</div></td>35</tr>36</table></form>37</body>38</html>
    复制代码

    通过观察上面生成的HTML代码,你会发现Struts2自动生成HTML元素的form, html table, label.这是Struts2与Struts1相比的另一个杰出的特性.

    loginsuccess.jsp页面显示的是当用户验证成功后的登录成功信息.这就是loginsuccess.jsp文件的代码 :

    复制代码
    <html><head><title>Login Success</title></head><body><align="center"><font color="#000080"size="5">Login Successful</font></p></body></html>
    复制代码

    2.创建Action类

    现在让我们创建Action类来处理登录请求.在Struts2中不一定非要实现Action接口,任何含有execute()方法的POJO都可以当作Action使用.Struts2提供了一个基础的ActionSupport类来实现常用的接口.在我们的Action类中(Login.java)我们实现了ActionSupport接口.我们的"Login.java"存放在webapps\Struts2tutorial\WEB-INF\src\java\net\roseindia" 这就是Login.java这个Action类的代码 :

    复制代码
    1packagenet.roseindia;  2importcom.opensymphony.xwork2.ActionSupport;  3importjava.util.Date;  456/**7* <p> Validate a user login. </p> 8*/9publicclassLogin  extendsActionSupport {  101112publicString execute() throwsException {  13System.out.println("Validating login");  14if(!getUsername().equals("Admin") || !getPassword().equals("Admin")){  15addActionError("Invalid user name or password! Please try again!");  16returnERROR;  17}else{  18returnSUCCESS;  19}  20}  212223//---- Username property ----  2425/**26* <p>Field to store User username.</p> 27* <p/> 28*/29privateString username = null;  303132/**33* <p>Provide User username.</p> 3435@returnReturns the User username. 36*/37publicString getUsername() {  38returnusername;  39}  4041/**42* <p>Store new User username</p> 4344@paramvalue The username to set. 45*/46publicvoidsetUsername(String value) {  47username =value;  48}  4950//---- Username property ----  5152/**53* <p>Field to store User password.</p> 54* <p/> 55*/56privateString password = null;  575859/**60* <p>Provide User password.</p> 6162@returnReturns the User password. 63*/64publicString getPassword() {  65returnpassword;  66}  6768/**69* <p>Store new User password</p> 7071@paramvalue The password to set. 72*/73publicvoidsetPassword(String value) {  74password =value;  75}  7677}  
    复制代码

    3.  配置Action映射(在struts.xml文件中)

    现在我们将要在struts.xml中创建Action映射.这就是添加到struts.xml中的代码 :

    复制代码
    <action name="showLogin"><result>/pages/login.jsp</result></action><action name="doLogin"class="net.roseindia.Login"><result name="input">/pages/login.jsp</result><result name="error">/pages/login.jsp</result><result>/pages/loginsuccess.jsp</result></action>
    复制代码

    在上面的映射中,Action "showLogin"用来显示登录页面,"doLogin"则校验了用户使用的Action类(Login.java).

    4.  CSS文件(main.css)

    这个css文件用来增强login表单的显示效果.main.css文件存放在"\webapps\Struts2tutorial\css" directory.
    这就是main.css:的代码 :

    复制代码
    @CHARSET "UTF-8";    body {font:12px verdana, arial, helvetica, sans-serif;background-color:#FFFFFF;  }table.wwFormTable {font:12px verdana, arial, helvetica, sans-serif;border-width:1px;border-color:#030;border-style:solid;color:#242;background-color:#ada;width:30%;margin-left:35%;margin-right:35%;margin-top:15%;  }table.wwFormTable th {  }table.wwFormTable tr td {background-color:#dfd;margin:5px;padding:5px;  }.tdLabel {  /*border- 1px;  border-color: #afa;  border-style: solid;  */font-weight:bold;align:top;  }.label {  }.errorMessage {color:red;font-size:0.8em;  }#headerDiv {border-style:solid;border-width:1px 1px 0px;border-color:black;padding:5px;background-color:#7a7;  /*height: 22px; */height:1.8em;  /*margin-bottom: 12px; */}#buttonBar {border-width:0px 1px 1px;border-style:solid;border-color:black;color:white;margin-bottom:12px;background-color:#7a7;height:1.6em;padding:5px;  }#appName {color:white;font-size:1.8em;  }#pageTitle {font-size:1.4em;color:#dfd;clear:none;  }#appName, #pageTitle {float:right;  }#menuContainer {float:left;  }#brandingContainer {float:right:  text-align: right;  }  
    复制代码
    本站原创,转载请标明:来自蔡傑儒博客(http://www.cnblogs.com/cxy0703/)


  • 相关阅读:
    由WSDL文件生成WEB service server端C#程序(转)
    C#调用WebService实例和开发(转)
    ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
    TOMCAT的框架结构
    Oracle学习历程--创建用户,分配表空间
    sql关键字之null
    oracle中varchar、varchar2、char和nvarchar的区别
    将中缀转换为后缀并求值
    Orchard FAQ
    盘点支持Orchard的.NET 4.5虚拟主机(虚拟空间)
  • 原文地址:https://www.cnblogs.com/phyking/p/4456658.html
Copyright © 2011-2022 走看看