您好,欢迎访问三七文档
第一章MiniStruts的制作不使用Servlet,也不使用request.getParameter()获取参数;是用户能够直接访问Dao中的查询方法?1、可以使用filter过滤器,用来拦截用户的表单提交(请求的路径、请求的参数)。2、根据路径分析出,应该调用哪个类的哪个方法。3、根据请求的参数,动态的将参数的值,设置到类的属性中去。4、执行完成之后,需要跳转的页面(创建xml配置文件,配置用户跳转的路径信息)。一、struts的实现步骤手动导入:1.创建Web项目。2.导入Strutrs的几个必须包(7个jar)。3.在src目录下,创建struts.xml配置文件(名字和路径都不能改)。4.在web.xml配置文件中,添加Struts的支持(配置一个filter过滤器)。自动导入(Myeclipse8.0以上的版本):第二章深入StrutsStruts2运行原理:请求---自定义过滤器----filterdispatcher------ActionProxy(代理,读取struts.xml的配置文件)----ActionInvocation(action的调用者,调用具体的Action;在调用之前经过一系列的拦截器)——执行完Action之后,跳转到对应的页面。注意:struts中的所有编码处理都是i18n拦截器处理,所有的表单数据处理都是在系统默认拦截器中获取。Struts.xml配置文件详解:constantname=value=/constant!--常量:系统默认配置的量(名字不可改)--!--常用的常量:struts.custome.i18n.resources(国际化常量)--!--常用的常量:struts.i18n.encoding(编码方式常量,系统默认采用utf-8编码)--动态方法调用:注意:1.在配置action的时候,不用指定具体的方法(不用写method=“XXX”);2.在请求action的路径指定需要执行的方法名即可。(格式:action名!方法名.action)使用通配符进行模糊匹配:actionname=*Calcclass=com.zuxia.action.TestActionmethod={1}resultname=”名字”{1}.jsp/result/action注意:使用“*”号表示模糊匹配的值。{1}表示占位符,在运行的过程中,被通配符所代替。在这个Action的配置文件中,都可以使用{1}占位。Struts2对返回结果页面进行配置:resultname=”方法的返回值”type=””页面路径/resulttype=””表示页面跳转的方式,默认表示内部跳转。type=”redirect”表示页面使用外部跳转,注意外部跳转request中的数据将会丢失。type=”redirectAction”表示跳转的页面将会是一个Action。resulttype=”redirectAction”paramname=”actionName”action的名字/paramparamname=”namespace”命名空间的名字/param/result原样输出指定的页面:resultname=oktype=plainTextparamname=locationtest.jsp/paramparamname=charSetutf-8/param/result全局结果配置:!--配置全局的结果,跳转页面--global-resultsresultname=errortest.jsp/resultresultname=okindex.jsp/result/global-results注意:必须在action的最前面。全局异常处理:global-exception-mappingsexception-mappingresult=返回的结果名exception=异常类型/exception-mapping/global-exception-mappings在异常处理页面,显示异常的信息:%@tagliburi=/struts-tagsprefix=s%异常的信息:s:propertyvalue=exceptionStack/第三章Struts2的拦截器1.什么是拦截器?在用户访问Action之前和之后执行相应的操作,称为拦截器。例如:将表单中的数据自动转换到Action的属性,使用的就是一个拦截器。2.拦截器与过滤器(filter)异同?a)过滤器是根据用户的地址进行过滤,可以过滤任意路径(包括jsp、html、action等等)。b)拦截器只能用来过滤action,不依赖于访问的路径。3.实现自定义拦截器步骤*用户实现自定义拦截器步骤:**1.继承AbstractInterceptor类,重写intercept()方法。**2.在struts.xml配置文件中,配置拦截器*interceptors*interceptorname=拦截器名class=拦截器所在的类/*/interceptors**3.在需要拦截的action中引用拦截器。*action.....*interceptor-refname=引用拦截器的名字/*/action使用拦截器注意事项:1.在action中使用了自定义拦截器,系统默认的defaultStack拦截器链会失效;必须使用引入。2.在引入多个拦截器的时候,推荐使用拦截器链的方式简化拦截器的使用。interceptorsinterceptorname=firstinterclass=com.zuxia.interceptor.FristInterceptor/interceptor-stackname=testStackinterceptor-refname=firstinter/interceptor-refname=defaultStack//interceptor-stack/interceptors在actin中调用使用如下方式:action…………interceptor-refname=testStack//action第四章Struts2的类型转换器1.Struts2中类型转换分为两种:a)手动(自定义)转换器b)自动转换器2.手动(自定义)转换器(针对特殊属性)a)在action的类中,必须继承ActionSupport类。b)定义转换器的类,继承DefaultTypeConvert,重写convertValue()方法。c)创建配置文件(注意:1.文件名必须是:Action的类名-conversion.properties;2.必须将配置文件存放在Action所在的包中。)3.自动转换器(常用的方式)基本数据类型+String类型都是可以自动转换。对象类型自动转换:在input中使用:对象名.属性名第五章Struts2的输入验证一.验证分类:1.服务器端验证(Java代码来完成验证(Struts的内置验证框架,可以完成服务器端验证))。2.客户端验证(js验证——在客户端执行,执行的时候依赖与客户度(手动js验证,jquery验证框架进行验证))二.Struts的内置验证框架:Struts2中验证有两种方式:1.手动验证。2.配置验证框架,自动验证。三.内置验证框架使用步骤:1.需要验证的Action必须继承自ActionSupport类。2.创建验证配置文件。要求:a)配置文件必须和action在同一目录。b)文件名的格式必须是:Action类名-validation.xml(验证Action中的所有方法)Action类名-访问Action的名字-validation.xml(只会验证Action中指定的方法)3.查看内置验证器:xwork-XXXXX.jar目录中(找到default.xml配置文件)特别需要注意:注意哦!1.使用了验证器之后,如果验证失败;必须配置resultname=”input”/result表示验证失败之后,跳转的页面。2.如果jsp页面中使用了,Struts的标签;那么必须让这个jsp页面必须经过struts的核心过滤器,进行过滤;否则页面不能正常解析struts的标签。3.基本数据类型,不能使用Struts的内置验证,建议使用包装类。四.手动验证步骤:1.继承ActionSupport,重写validate()方法。在执行Action中具体的方法之前,会先执行validate()方法;如果有错误,则返回input指定的页面。(有错误:super.addFiledError())手动验证总结:1.可以在实体中的setXxx()方法进行控制。2.在validate()方法中进行验证。第六章Struts2的标签库Action配置中一定要设置input返回页面添加验证只要创建验证的xml文件1.创建xml文件名验证Action中全部方法在Action同包下,创建:Action类名-validation.xml如:ValidateAction创建ValidateAction-validation.xml验证Action中单个方法!--每个方法单独配置一个Action--!--在Action同包下,创建:Action类名-action方法配置名称-validation.xml--actionname=validateAddclass=com.struts2.validator.ValidateActionmethod=add!--要创建ValidateAction-validateAdd-validation.xml--!--使用通配符配置--!--在Action同包下,创建:Action类名-action方法对应的名称-validation.xml--actionname=validate_*class=com.struts2.validator.ValidateActionmethod={1}!--要创建ValidateAction-validate_add-validation.xml,validate_add为访问这个action方法的路径--注意事项注意:1.要验证的方法不能叫input.2.这样配置在form表单中要在s:formaction=validate_add中action写好名称,不能写action=validate_,然后s:submitvalue=提交method=add/这样会找不到对应的配置文件,跳过验证.3.如果验证出错,返回input页面时,那些存在ValueStack中的值会丢失,可以将Action实现Preparable接口,然后prepare()方法里初始化添加页面需要的值.4.如果使用Preparable接口,必须在action配置中添加interceptor-refname=paramsPrepareParamsStack/.这样prepare()才能得到form提交的参数.2.创建xml内容!DOCTYPEvalidatorsPUBLIC-//OpenSymphonyGroup//XWorkValidator1.0.2//EN!--要验证的字段名称--!--要验证Action中UserBean的id字段,name=userBean.id(userBean为Action中的变量名)--fieldname=mail!--type要验证的类型,short-circuit(默认false),true含义,如果当前验证失败了,下面的验证就不执行了.如requ
本文标题:Struts2总结
链接地址:https://www.777doc.com/doc-5545050 .html