郭炜炜老婆玩剑三吗:17.7 使用Struts2 注释验证 - struts2 - ITeye专栏频道

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 18:54:03

使用注释验证Struts2 Login程序.

本章我们将使用Action类中的注释来验证我们的login程序.我们当前的login程序并未通过数据库来验证用户.相反在Action类中用户名和密码是通过硬编码来验证的(User: Admin and Password: Admin).

程序如何工作 :

1.      显示login页面获取用户输入

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

3.      在Action类中完成用户验证.如果用户在user name/password字段中输入了Admin/Admin,那么显示成功页面,否则在屏幕上显示错误信息.

创建该程序的步骤

这是使用struts2创建Login页面的简易步骤 :

1.创建Login表单

程序的GUI(图形用户界面)包括login表单(log-in.jsp)和显示成功信息的页面(loginsuccess.jsp).

log-in.jsp用来向用户显示登录页,在我们的程序中它存放"webapps\struts2tutorial\pages\",这是log-in.jsp的代码

Html代码  

  1. <%@ taglib prefix="s" uri="/struts-tags" %>  
  2.   
  3.   
  4. Struts 2 Login Application!  
  5.   
  6. " rel="stylesheet" type="text/css"/>  
  7.   
  8.   
  9.   
  10.   
  11.   
  12.   
  13.   
  14. Login  
  15.   
  16.   
  17.   
  18.   
  19.     
  20.      
  21.            
  22.            
  23.      
  24.     
  25.   
  26.   
  27.   
  28.   
  29.   
  30.   
  31.   
  32.   
  33.   
  34.   

代码    

显示了Action错误段验证错误

代码为程序生成了HTML表单
代码 
     
生成了Login Name和Password字段

submit按钮是由代码生成的

loginsuccess.jsp显示了当用户验证成功后的登录成功信息.这是loginsuccess.jsp的代码

Html代码  

  1.    
  2.   
  3. Login Success  
  4.   
  5.   
  6. Login Successful

      
  7.   
  8.   

2.创建Action类(使用注释来验证表单)

现在让我们创建Action类来处理login请求.Struts2框架提供了一个基础的ActionSupport类来实现常用的接口.在我们的Action类中 (AnnotationAction.java)我们继承了ActionSupport类并引入了com.opensymphony.xwork2.validator.annotations包

为了验证login程序我们可以向jsp页面或Action类中添加java脚本.但是struts2提供了另一种非常简单的方法来验证你的表单域,那就是使用Action类中的注释.

有两个注释是必须的 :

1. @Validation注释告诉Struts这个类的Action可能需要验证

2. @RequiredStringValidator注释用于文本输入以便保持单一值

剩下的则交由框架来处理

我们的"AnnotationAction"保存在"webapps\struts2tutorial\WEB-INF\src\java\net\roseindia"目录,这就是AnnotationAction.java的代码
Action类:这里我们会编写代码来验证login页面

AnnotationAction.java

Java代码  

  1. package net.roseindia;  
  2.     
  3. import com.opensymphony.xwork2.ActionSupport;  
  4. import com.opensymphony.xwork2.validator.annotations.*;  
  5.    
  6.   
  7.  @Validation  
  8.     
  9. public class AnnotationAction extends ActionSupport {  
  10.   
  11.         
  12. private String username = null;  
  13.       
  14. private String password = null;  
  15.   
  16.       
  17. @RequiredStringValidator(message="Supply name")  
  18.     
  19. public String getUsername() {  
  20.   
  21.        return username;  
  22.     }  
  23.   
  24.      
  25.       
  26. public void setUsername(String value) {  
  27.   
  28.           username = value;  
  29.     }  
  30.     
  31.     
  32. @RequiredStringValidator(message="Supply password")  
  33.   
  34.     
  35. public String getPassword() {  
  36.           
  37. return password;  
  38.     }  
  39.   
  40.       
  41.       
  42. public void setPassword(String value) {  
  43.           
  44. password = value;  
  45.     }  
  46.   
  47.       
  48.       
  49.      
  50. public String execute() throws Exception {  
  51.           
  52. System.out.println("Validating login");  
  53.     if(!getUsername().equals("Admin") || !getPassword().equals("Admin")){  
  54.             addActionError("Invalid user name or password! Please try again!");  
  55.              
  56.  return ERROR;  
  57.       
  58. }  
  59. else{  
  60.        
  61.  return SUCCESS;  
  62.     }  
  63.     
  64.     }  
  65. }   

