基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验

一,使用Struts2标签库简化表单

在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp

 1 <%@ page language="java" pageEncoding="utf-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags" %>
 3 
 4 <html>
 5     
 6     <body>
 7         <center>
 8         <h3>用户登录</h3>
 9             <%-- 登录表单,提交到login.action --%>
10             <s:form action="userlogin">
11                 <%--用户名输入框--%>
12                 <s:textfield name="username" label="用户名"></s:textfield>
13                 <%--用户密码输入框--%>
14                 <s:password name="userpwd" label="密码"></s:password>
15                 <%--登录按钮--%>
16                 <s:submit value="登录"></s:submit>
17                 <%--重置按钮--%>
18                 <s:reset value="重置"></s:reset>
19             </s:form>
20         </center>
21     </body>
22 </html>

浏览器效果:

 

二,继承ActionSupport完成输入校验

ActionSupport类已经实现了Action接口和Validatable等接口,可以通过继承ActionSupport类简化Action开发。

Validatable接口中仅仅定义了一个validata()方法,通过重写该方法,可以非常方便地实现交验功能。如在该方法中

添加对用户输入的参数信息进行判断,如果用户名为空,密码为空等。如果要输出错误提示信息,则只需要调用ActionSupport类中

的addFieldErrors方法来添加相应的错误提示信息。

 1 package com.mhb.action;
 2 
 3 import com.mhb.model.LoginCheck;
 4 import com.opensymphony.xwork2.ActionSupport;
 5 
 6 //控制类Action
 7 
 8 public class LoginAction2 extends ActionSupport {
 9     
10     private String username;
11     private String userpwd;
12     
13     public String getUsername() {
14         return username;
15     }
16     public void setUsername(String username) {
17         this.username = username;
18     }
19     public String getUserpwd() {
20         return userpwd;
21     }
22     public void setUserpwd(String userpwd) {
23         this.userpwd = userpwd;
24     }
25     
26     public String execute(){
27         //new 一个LoginCheck对象
28         LoginCheck lc = new LoginCheck();
29         //调用业务逻辑组件的判断功能来判断
30         if(lc.UserLoginCheck(username, userpwd)){
31             return "success";
32         }else{
33             return "failure";
34         }
35     }
36     
37     //执行输入校验
38     public void validate(){
39         //如果 用户名为空,或为null那么提示错误信息。
40         if(this.getUsername() == null || this.getUsername().equals("")){
41             this.addFieldError("username", "用户名不能为空!");
42         }
43         
44         if(this.getUserpwd() == null || this.getUserpwd().equals("")){
45             this.addFieldError("userpwd", "用户密码不能为空");
46         }
47     }
48 }

如果交验失败,需要将页面跳转到input所对应的视图资源页面中,所以必须在struts.xml中配置input逻辑视图

对应的视图资源为login2.jsp,表示校验失败后将跳转回登录页面,其中struts.xml文件中配置代码如下。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <package name="mypack" extends="struts-default">
 7         <action name="first">
 8             <result>first.jsp</result>
 9         </action>
10     </package>
11 
12     <!-- Action必须放在指定的包空间中 -->
13     <package name="struts2" extends="struts-default">
14         <!-- 定义login的action,其实现类为com.mhb.action.LoginAction -->
15         <action name="userlogin" class="com.mhb.action.LoginAction2">
16             <!-- 定义处理结果与视图资源之间的关系 -->
17             <result name="success">/login_success.jsp</result>
18             <result name="failure">/login_failure.jsp</result>
19             <result name="input">/login2.jsp</result>
20         </action>
21     </package>
22 </struts>

浏览器效果:不输入用户名和密码直接提交

posted @ 2015-09-14 15:48  北海悟空  阅读(490)  评论(0编辑  收藏  举报