您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 工作范文 > Struts2知识点整理
Struts2知识点整理主讲:董旭源拓胜(广州)计算机技术服务有限公司内容要点Struts2其他Struts2转换器与校验器Struts2标签库Struts2业务控制器——动作(Action)Struts2快速入门Struts2快速入门创建web工程,设置环境Struts2.x需要的基本.jarweb.xml配置过滤器(核心控制器)•org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts.xml页面开发Jsp•既可以使用struts标签、也可以使用html标签业务控制器Action•页面属性•提供默认的execute()方法配置struts.xml路径与Action之间的映射配置struts.xml主管业务逻辑控制器的配置配置文件可以分模块进行•使用includefile=/include来完成定义BeanFactory•使用beanclass=/bean来完成配置struts.propertiesStruts2.x另一个核心配置文件,它所配置的有效属性有struts.configuration•指定加载Struts2的配置文件的配置管理器,默认是:struts.locale•指定web应用的默认Localestruts.i18n.encoding•指定web应用的默认编码集struts.custom.i18n.resources•指定strus2所需的国际化资源文件,多份时用,分隔。struts.objectFactory•指定默认的ObjectFactory,默认是springstruts.objectFactory.spring.autoWire•指定spring的自动装配模式,默认是namestruts.objectFactory.spring.useClassCache•该属性指定整合spring时,是否缓存Bean实例,默认是truestruts.objectTypeDeterminer•指定struts2的类型检测机制,通常是tiger/notigerstruts.multipart.parser•指定处理MIME类型为multipart/form-data的请求(文件上传)时,选择指定上传框架(cos,pell,jakarta)业务控制器——ActionAction入门Namespace定义自己的Action调用Action的自定义方法通配符接收用户输入(3种方式)简单数据校验Action中访问web元素(req,session,application)包含模块配置文件默认action运行原理图普通的java类支持POJO编程继承自ActionSupport(推荐)实现Action接口调用指定方法actionname=UserActionmethod=add“UserAction!add(动态方法调用)通配符例子1actionname=UserAction_*method={1}•例如:UserAction_add例子2actionname=*_*class={1}method={2}•result{1}_{2}_success.jsp/resutl/action接收用户输入比较等价于jsp/servlet•request.getParameter();Struts2方式一•对属性提供getter/setter方法方式二•引入com.opensymphony.xwork2.ModelDriven–实现ModelDriven的publicObjectgetModel()方法默认的结果类型,把控制权转交给一个JSP页面chain构成动作链redirect重定向到另一个URL(可以是外部)redirect-action重定向到另一个动作httpheader把HTTP标头发送回用户freemark用于FreeMarker的集成stream把一个InputStream流发送给浏览器velocity用于与Velocity集成xslt用于与xml/xslt集成pllaintext发送普通文本,通常用来显示JSP页面的源代码OGNL略标签分类UI标签•数据采集(统称为表单标签)•出错信息提示–例如:s:fieldError非UI标签-Generic通用标签•数据标签–例如:s:property/•控制标签–例如:s:if/优点验证失败时保留属性页面布局和排版标签Struts标签的使用方法加上taglib指令•%@taglibprifix=suri=/struts-tags%标签的属性可以被赋值为一个静态的值或者OGNL表达式•label=“username”–-字符串•label=%{username}“–OGNL表达式,等于动作(Action)属性username的值•label=“%{#session.username}”–会话属性username的值•value=%{1+5}–运算结果,为6表单标签的共同属性UI标签的共同属性重点讲述key属性#只给出key属性•如key=aKey等价于name=aKeylabel=%{getText('aKey')}#现时给出key,name,name属性使用显式值,label=%{getText('aKey')}“#同时给出key,label,label使用显式式值与模板有关的属性与Javascript有关的属性与浮动提示框有关的属性form标签s:form/可以通过改变主题来改变布局•theme=simpletextfield、password、hidden标签submit标签type=inputtype=buttontype=imagereset标签……类型转换例如StringbirthDateStr=request.getParameter(birthDate);SimpleDateFormatsdf=newSimpleDateFormat(yyyy-MM-dd);DatebirthDate=sdf.format(birthDateStr);请求参数--Action属性由Parameter拦截器负责所有的请求参数都是StringAction属性不一定是String•需要类型转换内建转换类型转换并非总是能成功例如:abc-int类型转换失败后相关的属性不会被改变Struts解决方案实现ValidationAware接口•查看resultname=inputerror.jsp/result没有实现•继续调用方法类型转换错误信息的定制例子app15.UserActionUserAction.propertiesClassName.properties与相关类在同一个目录格式•invalid.fieldvalue.fieldName=...类型转换器的定制转换器概述写转换器•实现TypeConverter接口•继承DefaultTypeConverter•继承StrutsTypeConverter对自定义的类型转换器进行配置(注册)ActionClass-conversion.properties•字段级别–fieldName=converterClassxwork-conversion.properties•类级别–例如:app17.Color=ColorConverter类绝大多数类都需要从String--非String类型,以及从非String--String其他与复杂对象配合使用与Collection配合使用与Map配合使用数据校验数据校验客户端•用户是否为空服务端•业务校验--用户是否存在,密码是否正确•备注:•客户端做的数据校验,服务端也可做,但是不推荐,为什么?–1增加服务端的负端–2破坏服务端的安全环境验证程序概述Servlet/JSP在Servlet里通过req.getParameter()得到相应字段验证字段是否合法决定怎么处理验证器分类字段验证程序•Struts大部分内建验证程序属于字段验证普通验证程序(非字段验证程序)•不与某个特定字段相关联•用来测试某种特定的条件是否得到了满足加载验证器由Validation拦截器进行使用验证程序步骤确定哪些动作的输入需要验证编写一个验证程序配置文件。文件名是以下两种格式ActionClass-validation.xmlActionClass-alias-validation.xml确定用户校验失败时应该把用户定向到哪里resultname=inputlogin.jsp/result验证程序配置根元素validators根元素下可以有任意多个filed和validator每个filed可以使用多个验证程序嵌入多个field-validator元素field-validator元素必须有一个type属性,指定一个验证程序可以有一个short-circuit属性•true表示当前失败,不往下执行•false表示当前失败,继续往下执行通过内嵌一个或多个param元素传递对数内嵌message元素定义出错消息,只能有一个validator元素可以包含多个param元素和一个message元素必须有一个type属性和一个可选的short-circuit属性拦截器strtus2执行过程源码分析struts-default.xmlcontextstackintercetors.hasNext()理解什么是拦截器拦截器机制它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。拦截器链InterceptorChain,在Struts2中称为拦截器栈InterceptorStack。拦截器链就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。AOP-面向切面编程使得开发者分离关注点拦截器过程模拟定义自己的拦截器实现拦截器类实现Interceptor继承AbstractInterceptorstruts.xml中定义拦截器通过interceptorname=class=元素来定义拦截器。struts.xm
本文标题:Struts2知识点整理
链接地址:https://www.777doc.com/doc-5545062 .html