1.配置Action映射(在struts.xmlz中)

现在我们会在struts.xml文件中创建Action映射,这是要添加到struts.xml文件中的代码 :

Xml代码  
  1.   
  2. /pages/log-in.jsp  
  3.   
  4.   
  5.   
  6. /pages/log-in.jsp  
  7. /pages/log-in.jsp  
  8. /pages/loginsuccess.jsp  
  9.   

2.在上面的映射中, "LoginAnnotation"用来显示登录页面, "AnnotationAction"用Action类(AnnotationAction.java)检验了用户输入信息.

3. CSS文件(main.css)

Css文件用来增强login表单的显示效果, main.css存放在"\webapps\struts2tutorial\css"

这是main.css的代码 :

Js代码  

  1. @CHARSET "UTF-8";  
  2.   
  3. body {  
  4. font: 12px verdana, arial, helvetica, sans-serif;  
  5. background-color:#FFFFFF;  
  6. }   
  7.   
  8. table.wwFormTable {  
  9. font: 12px verdana, arial, helvetica, sans-serif;  
  10. border-width: 1px;  
  11. border-color: #030;  
  12. border-style: solid;  
  13. color: #242;  
  14. background-color: #ada;  
  15. width: 30%;  
  16. margin-left:35%;  
  17. margin-right:35%;  
  18. margin-top:15%;  
  19. }   
  20.   
  21. table.wwFormTable th {  
  22. }  
  23.   
  24. table.wwFormTable tr td {  
  25. background-color: #dfd;  
  26. margin: 5px;  
  27. padding: 5px;  
  28. }  
  29.   
  30. .tdLabel {  
  31. /* 
  32. border-width: 1px; 
  33. border-color: #afa; 
  34. border-style: solid; 
  35. */  
  36. font-weight: bold;  
  37. align: top;  
  38. }   
  39.   
  40. .label {  
  41. }   
  42.   
  43. .errorMessage {  
  44. color: red;  
  45. font-size: 0.8em;  
  46. }   
  47.   
  48. #headerDiv {  
  49. border-style: solid;  
  50. border-width: 1px 1px 0px;  
  51. border-color: black;  
  52. padding: 5px;  
  53. background-color: #7a7;  
  54. /* height: 22px; */  
  55. height: 1.8em;  
  56. /* margin-bottom: 12px; */  
  57. }  
  58.  
  59. #buttonBar {  
  60. border-width: 0px 1px 1px;  
  61. border-style: solid;  
  62. border-color: black;  
  63. color: white;  
  64. margin-bottom: 12px;  
  65. background-color: #7a7;  
  66. height: 1.6em;  
  67. padding: 5px;  
  68. }  
  69.   
  70. #appName {  
  71. color: white;  
  72. font-size: 1.8em;  
  73. }  
  74.  
  75. #pageTitle {  
  76. font-size: 1.4em;  
  77. color: #dfd;  
  78. clear: none;  
  79. }  
  80.   
  81. #appName, #pageTitle {  
  82. float: right;  
  83. }  
  84.  
  85. #menuContainer {  
  86. float: left;  
  87. }  
  88.  
  89. #brandingContainer {  
  90. float: right:  
  91. text-align: right;  
  92. }  

编译程序

我们进入"\webapps\struts2tutorial\WEB-INF\src"目录并键入ant命令来编译我们的项目,ant工具会为你编译项目的.

在index.html中添加链接

最后我们在index.html中添加链接来访问login表单.

输出 :

如果你在字段中不输入任何值就点击了Login按钮,你将会得到如下的输出页面 :

如果你只填写"Login name"不填写下面的字段就点击了Login按钮,你会得到如下输出页面 :

如果你填写了错误信息并点击Login按钮,你会得到如下输出 :

如果你输入正确信息并点击Login按钮,你会得到如下输出: