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的更多相关文章

  1. struts笔记

    Struts视频笔记: Struts是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由 为什么会有struts: 因为我们队mvc理解的不同,可能造成不同公司写程序的时候,规范不统 ...

  2. Struts 笔记 内部资料 请勿转载 谢谢合作

    Struts 概述 随着MVC 模式的广泛使用,催生了MVC 框架的产生.在所有的MVC 框架中,出现最早,应用最广的就是Struts 框架. Struts 的起源 Struts 是Apache 软件 ...

  3. Struts笔记5

    文件下载 1.写action类 package com.gyf.web.action; import java.io.File; import java.io.FileInputStream; imp ...

  4. Struts笔记4

    Struts2-拦截器-单个拦截器 自定义拦截器 1.创建一个继承AbstractInterceptor的类 package com.gyf.web.interceptor; import com.o ...

  5. Struts笔记2

    Struts2-配置文件result元素 作用:为动作指定结果视图 name属性:逻辑视图的名称,对应着动作方法的返回值.默认值是success type属性:结果类型,指的就是用什么方式转到定义的页 ...

  6. struts笔记1

    框架:所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面 SHH:strust spring hibernate; SSM:springmvc sp ...

  7. Struts笔记二:栈值的内存区域及标签和拦截器

    值栈和ognl表达式 1.只要是一个MVC框架,必须解决数据的存和取的问题 2.struts2利用值栈来存数据,所以值栈是一个存储数据的内存结构 1.  ValueStack是一个接口,在struts ...

  8. Struts笔记一

    Struts 概念: 是一个MVC框架: Servlet的缺点 1.在web.xml中文件中需要配置很多行代码,维护起来很不方便呢,不利于团队合作. 2.一个servlet的入口只有一个doPost或 ...

  9. Struts中的OGNL和EL表达式笔记

    Struts中的OGNL和EL表达式笔记 OGNL(Object-Graph Navigation Language),可以方便的操作对象属性的表达式语言. 1.#符号的用途 一般有三种方式: 1.1 ...

随机推荐

  1. C#题(子文章)(持续更新)

    -----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...

  2. select下拉框多选取值

    本来是单选取值,现改为多选 其中<select> 标签新增multiple属性,如<select id = "sel"  multiple = "mul ...

  3. DM中将有缝隙的面体缝合为实体

    原版视频下载地址链接: https://pan.baidu.com/s/1mi0NOeO 密码: nw7g

  4. web 安全登录算法

    摘自:http://hi.baidu.com/weiqi228/blog/item/922e961bbcc2c0188618bfb5.html 对于 Web 应用程序,安全登录是很重要的.但是目前大多 ...

  5. 【caffe Layer】代码中文注释

    src/caffe/proto/caffe.proto 中LayerParameter部分 // NOTE // Update the next available ID when you add a ...

  6. Java-Maven(九):Maven 项目pom文件引入工程根目录下lib文件夹下的jar包

    由于项目一些特殊需求,pom依赖的包可能是非Maven Repository下的包文件,因此无法自己从网上下载.此时,我们团队git上对该jar使用. Maven项目pom引入lib下jar包 在ec ...

  7. WebSocket——SuperWebSocket实现服务端和客户端

    WebSocket——SuperWebSocket实现服务端和客户端具体实现如下: 注:本作者是基于vs2019 enterprise版本,所有项目均为.Net Framwork4.7版本(因为Web ...

  8. windows下更改Apache以fastcgi方式运行php

    Apache 默认 apache2handler 方式运行处理php. 下面说切换方法: 1.下载fastcgi模块,打开https://www.apachelounge.com/download/选 ...

  9. SonarQube入门【转】

    一.SonarQube简介Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar可以集成不同的测试工具,代码分析工具, 以及持续集成工具. 比如pmd-cpd.checkstyle.f ...

  10. 使用 CircleCI 2.0 进行持续集成/持续部署

    使用 CircleCI 2.0 进行持续集成/持续部署 - 简书https://www.jianshu.com/p/36af6af74dfc Signup - CircleCIhttps://circ ...