日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证

發(fā)布時間:2025/7/14 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、自定義類型轉換器1、編寫一個類,繼承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter2、覆蓋掉其中的public Object convertValue(Map<String, Object> context, Object value,Class toType)context:OGNL表達式的上下文value:實際的值。用戶輸入的都是字符串,但他是一個String數(shù)組。toType:目標類型public class DateConvertor extends DefaultTypeConverter {/*context:ognl表達式的上下文value:用戶輸入的值( 保存數(shù)據(jù)時)或者模型中的屬性。用戶輸入的值是String數(shù)組toType:目標類型*/@Overridepublic Object convertValue(Map<String, Object> context, Object value,Class toType) {DateFormat df = new SimpleDateFormat("yyyy/MM/dd");if(toType==Date.class){//2013/05/31----->java.util.Date 保存數(shù)據(jù)時String strValue = ((String[])value)[0];try {return df.parse(strValue);} catch (ParseException e) {throw new RuntimeException(e);}}else{//java.util.Date----->2013/05/31 獲取數(shù)據(jù)時Date dValue = (Date)value;return df.format(dValue);}}}3、注冊類型轉換器3.1局部類型轉換器:只對當前的Action有效具體做法:在動作類相同的包中,建立一個名稱是“動作類名-conversion.properties”的配置文件,文件中增加以下內容:要驗證的字段=驗證器的類全名birthday=cn.itcast.convertor.DateConvertor3.2全局類型轉換器:對所有的Action都有效具體做法:在WEB-INF/classes目錄下,建立一個名稱為"xwork-conversion.properties"的配置文件,文件中增加以下內容:目標類型全名=驗證器的類全名java.util.Date=cn.itcast.convertor.DateConvertor注意:如果轉換失敗,Struts2框架會尋找name=input的結果頁面二、自定義攔截器1、編寫一個類,實現(xiàn)com.opensymphony.xwork2.interceptor.Interceptor2、主要實現(xiàn)public String intercept(ActionInvocation invocation) throws Exception{}方法該方法的返回值就相當于動作的返回值如果調用了String result = invocation.invoke();得到了動作類的返回的值。public String intercept(ActionInvocation invocation) throws Exception {//判斷用戶是否登錄HttpSession session = ServletActionContext.getRequest().getSession();Object obj = session.getAttribute("user");if(obj==null){return "login";}else{return invocation.invoke();//調用動作方法}}3、攔截器定義好后,一定要在配置文件中進行注冊:<interceptors> 只是定義攔截器,并沒有起作用?<interceptor name="permissionInterceptor" class="cn.itcast.interceptor.PermissionInterceptor"> ? ? ? ?</interceptor></interceptors>4、配置文件中的動作,要通過<interceptor-ref name="permissionInterceptor"></interceptor-ref>使用該攔截器注意:一旦動作中使用了自定義的攔截器,那么默認的就不起作用了。一般應該采用如下的做法:<interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="permissionInterceptor"></interceptor-ref>多個動作類都要使用的話,可以通過package來進行組合。三、用戶輸入數(shù)據(jù)的驗證1、手工編程驗證,針對該動作類中的所有的動作方法步驟:a、動作類繼承ActionSupportb、覆蓋調用public void validate()方法c、在validate方法中,編寫不符合要求的代碼判斷,并調用父類的addFieldError(String fieldName,String errorMessage)如果fieldError(存放錯誤信息的Map)有任何的元素,就是驗證不通過,動作方法不會執(zhí)行。Struts2框架會返回到name=input的resultd、在name=input指定的頁面上使用struts2的標簽顯示錯誤信息。<s:fielderror/>實例演示代碼:public class UserAction extends ActionSupport implements Serializable { private String username;//用戶名不能為空,還要去掉首尾空格 private String password;//3~6位的數(shù)字 public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String add(){ System.out.println("執(zhí)行了user的add方法"); return SUCCESS; } public String update(){ System.out.println("執(zhí)行了user的update方法"); return SUCCESS; } @Override public void validate() {//驗證方法。只考慮不符合條件的 if(username==null||"".equals(username.trim())){ addFieldError("username", "用戶名不能為空"); } if(password==null||!password.matches("\\d{3,6}")){ addFieldError("password", "密碼不能為空且必須是3~6位的數(shù)字"); } } }

轉載于:https://www.cnblogs.com/toge/p/6114721.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品国产亚洲7777 | aa一级黄色片 | 黑人无套内谢中国美女 | 国产精品久久毛片av大全日韩 | 女同久久另类69精品国产 | 狠狠躁夜夜 | 人人妻人人澡人人爽人人精品 | 天天色天天色天天色 | a视频在线观看 | 日韩视频在线观看一区二区三区 | av性在线 | 日日燥夜夜燥 | 久久精品三级视频 | 免费不卡av | 亚洲女成人图区 | 永久av | 欧美a√在线 | 在线播放av网站 | av黄色国产| 成人免费网站在线观看 | 男女做爰猛烈高潮描写 | 欧美一区二区三区爱爱 | 国产αv| youjizz亚洲女人 | 国产小视频一区 | 很黄很污的视频网站 | 激情久 | 亚洲经典自拍 | 亚洲AV无码成人精品一区 | 九九热精品在线视频 | 日本免费高清一区二区 | 一区二区三区美女视频 | 亚洲av无码国产精品久久 | 亚洲网站在线看 | 久久久久久久爱 | 久久久久久久人妻无码中文字幕爆 | 动漫美女被吸乳奶动漫视频 | 欧美高清视频一区二区 | 女婴高潮h啪啪 | 日本一区二区观看 | 国产精品成人3p一区二区三区 | 你懂的在线免费观看 | 成人在线国产 | 羞视频在线观看 | 91入囗| 校霸被c到爽夹震蛋上课高潮 | 欧美肉大捧一进一出免费视频 | 久久精品首页 | 91麻豆网| 亚洲国产精一区二区三区性色 | 白俄罗斯毛片 | 久久久久久久久久久久久久久久久久久 | 九九热在线免费观看 | 无码国模国产在线观看 | 永久免费看片在线观看 | 日本精品在线 | 欧美性猛交xxxx乱大交退制版 | 国产66页| 操碰人人| 韩日av在线播放 | 欧美日本一道 | 国产成人综合一区二区三区 | 韩国禁欲系高级感电影 | 91n在线观看 | 精品视频一二 | www.av88| 亚洲av无码专区在线播放中文 | 黑人巨大精品欧美一区二区 | 亚洲视频日韩 | 国产美女精品一区二区三区 | 亚洲精品20p | 人人澡人人透人人爽 | 国产免费一区二区三区网站免费 | 亚洲理论片 | 久久人妻精品白浆国产 | 国产精品色综合 | 九九九视频在线观看 | 国产精品普通话 | 嫩草av在线 | 啪视频在线观看 | 午夜国产一级 | 欧美日韩成人精品 | 久久久久久一区二区 | 成人短视频在线播放 | 操人视频免费 | 色香蕉网| 91精品国产综合久 | 在线播放免费av | 日韩精品一区中文字幕 | 国产深夜福利 | 日韩无码精品一区二区 | 农村妇女毛片精品久久久 | 91直接看| 91精品视频免费在线观看 | 黄色a级片在线观看 | 亚洲涩涩爱| 亚洲4438 | 日本国产一级片 | 99热久|