ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:21.27KB ,
资源ID:6029711      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6029711.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(struts2流程和配置步骤.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

struts2流程和配置步骤.docx

1、struts2流程和配置步骤Struts2执行流程2009-12-16 12:19Struts2执行流程1. web.xml 部署描述符2. FilterDispatcher 实现StrutsStatics, Filter接口(1)Filter:一个filter是一个对象用于执行过滤任务为每个请求资源(一个servlet或静态内容),或响应一个资源,或两者.过滤器执行过滤是在doFilter方法中.每个过滤器访问一个FilterConfig对象从中获取初始化参数,一个引用到ServletContext可以被使用,例如,在过滤器任务需要时装载资源.过滤器的配置在Web应用程序的部署描述符中.in

2、it()-初始化过滤器,它的输入参数javax.servlet.FilterConfig的一个实例,可以这里初始化过滤要使用到的FilterConfig。这个方法由Web容器自动调用。doFilter()-进行具体的过滤操作,这个方法以javax.servlet.ServletRequest请求信息, javax.servlet.ServletResponse响应信息,javax.servlet.FilterChain过滤链。过滤链,在Web应 用程序中所有的过滤器会构成一个链状,符合过滤条件的程序将会根据定义的顺序执行所有链中的过滤器。在这个方法中调用FilterChain的 doFilte

3、r(javax.servlet.ServletRequest, javax.servlet.SerletResponse)方法就可以传递到链中的下一个过滤器。destory()-销毁过滤器,可以在这里释放使用完的资源,例如设置过滤器中FilterConfig为null。(2)StrutsStatics: 定义Struts中使用的常量,常量用来获取和设置Action上下文以外的对象或其它集合.可以使用如下方式获取这些对象ActionContext context = ActionContext.getContext();HttpServletRequest request = (HttpServ

4、letRequest)context.get(HTTP_REQUEST);(3) FilterConfig接口:一个过滤器配置对象,用于Servlet容器传递信息到过滤器在初始化期间.BeanSelectionProvider类:选择框架实现的关键扩展点,用于装载属性常量.选择的实现是从container builder使用的名字定义关联属性,默认名为”struts”例如:获取requestActionContext.getContext().put(HTTP_REQUEST, request)执行流程: init(FilterConfig filterConfig)初始化过滤器-create

5、Dispatcher(filterConfig); 创建调度器,返回带有过滤器参数Dispatcher -执行Dispatcher的init方法,首先创建configurationManager,如果为null使用BeanSelectionProvider. DEFAULT_BEAN_NAME参数创建. - 配置的初始化/加载org/apache/struts2/default.properties文件init_DefaultProperties(); / 1/加载格式相同的struts-default.xml,struts-plugin.xml,struts.xmlinit_Traditio

6、nalXmlConfigurations(); / 2/可读取public static final String STRUTS_LOCALE = struts.locale;配置 init_LegacyStrutsProperties(); / 3 /加载Web.xml中的actionPackages配置 init_ZeroConfiguration(); / 4 /读取configProviders参数,配置用户定义的provider init_CustomConfigurationProviders(); / 5 /Struts2.0.9中为空 init_MethodConfigurat

7、ionProvider(); /初始化Filter中的config参数中指定的配置文件, initParams参数的获取是在Dispatcher创建时 init_FilterInitParameters() ; / 6 /在BeanSelectionProvider中注册别名 init_AliasStandardObjects() ; / 7 /读取public static final String STRUTS_I18N_RELOAD = struts.i18n.reload;参数,Container container = init_PreloadConfiguration();/读取p

8、ublic static final String STRUTS_CONFIGURATION_XML_RELOAD = struts.configuration.xml.reload; init_CheckConfigurationReloading(container); /初始化weblogic相关配置 init_CheckWebLogicWorkaround(container);- String param = filterConfig.getInitParameter(packages); String packages = org.apache.struts2.static tem

9、plate org.apache.struts2.interceptor.debugging;设置静态资源Prefixes-doFilter 处理一个Action和它请求的静态资源,过滤器尝试配置请求到一个Action mapping.如果mapping找到了,Action的处理在dispatcher的serviceAction方法.如果Action处理失败,doFilter将会尝试去创建一个错误页面通过dispatcher.另外请求一个静态资源,资源将直接Copy到响应,使用适当的caching头设置.如果请求没有匹配一个Action mapping或一个静态资源页,那么将通过.(1) ge

10、tServletContext Servlet2.3规范中Servlet Context可以从Session中从新获取。不幸的是,一些版本的Weblogic不能够从新获取从Filter的配置中.因此,这个方法允许子类重新获取Servlet Context从其它源.(2) prepareDispatcherAndWrapRequest(request, response) 包装和返回给定的request,如果需要,作为处理multipart data包装给定的request.1.dispatcher.prepare(request, response);准备request,包括设置encodin

11、g和locale,使用注入的public static final String STRUTS_I18N_ENCODING = struts.i18n.encoding、public static final String STRUTS_LOCALE = struts.locale和public static final String STRUTS_DISPATCHER_PARAMETERSWORKAROUND = struts.dispatcher.parametersWorkaround;(是否使用一个Servlet request参数,对一些版本的Weblogic是必需的)2.reque

12、st = dispatcher.wrapRequest(request, getServletContext(); 首先包装request,通过预先编码可以使用multipart/form-data参数访问的情况.3. mapping = actionMapper.getMapping(request, dispatcher.getConfigurationManager();找到对应的Action映射.4. 如果找不到就去查找静态资源.可以设置public static final String STRUTS_SERVE_STATIC_CONTENT = struts.serve.stati

13、c;5.然后是正常的chain.doFilter(request, response);请求传递6. dispatcher.serviceAction(request, response, servletContext, mapping); 装载映射的Acation类和调用适当的Action方法,或直接转向Result.这个方法首先创建Action上下文从给定的参数,并且装载一个ActionProxy从给定的Action名和namespace.然后,Action方法被直行和输出通道通过response对象.Action没有找到,发送到用户是通过Dispatcher的sendError方法,使用

14、404返回码.所有的其它错误是通过抛出ServletException异常.ValueStack stack = (ValueStack) request.getAttribute(ServletActionContext.STRUTS_VALUESTACK_KEY);如果已经存在这样的值栈,创建一个新的,拷贝和传递它为新的Action所使用. ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy( namespace, name, extraConte

15、xt, true, false);ActionProxy将会查阅框架的配置文件管理(初始化是从Struts.xml文件),下一步,ActionProxy创建一个ActionInvocation,它来负责命令模式的实现. 包括调用拦截器在调用Action自身之前. proxy.setMethod(method); 设置Action调用中要执行的方法.如果没有方法被指定,将会由Action的配置来提供.设置Action中执行的方法.如果ActionMapping直接到一个resultif (mapping.getResult() != null) Result result = mapping.g

16、etResult(); result.execute(proxy.getInvocation(); else /没有配置result的情况 proxy.execute(); 调用ActionProxy接口中的String execute() throws Exception;方法,它的实现类为DefaultActionProxy,在其中会调用retCode = invocation.invoke()方法.ActionInvocation接口的实现类DefaultActionInvocation的invoke方法首先调用拦截器栈,如果拦截器执行完,调用Action使用resultCode = i

17、nvokeActionOnly();接下来迭代preResultListeners中的PreResultListener并执行其中的listener.beforeResult(this, resultCode);方法,在Action与Result之间.执行Resultif (proxy.getExecuteResult() executeResult(); 到此serviceAction方法执行完毕,返回到FilterDispatcher的doFilter方法中释放本地线程和创建的DispatchListenerspublic void destroy() if (dispatcher = n

18、ull) LOG.warn(something is seriously wrong, Dispatcher is not initialized (null) ); else dispatcher.cleanup(); 1. FilterDispatcher(一)Struts的主要filter有四种不同的职责:(1) 执行Action这个Filter执行Action是通过查找ActionMapper来确定请求的URL将会调用的Action.如果mapper中指定,其它的Filter chain将会停止并且Action会被调用.这一点非常重要,它意味着像SiteMesh过滤器必需被放置在它之前

19、或者将不会被修饰输出的Action.(2) Cleaning up ActionContext (清理上下文)这个Filter将自动为你清理ActionContext,确保不会出现内存泄漏.然而,有时会引起一些集成上的问题像使用SiteMesh.见ActionContextCleanUp来获取更多的信息处时这个问题.(3) Serving static content(静态内容服务)这个过滤器也服务于普通的静态内容,需要使用Struts中的很多部分,像JavaSctipt文件,CSS文件,等等.它的工作通过查找请求中的/struts/*,并且映射值在”/struts/”后面的常用包,它是可选的

20、在你的classpath中.默认情况下,下面的包将会自动被搜索:org.apache.struts2.statictemplate这意味着你可以请求/struts/xhtml/styles.css和XHTML UI主题的默认stylesheet将会被返回.同样的很多AJAX UI组件需要的JavaScript文件也可以在org.apache.struts2.static包中找到.如果你希望添加额外的包被查找到,你可以增加一个逗号分隔的列表在过滤器的被始化参数”packages”中.注意,这样将暴露了你的包中的敏感信息,像访问数据库的属性文件.(4) Kicking off XWorks int

21、erceptor chain for the request lifecycle(二)这个Filter必需映射到所有的请求.除非你道它在做什么,通常映射到/*种URL模式(三)这个Filter支持如下init-params: config-一个逗号分隔的XML配置文件将会被装载 actionPackages-一个逗号分隔的Java Action包将会被扫描. configProviders-一逗号分隔的实现com.opensymphony.xwork2.config.ConfigurationProvider 接口的Java类列表,用于构建com.opensymphony.xwork2.con

22、fig.Configuration。 *-任何其它的参数,作为框架的常量来对待.(四)使用定制的Dispatcher, createDispatcher方法可以被覆盖通过子类.通配符映射随着应用程序的增大,Action的数量也会增多.通配符可以用来组合简单的映射到多个通用映射.最好的解释通配符的方法是通过一个例子和它是怎样工作的来展示.这个例子修改一个习惯上用通配符来匹配所有以/edit开头的页面; 在路径中的“*”属性允许映射匹配请求的URI /editSubscription,editRegistration,或其它URI以/edit开头的,然而/editSubscription/add将

23、不会被匹配.URI的部分匹配通过通配符,被替代的是Action映射中的变量属性和Action结果替换1.为了其它的请求,框架将查看Action映射和Action result中包括的新值.映射的匹配依赖于请求,依次出现在框架的配置文件中。如果一个或多个模式匹配最后一个模式将得到,所以较少的指定模式,必需呈现多个指向同一个之前.然而,如果请求的URL可以被匹配依赖于一个路径不需要任何通配置,没有通配置被执行,同时顺序也不重要了.通配符模式可以包含一个或多个下面的指定标记:*匹配一个或多个字符包括斜线(/)字符.* 匹配一个或多个字符除了斜线(/)字符.字符,反斜杠字符用来作为一个脱字符连接.因此

24、*匹配字符星(*),和匹配字符反斜框().在Action Mapping和Action Result,通配符匹配值可以被该问使用标记N,N从1到9指示通配符匹配值到被替代属性 .全部的请求URI可以被该问用0标记.同样的,Action Mapping属性(设置使用语法)将接受通配符匹配字符串在他们的值属性.像Action Mapping,Action result属性(设置使用语法)将接受通配符匹配字符串在他们的值属性.例子代码: /example/Login.jsp Menu /example/1.jsp Struts2配置步骤1.将文件struts2-blank-2.0.11.war解压,

25、将lib下的5个jar文件放到项目的lib下2.web.xml添加过滤器和默认配置文件,注册一个FilterDispatcher struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /*3.在src目录下创建struts.xml(项目发布后,struts.xml将会被复制到WEB-INF/classes下面) 在空的struts.xml中填入 /package可以将Action分类,划分到不同的包中,java中的包不可以继承,而这些包可以互相继承,包括拦截器,action映射等都可以继承 extend支持多个文件的定义,如user.xml格式和struts.xml相同,可以放在src或src的子文件夹下最后在struts.xml中使用include嵌入 4.新建类继承ActionSupport在其中设定方法和属性,在方法中给属性赋值,返回SUCCESS常量5.struts.xml 中加入一个action 定义 /index.jsp6.index.jsp页面显示属性值 或使用EL表达式7访问http:/localhost:8080/Struts2_prj/Hello.action

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1