Struts笔记3
struts标签
form表单标签
Action:请求地址。直接写动作名称,不用写contextPath
<s:form action="/user/register.action">
method:请求方式,默认是post请求,可以不用写
enctype:静音编码的MIME类型
Struts2-表单验证-服务端Action验证
struts自带表单字段验证
第一种:重写validate方法,如果数据不对,可以往FieldError添加错误信息
public void validate() {
//判断用户名是否为null
if(StringUtils.isEmpty(user.getUsername())) {
addFieldError("username","用户名不能为null");
}
}
//一旦FiledError有数据就不会执行register方法
public String register(){
System.out.println("register....");
System.out.println(user);
return NONE;
}
注意:表单一定要与struts标签结合使用表单验证才会有效:
在进行表单提交的时候会优先调用validate方法,如果FieldError有错误信息就不会执行其他方法。对于action来说validate方法是全局的
package com.gyf.web.action;
import com.gyf.service.IUserService;
import com.gyf.service.impl.UserServiceImpl;
import org.apache.commons.lang3.StringUtils;
import com.gyf.model.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
@Override
public User getModel() {
return user;
}
public String register(){
System.out.println("register....");
System.out.println(user);
return NONE;
}
public String list() {
return "list";
}
@Override
public void validate() {
System.out.println(user.getUsername());//直接通过action访问list时打印为null
//判断用户名是否为null
if(StringUtils.isEmpty(user.getUsername())) {
addFieldError("username","用户名不能为null");
}
}
}
现在通过action来访问jsp页面出错,因为FieldError有数据,所以不执行list方法
现在使用注解的方式,使用list方法时来跳过执行validate方法
@SkipValidation
public String list() {
return "list";
}
跳过了validate方法的执行,可以正常访问list,证明了validate方法时具有全局性的
struts2-表单验证-xml声明式验证
全局声明方式
1.在action包中声明UserAction-validation.xml文件格式类名-U-validation.xml
2.这种方式配置是全局配置,所有action的方法都会拦截验证
3.如果其他方法不想验证,可配置@SkipValidation注解
4.dtd约束可以在xwork-core的jar包中找
局部声明方式
在action包中声明UserAction-register-validation.xml文件,声明格式Action 类名-方法名-validation.xml
Struts2的国际化
软件的国际化:要使他能同时应对世界不同地区和国家的访问。并针对不同地区和国家的访问,提供相应的,符合来访者阅读习惯的页面或数据
创建一个消息资源包
一个资源包由多个文件组成,这些文件名都有命名规范:主要文件名_语言代码_国家代码.properties
语言代码和国家代码:有iso规定的
当文件只有主要文件名.properties时,表明他是默认资源包。浏览器会根据不同的语言环境找对应语言环境的资源包
当没有时,找默认的
每个资源包的内容都由相同的key和对应语言环境value组成
读取国际化资源文件
package com.gyf.test;
import java.util.Locale;
import java.util.ResourceBundle;
import org.junit.Test;
public class I18NTest {
@Test
public void test1() {
//默认读取的是中文
//ResourceBundle rb = ResourceBundle.getBundle("resources.message");//包名加文件名
//指定读取某个国家
ResourceBundle rb = ResourceBundle.getBundle("resources.message",Locale.US);
System.out.println(rb.getString("login.username"));
System.out.println(rb.getString("login.password"));
System.out.println(rb.getString("login.submit"));
}
}
Struts的国际化
配置资源包
读取资源包
Struts笔记3的更多相关文章
- struts笔记
Struts视频笔记: Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由 为什么会有struts: 因为我们队mvc理解的不同,可能造成不同公司写程序的时候,规范不统 ...
- Struts 笔记 内部资料 请勿转载 谢谢合作
Struts 概述 随着MVC 模式的广泛使用,催生了MVC 框架的产生.在所有的MVC 框架中,出现最早,应用最广的就是Struts 框架. Struts 的起源 Struts 是Apache 软件 ...
- Struts笔记5
文件下载 1.写action类 package com.gyf.web.action; import java.io.File; import java.io.FileInputStream; imp ...
- Struts笔记4
Struts2-拦截器-单个拦截器 自定义拦截器 1.创建一个继承AbstractInterceptor的类 package com.gyf.web.interceptor; import com.o ...
- Struts笔记2
Struts2-配置文件result元素 作用:为动作指定结果视图 name属性:逻辑视图的名称,对应着动作方法的返回值.默认值是success type属性:结果类型,指的就是用什么方式转到定义的页 ...
- struts笔记1
框架:所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面 SHH:strust spring hibernate; SSM:springmvc sp ...
- Struts笔记二:栈值的内存区域及标签和拦截器
值栈和ognl表达式 1.只要是一个MVC框架,必须解决数据的存和取的问题 2.struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构 1. ValueStack是一个接口,在struts ...
- Struts笔记一
Struts 概念: 是一个MVC框架: Servlet的缺点 1.在web.xml中文件中需要配置很多行代码,维护起来很不方便呢,不利于团队合作. 2.一个servlet的入口只有一个doPost或 ...
- Struts中的OGNL和EL表达式笔记
Struts中的OGNL和EL表达式笔记 OGNL(Object-Graph Navigation Language),可以方便的操作对象属性的表达式语言. 1.#符号的用途 一般有三种方式: 1.1 ...
随机推荐
- 浅析HTTP/2的多路复用
HTTP/2有三大特性:头部压缩.Server Push.多路复用.前两个特性意思比较明确,也好理解,唯有多路复用不太好理解,尤其是和HTTP1.1进行对比的时候,这个问题我想了很长时间,也对比了很长 ...
- 范仁义html+css课程---2、html常用标签
范仁义html+css课程---2.html常用标签 一.总结 一句话总结: html常用的标签有 标题标签.div.span.p.hr.br标签 等 1.html中的标题标签有哪些? <h1& ...
- sass登陆页面实例
sass登陆页面实例 一.总结 一句话总结: sass使用非常方便:使用就是将sass转化为css引入,并且动态监听让sass转化为css,可以很方便的所见即所得 1.sass安装? npm就可以按照 ...
- 优化Unity游戏项目的脚本(下)
金秋9月,我们祝所有的老师们:教师节快乐 ! 今天,我们继续分享来自捷克的开发工程师Ondřej Kofroň,分享C#脚本的一系列优化方法. 在优化Unity游戏项目的脚本(上)中,我们介绍了如何查 ...
- 手写HashMap实践
1.什么是HashMap 2.源码分析 3.手写实现 4.不足 一.什么是HashMap hash散列 将一个任意长度通过某种算法(hash函数算法)换成一个固定值 map: 地图x,y 存储 总结: ...
- 回声消除(AEC)原理
一.前言 因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘.高端和难以理解的技术 ...
- 前端性能测试工具 : dynaTrace Ajax (还没写完)
今天开始写这个工具, #什么是dynaTrace Ajax? 随着 jQuery.Dojo.YUI 等框架的兴起让构建 Web2.0 应用更加容易,但随之带来的定位等应用问题也越来越难,尤其是与性能相 ...
- 000 装docker
直接参考别人的文章,经过验证,没有问题,需要网络. URL: https://www.cnblogs.com/qgc1995/archive/2018/08/29/9553572.html 我是虚拟机 ...
- OpenGL ES3使用MSAA(多重采样抗锯齿)的方法
昨晚花费了我2个多小时的时间终于把OpenGL ES3.0中的MSAA给搞定了.在OpenGL ES2.0中,Khronos官方没有引入标准的MSAA全屏抗锯齿的方法,而Apple则采用了自己的GL_ ...
- 先查询再插入,改为存储过程,java部分入参出参、mybatisxml【我】
先查询再插入,改为存储过程 create or replace procedure PRO_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_p ...