1. 程式人生 > >Struts2的輸入校驗,手工實現輸入校驗

Struts2的輸入校驗,手工實現輸入校驗

   Struts2的輸入校驗

手工實現輸入校驗 (核心:重寫valiadate()方法校驗單個處理邏輯)

  1;jsp(登入)

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>Struts2攔截器的使用</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
  </head>
  <body>
        <h2>使用者登入</h2><hr/>
          <s:form action="login3.action" method="post">
            <s:textfield name="name" label="使用者名稱"></s:textfield>
          <s:password name="pass" label="密碼"></s:password>
            <s:submit value="提交"></s:submit>
      </s:form>
  </body>
</html>

  2:web.xml(配置Struts2的過濾器)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>StrutsTest1</display-name>
  <!-- 配置struts2的過濾器 -->  
     <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        <init-param>
           <param-name>struts.i18n.encoding</param-name>
           <param-value>UTF-8</param-value>
        </init-param>
    </filter>
  


    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LogincheckServlet</servlet-name>
    <servlet-class>com.test.action.LogincheckServlet</servlet-class>
  </servlet>


  <servlet-mapping>
    <servlet-name>LogincheckServlet</servlet-name>
    <url-pattern>/LogincheckServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>welcome.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 3;struts.xml(進行處理,提交給Action類)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <package name="struts2login" extends="struts-default">  
        <action name="login" class="com.test.action.LoginAction">  
            <result name="success" >/result.jsp</result>  
            <result name="error">/error.jsp</result>  
        </action>   
        <action name="login3" class="com.test.action.Login3Action">  
            <result name="success">/success.jsp</result>  
            <result name="input">/check2.jsp</result>  
        </action>    
        <action name="input" class="com.test.action.InputAction">  
            <result name="success" >/success.jsp</result>  
            <result name="error">/error.jsp</result>  
        </action> 
        <action name="message" class="com.test.action.InputAction">  
            <result name="success" >/message.jsp</result>  
            <result name="error">/error.jsp</result>  
        </action>
       </package>   
         <package name="demo1" extends="struts-default">
           <action name="addRegister" class="com.test.action.RegisterAction">
              <result name="success">/showRegInfo.jsp</result>
           </action>
            <action name="addRegister1" class="com.test.action.Register1Action">
              <result name="success">/showRegInfo1.jsp</result>
           </action>
           <action name="convert" class="com.test.action.ConvertAction">  
           <result name="success">/convertResult.jsp</result>  
    </action>  
         </package>
              <package name="hellointerceptor" extends="struts-default">
                  <interceptors>
                      <interceptor name="helloInterceptor" class="com.test.action.HelloInterceptor">
                      </interceptor>
                  </interceptors>
                <action name="helloaction" class="com.test.action.HelloAction">
                     <result name="success">/success1.jsp</result>
                     <result name="input1">/input1.jsp</result>
                      <interceptor-ref name="defaultStack"></interceptor-ref>
                      <interceptor-ref name="helloInterceptor"></interceptor-ref>
                </action>
             </package>
             <package name="check1interceptor" extends="struts-default">
                  <interceptors>
                     <interceptor name="logincheckinterceptor" class="com.test.action.CheckInterceptor">
                   </interceptor>
                  </interceptors>
                <action name="login2action" class="com.test.action.UserAction">
                   <result name="success">/loginsuccess.jsp</result>
                   <result name="error">/loginerror.jsp</result>
                   <result name="login">/login2.jsp</result>
                   <interceptor-ref name="defaultStack"></interceptor-ref>
                      <interceptor-ref name="logincheckinterceptor"></interceptor-ref>
                </action>
             </package>
</struts>


           4;Action類(核心控制器)重寫父類的validate()方法,進行校驗

package com.test.action;


import java.util.regex.Matcher;
import java.util.regex.Pattern;


import com.opensymphony.xwork2.ActionSupport;


public class Login3Action extends ActionSupport {


private static final long serialVersionUID = 1L;
    private String name;
    private String pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
    @Override
    public String execute() throws Exception
    {
    return super.execute();
    }
    @Override
    public void validate()
    {
    if(getName()==null||"".equals(getName().trim()))
    {
    this.addFieldError("name","使用者名稱不能為空!");
    }
    else
    {
    Pattern p=Pattern.compile("\\w{6,20}");
Matcher m=p.matcher(getName().trim());
if(!m.matches())
{
this.addActionError("使用者名稱由數字,字母,下劃線組成,長度在6-20之間!<br/>");
}
    }
    if(getPass()==null||"".equals(getPass().trim()))
{
    this.addActionError("密碼不能為空!");
}
else
{
int len=getPass().trim().length();
if(len<6||len>30)
{
this.addActionError("密碼長度應該在6-30之間!<br/>");
}
}
      }
    }

   5:jsp(驗證成功後返回的頁面)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'result.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->


  </head>
  
  <body>
    <h2>登陸成功!</h2>
  </body>
</html>

相關推薦

Struts2入校手工實現入校

   Struts2的輸入校驗 手工實現輸入校驗 (核心:重寫valiadate()方法校驗單個處理邏輯)   1;jsp(登入) <%@ page contentType="text/html;charset=UTF-8" language="java" impor

jQuery Validate 實現儲存時不校提交時才校表單

                //儲存按鈕事件 function saveAction() {var form = $("#inputForm").find('.required');$.each(form, function(idx, item) {$(this).addClass('ignore');}

Struts2入校-採用手工編寫程式碼實現

在struts2中,我們可以實現對action的所有方法校驗或者對action的制定方法進行校驗。 對於輸入校驗struts2提供了兩種實現方法: 採用手工編寫程式碼實現 基於XML配置方式實現

