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