• 基于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>

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

  • 相关阅读:
    C++雾中风景1:友元类与面向对象
    NFS服务器的安装与配置
    未来工作相关
    python 函数
    pycharm、sublime个性化设置
    hadoop中HDFS的NameNode原理
    Cat搭建遇坑记
    美团点评CAT监控平台研究
    阿里sentinel源码研究深入
    阿里熔断限流Sentinel研究
  • 原文地址:https://www.cnblogs.com/tdcqma/p/4807369.html
Copyright © 2020-2023  润新知