Struts2:對Action中方法進行入校

原始碼下載地址:http://download.csdn.net/detail/zhoujing_0424/9239429 在struts2中,我們可以實現對action的所有方法進行校驗或對action的指定方法進行校驗。對於輸入校驗,struts2提供了兩

資料結構 c語言實現順序佇列(數字入隊字元出隊)

一.標頭檔案seqqueue.h實現 #ifndef __SEQQUEUE_H__ #define __SEQQUEUE_H__ #include<stdio.h> #include<stdlib.h> #include<stdbool.h&g

登陸界面實現錯3次鎖定

object int list sta 密碼 實現 [0 inpu -- file_object = open(‘userdata.txt‘)userdatadic = { }log=0erroruesr={}def login(): for line in file

LINUX系統服務器上搭建DHCP服務實現兩大基本功能:1自動分配ip;2手工指定ip

完成 重啟 釋放 p地址 進行 基本功 blog process 自動 在linux系統服務器上搭建DHCP服務,實現兩大基本功能:1,自動分配ip地址;2,手動指定ip地址。首先準備兩臺虛擬機作為實驗對象,一個linux系統作為服務器,一個windows7系統作為客戶機,

zcmu——1128: 第四章:誰先愛了誰就了(細節題)

題目連結: 引號裡面可能包含“//” #include<iostream> #include<algorithm> #include<vector> #include<cmath> #include<cstring> #includ

超好用的名片識別告別手名片

說到APP,相信每個人手機裡都裝了一大堆,喜歡用的,偶爾用的,不怎麼用的,反正想裝的時候圖個新鮮勁,過了這一陣又換下一波。抖音、王者榮耀、絕地求生、網易雲音樂……等等,在控制不住自己的手甚至要剁掉的時候,還有什麼APP能讓你如此沉迷? 多巴胺,是一種能夠傳遞興奮和開心的神經傳導物質

zcmu-1128: 第四章:誰先愛了誰就了(細節題)

  1128: 第四章:誰先愛了,誰就輸了 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 413  Solved: 86 [Submit

AG視訊要如何調整才能贏想贏錢卻錢了

AG視訊技巧打法,網展【8d9a】。c0m可是最近我發現了!平穩的那幾天都是別人在放水,回想起來!平穩的那幾天,基本每期都買,但是勝率還是挺高的!我還真不相信那幾天是運氣好!輸錢的時候都是運氣不好!自己想想!輸錢的時候是什麼時候!這是我個人的輸錢時候!給大家分享一下!為什麼輸錢的時候連掛那麼多!一是玩了天了,

實現一個函式來來對目標字串進行校使其滿足以下全部條件

實現一個函式來來對目標字串進行校驗,使其滿足以下全部條件 不少於6個字元 包含至少一個小寫字母 包含至少一個大寫字母 包含至少一個數字 只能包含大小寫和數字 示例: func(“12ABcd”) -->True func(“12ABc”) --&

模擬RSA雙向驗證並且實現DES加密以及MD5校過程(python程式碼實現

要求如下:            (1)A,B兩端各生成公鑰金鑰對(PA,SA), 金鑰對(PB,SB)。            (2)A端生成隨機數N1,用B的公鑰PB加

嗨!產品經理不想就在專案實施前做好充足的準備!

恩,我不敢稱自己是產品人,我只能稱自己是產品,不敢說人,因為沒有真正理解作為產品人的概念。沒有真正體會產品人的偉大構思。 今天,公司給了個新的專案,在帶領產品經理在做專案詳解的時候,突然發現,沒有充足的準備就註定打不了勝仗。 果不其然,在給BOSS宣講的時候: 由於宣講

Struts2框架中為什麼要繼承ActionSupport類以及實現過程

   struts可以繼承ActionSupport類,也可以不繼承,繼承的好處簡單來說就是更方便實現驗證,國際化等功能,與struts2的功能結合緊密,方便我們開發。 ActionSupport類的作用:      此類實現了很多實用的介面,提供了很多預設的方法,這些預

美團面試我竟然給了氣泡排序……

前一陣子有個讀者聊了一件很有趣的事情:他準備去美團實習,面試的時候卻敗在了氣泡排序上。   情況是這樣子的,當時和麵試官聊的感覺還可以,就在他覺得好像要結束的時候,面試官給他扔了個題:“我這剛好有紙和筆,你來寫個氣泡排序吧。”   這位讀者心裡一慌,為什麼慌?倒並

安裝CloudStack資料庫時明明密碼對了卻提示錯誤的情況

[[email protected] ~]# cloudstack-setup-databases cloud:[email protected] --deploy-as=root:qwe!123-bash: !123: event not found

美團 CEO 王興:從 0 到幹到 300 億美金格局上再多努力都不可能贏

2017 年 10 月 19 日,美團點評完成新一輪 40 億美元融資,投後估值 300 億美元。 此次融資由騰訊領投,引入了新的戰略投資方 The Priceline Group,其他主要投資人包括:紅杉資本(Sequoia Capital)、新加坡政府

筆記單機和分散式應用下的登入校session共享分散式快取應用

1、單機tomcat應用登入校驗 session儲存在瀏覽器和應用伺服器會話之間 使用者登入成功,服務端會保證一個session,當然會給客戶端一個sessionId。 客戶端會把sessionid儲存在cookie中,每次請求都會攜帶這個sessionId。 2、分散式應用中s

Struts2實現註冊校

一、場景使用者名稱不能為空,長度為6-14位(第一位為大寫字母,後面每一位為字母、數字、下劃線)    ,使用者名稱不能為admin、密碼不能為空,密碼長度為8-10位;密碼和確認密碼一致二、實現Userpublic class User { private Str