《Struts2.0-2.ppt》由会员分享,可在线阅读,更多相关《Struts2.0-2.ppt(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Java Web 应用开发应用开发项目1 Struts2 国际化和校验国际化和校验v相关知识Struts2业务类Action的实现简单POJO实现一个接口继承一个类Struts2国际化Struts2的校验使用validate方法使用框架v学习重点业务类的实现和框架校验v任务实施注册的Action注册的国际化注册的校验v作业使用Struts2完成注册,到数据库中2022/12/201Java Web 应用开发应用开发Struts2 工作原理工作原理Java Web 应用开发应用开发回顾回顾v添加jar包复制到在工程项目目录下的WebRoot下WEB-INF的lib的文件中v修改web.xmlFi
2、lter过滤v新建struts.xml文件在src文件夹下建议不要自己写v编写业务Action编写成员变量编写getter和setter方法编写exectue方法根据业务逻辑的值返回字符串v修改struts.xml/welcome.jsp/error.jspJava Web 应用开发应用开发课堂训练课堂训练v完成一个Struts2的应用定义一个用户类User成员变量用户名和密码成员方法构造方法getter和setterisManager方法定义一个LoginActionextendsActionSupport成员变量用户对象成员方法getter和setter,execute方法配置struts
3、.xml配置web.xmlJava Web 应用开发应用开发环境搭建中出现的问题环境搭建中出现的问题vstruts.xml出现错误dtd校验错误解决方法!-/第一种方式-!-第二种方式-Java Web 应用开发应用开发Struts2 控制器控制器v核心控制器FilterDispatcher在web.xml中配置v业务控制器Action自己定义普通的POJO实现一个接口继承一个类配置和使用Java Web 应用开发应用开发普通普通Java 类类vAction类可以是一个普通Java类(POJO),实现与Servlet的完全分离,一般包含:成员变量及相应的set和get方法publicStrin
4、gexecute().方法其他方法v特点:代码具有良好的复用性与Servlet无耦合返回字符串没有规范,配置和管理麻烦Java Web 应用开发应用开发改进控制器改进控制器-实现实现Action接口接口v改进控制器实现Action可以直接返回5个常量,使配置管理更加规范Action接口可以得到会话跟踪对象HashMapm=ActionContext.getContext().getSession();Java Web 应用开发应用开发优化优化Action-继承继承ActionSupportv改进控制器可以直接继承ActionSupport类,可使开发工作量简化该类实现了Action接口,还实现
5、了数据校验Validateable接口等,提供了数据校验的功能publicvoidvalidate()if(条件)addFieldError(password1,密码不能为空!);文本框名字提示信息Java Web 应用开发应用开发课堂训练课堂训练v定义和使用注册的Action注册业务Action,分别用RegAction1,是POJORegAction2,实现接口RegAction3,继承类(要使得验证成功,必须有input)配置struts.xml配置上面3个Action表单调用分别放在reg1,reg2,reg3三个文件夹中Java Web 应用开发应用开发数据校验数据校验v重写Acti
6、onSupport中的validate()方法如果发现输入的数据不符合条件,将执行addFieldError()方法,将错误信息写入Action类的FieldErrors中,Struts框架将自动返回到INPUT视图中。addFieldError(“表单名字”,“提示信息”)业务方法必须返回“input”v使用框架校验常用Java Web 应用开发应用开发输入验证输入验证validate()vStruts2在调用execute()之前首先会调用validate(),如果在validate方法中验证时,发现数据不符合条件,可使用addFieldError()、addActionError()、a
7、ddActionMessage()加入相应的错误信息。v如果存在Action或Field错误,Struts2会自动返回“input”,不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。v检验信息显示方法:addFieldError(fieldName,errorMessage)/需要一个key,用来表示是哪一个属性出的错误addActionMessage(aMessage)addActionError(anErrorMessage)v特点:在action中需要编写大量的验证代码,不利于维护Java Web 应用开发应用开发示例示例public v
8、oid validate()if(username=null|username.trim().equals()this.addFieldError(username,用户名不能为空用户名不能为空);if(birthday=null|birthday.after(new Date()this.addFieldError(birthday,生日日期不正确生日日期不正确);if(this.getPassword()=null|this.getPassword().trim().equals()this.addFieldError(password,密码不能为空密码不能为空);if(!this.get
9、Password2().equals(this.getPassword()this.addFieldError(password2,两次密码不一致两次密码不一致);Java Web 应用开发应用开发基于框架的输入校验基于框架的输入校验v基于框架的输入校验,将校验规则保存在特定的框架文件中,将输入校验与Action分离,提高系统的可维护性。vAction中无需重写validate方法,只做业务控制,通过XML文件配置实现校验。服务器端校验客户端校验Java Web 应用开发应用开发数据校验数据校验-框架校验框架校验v使用框架校验-常用需要为该Action单独建框架校验配置文件,命名规则是:Act
10、ion类名-validation.xml,如:UserReg-validation.xml。保存到UserReg类的相同目录下。true 错误,用户名不能为空!校验的类型用type设置Java Web 应用开发应用开发框架校验配置文件详解框架校验配置文件详解v验证信息放在中,至少提供一个field(字段校验)或validate(非字段校验)vfield(字段校验)1个field表示对一个属性的一次校验,name必须提供,表示属性。中至少有一个或多个1个表示对字段校验的一种方式type类型必须提供type=类型名中有若干个(0N)子元素和一个子元素vvalidate(非字段校验)validate
11、的type必须提供,表示校验类型validate中的第一个param的name属性永远都是固定的fieldName,对应与要去校验的字段名Java Web 应用开发应用开发字段校验与非字段校验字段校验与非字段校验v字段校验与非字段校验只是表现形式不同,底层是相同的,都是把错误信息放到fielderror中字段校验:字段优先,去校验谁(字段),用谁(校验器)来校验非字段校验:校验器优先,用谁(校验器)来校验,去校验谁(字段)Java Web 应用开发应用开发服务器端验证服务器端验证v编写步骤:编写action(如RegAction.java),实现相应的业务控制配置Action类(struts.
12、xml)编写验证规则配置文件(RegAction-validation.xml)编写显示页面(*.jsp)Java Web 应用开发应用开发使用客户端输入验证使用客户端输入验证v服务器端校验已经将用户请求通过框架发送给action,地址栏显示的为*.actionv客户端校验与服务器端校验类似,只需要修改JSP显示视图,在中增加:Validate=“true”vStruts2的的theme一定不能设置为simplev校验后,地址栏不变,本质是struts2将定义的校验字段内容转换为JavaScript脚本,嵌入到JSP显示视图中。v特点:死板Java Web 应用开发应用开发校验小结校验小结v通
13、过重写validate()方法实现校验v使用框架校验主要是编写校验的xml文件命名:需要校验的Action名+-validation.xml位置:要和需要校验的Action放在同一目录下若只对action中的某个方法进行校验,则创建相应的校验配置文件为:“Action名+-方法名+-validation.xml”Java Web 应用开发应用开发实践:用户注册输入校验实践:用户注册输入校验v使用两种方法实现用户注册信息输入校验Action中重写validate()方法使用框架校验,编写校验的xml文档字段校验非字段校验Java Web 应用开发应用开发框架校验框架校验vstruts2提供了很多
14、校验类型required:必填校验器requiredstring:必填字符串校验器int:整数校验器double:双精度浮点数校验器date:日期校验器expression:表达式校验器fieldexpression:字段表达式校验器email:电子邮件校验器url:网址校验器visitor:Visitor校验器conversion:转换校验器stringlength:字符串长度校验器regex:正则表达式校验器Java Web 应用开发应用开发Struts2国际化国际化v信息页面信息提示信息v国际化建立一个中文资源文件,globalMessages_en_US.properties。用文本编
15、辑器输入。建立一个英文资源文件,globalMessages_zh_CN.properties。用文本编辑器输入。上述两个文件保存到src中处理可以用native2ascii.exe6.5版本之后可视化操作配置创建struts.properties,保存到src目录下,内容如下:Struts.custom.i18n.resources=globalMessages或者在struts.xml中加入常量配置:Struts2的国际化,资源文件的命名:basename_language_country.propertiesJava Web 应用开发应用开发Struts2国际化国际化vStruts2访问
16、国际化消息主要有如下三种方式JSP页面该情况条件是theme属性不能设置为simplevalidate方法中增加错误信息的国际化this.addFieldError(username,this.getText(username.invalid);this.addActionError(this.getText(username.invalid);xml验证框架中错误信息的国际化$getText(name.invalid)Action类中getText(username.invalid)Java Web 应用开发应用开发小结小结vstruts2开发环境,加载必须的jar包v创建struts2应用
17、配置web.xml过滤器配置(基本固定)创建action实现业务控制创建配置文件struts.xml,配置action创建视图*.jsp或*.htmlv熟悉业务控制器actionexecute()方法普通Java类实现Action接口继承ActionSupport类v输入校验-两种方式v国际化Java Web 应用开发应用开发课堂练习课堂练习v步骤struts.xml配置用户注册页面reg.jsp注册成功页面reg_ok.jsp自定义业务ActionUserReg可以在自己的Action中实现该Action接口,可以直接返回SUCCESS常量,使得配置管理更加规范数据校验,只要在自定义Action类中重写方法publicvoidvalidate()如果发现输入的数据不符合条件,将执行addFieldError()方法,将错误信息写入Action类的FieldErrors中,Struts框架将自动返回到INPUT视图中。