Struts2框架的工作原理与架构分析

合集下载

struts2的工作原理

struts2的工作原理

struts2的工作原理
Struts2是一个基于Java的Web应用程序框架,其工作原理是
基于MVC(Model-View-Controller)设计模式。

它主要由以
下几个组件构成:
1. 客户端发起请求:用户在浏览器中输入URL地址或者点击
超链接等操作发起请求。

2. 前端控制器(Front Controller)处理请求:当用户发起请求时,前端控制器(通常是一个Servlet)接收到请求,并负责
处理该请求。

3. 配置文件解析:前端控制器会根据配置文件(通常是struts.xml)对请求进行解析,确定要执行的控制器动作和视图。

4. 控制器动作执行:前端控制器会根据配置文件中指定的控制器动作,调用相应的Action处理业务逻辑。

Action是一个
Java类,负责接收请求参数、调用服务层逻辑处理数据,并将处理结果封装进Action的属性中。

5. 视图生成:当控制器动作执行完成后,前端控制器会根据配置文件中指定的视图,调用相应的视图模板生成最终的
HTML响应。

6. 响应返回客户端:生成的HTML响应会被前端控制器发送
回客户端,显示在用户的浏览器中。

总结来说,Struts2的工作原理就是通过前端控制器来处理用
户请求,根据配置文件解析请求,并调用相应的Action处理
业务逻辑,最后生成HTML响应返回给客户端。

这种设计模
式的好处是将业务逻辑与界面分离,提高了代码的可维护性和可测试性。

struts2的工作原理(官方官方原理图)

struts2的工作原理(官方官方原理图)

Java面试中常常问到的一个重要的理论
1。

struts2工作原理
(a)用户发送http(httpServletRequest)请求,请求web服务器(Tomcat),web服务器加载web部署描述文件(web.xml),执行过滤器
ActionContextCleanUp,Other filters,filterDispatcher等等ActionContextCleanUp:需要与装饰器(siteMesh)插件一起使用,作用:使用装饰器插件,struts2中Action不再管理Action中属性,使用ActionContextCleanUp来清理Action中属性other filters:其他过滤器(siteMesh)filterDispatcher:struts2核心控制器
注意:过滤器执行是有顺序(同图),值栈在filterDispatcher中创建
(b)filterDispatcher询问ActionMapper是否请求Action,如果不请求Action,就不再实行struts2容器,否则filterDispatcher会调用ActionProxy,ActionProxy通过配置文件管理器(Configuraction Manager)加载struts.xml 配置文件,找到相应Action
(c)ActionProxy会创建Action Invocation对象先执行struts2中相应的拦截器,在行所请求Action
(d)Action Invocation执行Result找到分发页面
(e)(反向)执行struts2中拦截器或拦截器栈
(f) 响应(HttpServletResponse)给客户端
struts2优势:
与Servlet API(Servlet容器)解耦。

Struts2的工作机制原理分析及实例

Struts2的工作机制原理分析及实例

Struts2的工作机制分析及实例一、概述本章讲述Struts2的工作原理。

读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。

实际上Struts1.x 与Struts2并无我们想象的血缘关系。

虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。

Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork 的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。

本章主要对Struts的源代码进行分析,因为Struts2与WebWork的关系如此密不可分,因此,读者需要下载xwork的源代码,访问/xwork/download.action即可自行下载。

下载的Struts2源代码文件是一个名叫struts-2.1.0-src.zip的压缩包,里面的目录和文件非常多,读者可以定位到struts-2.1.0-src\struts-2.0.10\src\core\src\main\java目录下查看Struts2的源文件,如图14所示。

(图14)二、主要的包和类Struts2框架的正常运行,除了占核心地位的xwork的支持以外,Struts2本身也提供了许多类,这些类被分门别类组织到不同的包中。

从源代码中发现,基本上每一个Struts2类都访问了WebWork提供的功能,从而也可以看出Struts2与WebWork千丝万缕的联系。

但无论如何,Struts2的核心功能比如将请求委托给哪个Action处理都是由xwork完成的,Struts2只是在WebWork 的基础上做了适当的简化、加强和封装,并少量保留Struts1.x中的习惯。

struts2基本流程及原理

struts2基本流程及原理

Struts2基本流程及原理1.Struts 2的基本流程Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。

在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

2.核心控制器:FilterDispatcherFilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。

如果用户请求以action结尾,该请求将被转入Struts 2框架处理。

Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。

Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。

Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。

显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。

用户实现的Action类仅仅是Struts 2的Action代理的代理目标。

用户实现的业务控制器(Action)则包含了对用户请求的处理。

Struts 2 讲义(2)

Struts 2 讲义(2)

Struts2(2) 工作原理一、Struts2框架结构Struts2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。

Struts2框架结构图如图4-1所示。

图4-1 Struts 2框架结构图一个请求在Struts2框架中的处理大概分为以下几个步骤。

①客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。

②请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。

注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。

③FilterDispatcher是控制器的核心,就是MVC的Struts2实现中控制层(Controller)的核心。

④F ilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

⑤ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。

例如,用户注册示例将找到UserReg类。

⑥ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。

但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

struts2核心工作流程与原理

struts2核心工作流程与原理

struts2核心工作流程与原理这是Struts2官方站点提供的Struts 2 的整体结构。

一个要求在Struts2框架中的处理大致分为以下几个步骤1.客户端提起一个(HttpServletRequest)要求,如上文在扫瞄器中输入”http://localhost:8080/TestMvc/add.action”确实是提起一个(Http ServletRequest)要求。

2.请求被提交到一系列(要紧是三层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。

注意那个地点是有顺序的,先ActionContextCleanUp,再其他过滤器(Site Mesh等)、最后到FilterDispatcher。

3.FilterDispatcher是操纵器的核心,确实是mvc中c操纵层的核心。

下面粗略的分析下我明白得的FilterDispatcher工作流程和原理:FilterDispatcher进行初始化并启用核心doFilter其代码如下:public void doFilter(ServletRequest req,ServletResponse res,Filter Chain chain)throws IOException,ServletException{HttpServletRequest request=(HttpServletRequest)req;HttpServletResponse response=(HttpServletRespon se)res;ServletContext servletContext=filterConfig.getServl etContext();//在那个地点处理了HttpServletRequest和HttpServlet Response。

DispatcherUtils du=DispatcherUtils.getInstance();du.prepare(request,response);//正如那个方法名字一样进行locale、encoding以及专门request parameters设置try{request=du.wrapRequest(request,servletContext);//对request进行包装}catch(IOException e){String message="Could not wrap ser vlet request with MultipartRequestWrapper!";LOG.error(message,e);throw new ServletException(message,e);}ActionMapperIF mapper=Actio nMapperFactory.getMapper();//得到action的mapperActionMapping mapping=mapper.getMapping(requ est);//得到action的mappingif(mapping==null){//there is no action in this reques t,should we look for a static resource?String resourcePath=RequestUtils.getServ letPath(request);if("".equals(resourcePath)&&null!=r equest.getPathInfo()){resourcePath=request.getPathInfo ();}if("true".equals(Configuration.get(WebWorkC onstants.WEBWORK_SERVE_STATIC_CONTENT))&&resourcePath.startsWit h("/webwork")){String name=resourcePath.subst ring("/webwork".length());findStaticResource(name,response);}else{//this is a normal request,le t it pass throughchain.doFilter(request,response);}//WW did its job herereturn;}Object o=null;try{//setupContainer(request);o=beforeActionInvocation(request,servlet Context);//整个框架最最核心的方法,下面分析du.serviceAction(request,response,servletC ontext,mapping);}finally{afterActionInvocation(request,servletContex t,o);ActionContext.setContext(null);}}du.serviceAction(request,response,servletContext,mapping);//那个方法询咨询ActionMapper是否需要调用某个Action来处理那个(re quest)要求,如果ActionMapper决定需要调用某个Action,FilterDispatche r把要求的处理交给ActionProxypublic void serviceAction(HttpServletRequest request,HttpServletResponse response,String namespace,String actionName,Map request Map,Map parameterMap,Map sessionMap,Map applicationMa p){HashMap extraContext=createContextMap(request Map,parameterMap,sessionMap,applicationMap,request,respons e,getServletConfig());//实例化Map要求,询咨询ActionMapper是否需要调用某个Action来处理那个(request)要求extraContext.put(SERVLET_DISPATCHER,this);OgnlValueStack stack=(OgnlValueStack)request. getAttribute(ServletActionContext.WEBWORK_V ALUESTACK_KEY);if(stack!=null){extraContext.put(ActionContext.V ALUE_STAC K,new OgnlValueStack(stack));}try{ActionProxy proxy=ActionProxyFactory. getFactory().createActionProxy(namespace,actionName,extraContext);//那个地点actionName是通过两道getActionName解析出来的,FilterDis patcher把要求的处理交给ActionProxy,下面是ServletDispatcher的TOD O:request.setAttribute(ServletActionContext.WEB WORK_V ALUESTACK_KEY,proxy.getInvocation().getStack());proxy.execute();//通过代理模式执行ActionProxyif(stack!=null){request.setAttribute(ServletActionCont ext.WEBWORK_V ALUESTACK_KEY,stack);}}catch(ConfigurationException e){log.error("Could not find action",e);sendError(request,response,HttpServletResp onse.SC_NOT_FOUND,e);}catch(Exception e){log.error("Could not execute action",e);sendError(request,response,HttpServletResp onse.SC_INTERNAL_SERVER_ERROR,e);}}4.FilterDispatcher询咨询ActionMapper是否需要调用某个A ction来处理那个(request)要求,如果ActionMapper决定需要调用某个A ction,FilterDispatcher把要求的处理交给ActionProxy。

struts2 的工作原理

struts2 的工作原理Struts2是一个基于Java的Web应用框架,其核心原理是基于MVC(模型-视图-控制器)模式进行开发。

它的工作原理可以简要概括如下:1. 客户端通过浏览器发送请求至Web服务器,请求的URL映射到Struts2框架的前端控制器(Front Controller)。

2. 前端控制器负责接收请求并进行初步处理,它会根据Struts2配置文件中定义的拦截器(Interceptors)和映射表(Mapping)来确定如何处理请求。

3. 拦截器是Struts2框架中的一个重要组件,用于对请求进行预处理和后处理。

它可以用于验证用户身份、记录日志、数据验证等。

拦截器可以按照一定的顺序链式执行,每个拦截器可以对请求进行修改或决定是否继续执行下一个拦截器。

4. 映射表用于将请求映射到对应的Action(控制器)及其相关方法上。

Struts2框架会根据请求的URL、请求参数等信息进行匹配。

5. Action是Struts2框架中的控制器组件,负责接收请求、处理业务逻辑并生成响应。

在执行Action方法之前,Struts2框架会将请求参数绑定到Action对象的对应属性上。

6. Action执行后,会返回一个结果视图(View)路径或逻辑名。

Struts2框架会根据配置文件中的Result定义,将该结果视图转发或重定向给客户端。

7. 结果视图可以是一个JSP页面、一个HTML文件、一个JSON数据等。

客户端浏览器会接收到结果视图并进行展示。

总的来说,Struts2的工作原理是通过前端控制器接收请求,经过拦截器的预处理和后处理,根据映射表将请求转发给对应的Action进行处理,最后将处理结果返回给客户端浏览器展示。

这种基于MVC模式的设计能够有效地将业务逻辑与用户界面分离,提高了代码的可维护性和可重用性。

第一章 Struts2系统架构

第一章Struts2系统架构本章主要介绍的Struts2的系统架构,让学员对Struts2框架在结构上有一个整体概念为我们以后更加详细的学习Struts2打下一个良好的基础。

第一节Struts2的系统架构及处理的主要流程1.Struts1简介Struts1的历史比较久远,Struts1是世界上第一个发布的MVC框架,目前市场率最高的框架。

下面将简单讲解Struts1的基本架构。

图1-1显示了Struts1的数据流图。

图1-1 Struts1数据流图Struts1框架以ActionServlet为核心控制器,ActionServlet获得客户端请求。

然后ActionServlet根据请求信息调用匹配的业务逻辑控制器(Action)处理用户请求。

请求处理完成后,业务逻辑处理器调用相应的JSP显示处理结果。

Struts1框架实现了MVC模式,下面我们了解一下Struts1是怎样实现MVC模式的。

Struts1框架中并没有提供Model层的实现。

在实际的企业应用中,通过一个JavaBean 实现一个业务逻辑,在功能比较复杂的应用中也采用EJB或WebService服务实现业务逻辑。

Struts1框架的View层采用JSP实现。

Struts1提供了大量丰富的标签库。

这些标签库与Struts的组件兼容的特别好,可以很容易的输出控制器的处理结果。

Struts1框架中,控制器是它的核心,Struts1的控制器由两部分组成:核心控制器(ActionServlet)和业务逻辑控制器(Action),核心控制器由Struts1框架提供。

业务逻辑控制器需要由用户自己继承Struts1框架提供的Action类实现。

在Struts1框架中,JSP/Servlet耦合非常紧密。

这种紧密关系促使Struts1存在各种缺陷。

下面我们分析一下Struts1中存在的缺陷。

●支持的表现层技术单一●耦合性强,不便于单元测试●代码依赖于Struts1 API,侵入性强2.WebWork简介WebWork出自于开源组织opensymphony,实际的创始人是Java领域的名人Rickard Oberg(JBoss和XDoclet的作者)。

struts2工作原理

struts2工作原理Struts2是一个基于MVC设计模式的开源Web应用框架,它的工作原理是通过一系列的组件和机制来实现对Web应用程序的控制和管理。

在深入了解Struts2工作原理之前,我们先来了解一下MVC设计模式。

MVC是Model-View-Controller的缩写,它是一种软件架构模式,用于将应用程序的逻辑层、数据层和表现层分离开来。

在MVC 模式中,Model代表应用程序的数据和业务逻辑,View代表用户界面,Controller负责处理用户的输入并作出相应的反应。

在Struts2中,请求首先由前端控制器DispatcherServlet接收,DispatcherServlet将请求分发给相应的Action。

Action是Struts2框架中的核心组件,它负责处理用户的请求,并调用相应的业务逻辑处理数据。

在处理完业务逻辑之后,Action将结果返回给DispatcherServlet,DispatcherServlet再将结果渲染到用户界面上。

在Struts2中,配置文件也扮演着非常重要的角色。

通过配置文件,我们可以将请求映射到相应的Action,配置拦截器来处理用户的请求,以及配置全局结果集来统一处理Action的返回结果。

所有这些配置都是通过XML文件或注解来实现的。

另外,拦截器也是Struts2框架中非常重要的组件之一。

拦截器可以在Action执行之前或之后进行一些预处理或后处理操作,比如日志记录、权限验证、异常处理等。

通过配置拦截器栈,我们可以对请求进行统一的处理,提高代码的复用性和可维护性。

除了以上提到的组件和机制,Struts2还提供了丰富的标签库和插件,用于简化开发工作。

标签库可以帮助开发人员快速构建用户界面,而插件则可以扩展框架的功能,满足不同项目的需求。

总的来说,Struts2框架的工作原理可以概括为,前端控制器接收用户请求,将请求分发给相应的Action,Action处理业务逻辑并返回结果,DispatcherServlet将结果渲染到用户界面上。

struts2框架的原理和应用

Struts2框架的原理和应用1. 什么是Struts2框架Struts2是一个基于Java EE的开源Web应用框架,是Struts框架的升级版。

它通过MVC设计模式实现了Web应用开发的分层,将业务逻辑、数据模型和用户界面分离,使得代码更加清晰、易于维护。

2. Struts2框架的原理Struts2框架的原理主要包括以下几个关键点:MVC设计模式Struts2采用了MVC(Model-View-Controller)设计模式,其中:•模型(Model):负责管理应用程序的数据和业务逻辑。

•视图(View):负责显示数据给用户。

•控制器(Controller):负责处理用户输入、调用模型和视图等。

核心组件Struts2框架包含以下核心组件:•拦截器(Interceptor):负责在请求前后进行统一处理,可以用来进行身份验证、日志记录等操作。

•动作(Action):负责处理用户请求,包括接收请求参数、调用业务逻辑方法等。

•结果(Result):负责生成并返回视图,可以是JSP、Freemarker、JSON等。

•值栈(ValueStack):用于存储Action处理过程中的数据,支持OGNL表达式读取和赋值操作。

•配置文件(struts.xml):用于配置拦截器、动作、结果等,实现URL与处理类之间的映射关系。

工作流程Struts2框架的工作流程如下:1.客户端发送请求到Struts2框架的前端控制器(例如:DispatcherFilter)。

2.前端控制器根据请求的URL找到对应的处理类(Action)。

3.前端控制器将请求参数、上下文信息等传递给Action,同时执行拦截器的前置处理逻辑。

4.Action处理用户请求,并根据业务逻辑生成相应的结果。

5.前端控制器将结果传递给结果组件,选择合适的视图进行渲染。

6.前端控制器将渲染后的视图返回给客户端。

3. Struts2框架的应用Struts2框架在Web应用开发中具有广泛的应用,以下是一些主要的应用场景:1. 构建Web应用程序Struts2框架提供了许多构建Web应用程序的工具和技术,包括表单验证、国际化、文件上传等功能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Struts2单文件上传
上传jsp:
Struts2单文件上传
action:
Struts2单文件上传
xml:
案例:SingleUpload.jsp
Struts2多文件上传
jsp:
Struts2多文件上传
action:
Struts2多文件上传
xml:
案例:MultiUpload.jsp
Struts2动态方法调用
案例:globalconverter.CircleAction.java
Struts2的OGNL表达式
1.OGNL表达式语言 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩 写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语 言。 2.访问上下文(Context)中的对象需要使用#符号标注命名空间,如 #application、#session 3.由于ValueStack(值栈)是Struts 2中OGNL的根对象,如果用户需要 访问值栈中的对象,在JSP页面可以直接通过下面的EL表达式访问 ValueStack(值栈)中对象的属性: ${foo} //获得值栈中某个对象的foo属性
struts-default.xml文件
struts-default.xml文件是struts2框架默认加载的配 置文件。它定义struts2一些核心的bean和拦截器。
这些拦截器是以key-value对的形式配置在strutsdefault.xml中,其中name是拦截器名字,就是后面使 用该拦截器的引用点,value则指定拦截器的实现类。
Struts2中为应用指定多个配置文件
2.配置一个名为employee.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd"> <struts> <package name="employee" namespace="/employee" extends="struts-default"> <action name="employee" class="com.qn.struts.HellowAction" method="execute"> <param name="savePath">/employee</param> <result name="success">/index.jsp</result> </action> </package> </struts>
Struts2中为应用指定多个配置文件
3.在struts.xml中通过include进行配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" /> <constant name="struts.multipart.maxSize" value="1000000000"/> <include file="department.xml"></include> <include file="employee.xml"></include> </struts>
STRUTS2框架的工作原理 与架构分析
郭剑峰 2012年11月
Struts2的工作原理
一个请求在Struts2框架中的处理分为以下几 个步骤 1 客户端初始化一个指向Servlet容器(如 Tomcat)请求 2 这个请求经过一系列的过滤器(Filter) 3 接着FilterDispatcher被调用, FilterDispatcher询问ActionMapper来决定这 个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action, FilterDispatcher把请求的处理交给 ActionProxy 5 ActionProxy通过Configuration Manager询 问框架的配置文件,找到需要调用的Action类 6 ActionProxy创建一个ActionInvocation的 实例。 7 ActionInvocation实例使用命名模式来调用, 在调用Action的过程前后,涉及到相关拦截器 (Intercepter)的调用。 8 一旦Action执行完毕,ActionInvocation负 责根据struts.xml中的配置找到对应的返回结 果。返回结果通常是一个需要被表示的JSP或 者FreeMarker的模版。在表示的过程中可以使 用Struts2 框架中继承的标签。在这个过程中 需要涉及到ActionMapper
struts-default.xml :struts2全局配置文件, struts2 框架启动时会自动加载该文件 位置:struts2-core.jar/struts-default.xml 作用:定义bean和一个抽象的包。包中定义了返回类型、 拦截器、拦截器栈、默认的拦截器和默认的Action
Struts2的OGNL表达式
#erName或者#application['userName'], 相当于调用ServletContext的getAttribute("username")。 session对象:用来访问HttpSession,例如 #erName或者#session['userName'],相当于调 用session.getAttribute("userName")。 request对象:用来访问HttpServletRequest属性 (attribute)的Map,例如#erName或者 #request['userName'],相当于调用 request.getAttribute("userName")。 parameters对象:用于访问HTTP的请求参数,例如 #erName或者#parameters['userName'],相 当于调用request.getParameter("username")。
struts.properties文件
作用:覆盖系统配置信息 struts.custom.i18n.resources=globalMessages 国际 化文件的前缀名配置 struts.ui.theme=simple 使用struts2的simple模板生 成html代码 struts.ui.templateDir=template Struts2的模板目录 是通过struts.ui.templateDir常量来指定的,该常量的 默认值是template,即意味着Struts2会从Web应用的 template目录 struts.ui.templateSuffix=ftl 去除struts2 标签中的 自动生成的布局样式 struts.multipart.saveDir=/tmp 设置struts2 的临时 文件上传路径 struts.multipart.maxSize=1000000000 struts2 修改 文件上传大小限制
Struts.xml:
Struts2动态方法调用
action:
Struts2动态方法调用
action:
案例:DynamicAction.action
Struts2使用通配符定义action
xml:
Struts2使用通配符定义action
action:
案例:WildcardAction.java
Struts2的架构分析
Struts2框架也是由两部分组成:XWork2和Struts2。 XWork是一个命令模式框架,它是Struts2的基础。 XWork提供了很多核心功能: IoC(Inversion of control,控制反转)容器, 强大的表达式语言 (OGNL:Object Graph Navigation Language-----对象图像导航语言) 数据类型转换, 验证和可插入的配置。 XWork框架的核心概念包括action,拦截器(inerceptor) 和result.
Struts2局部自定义类型转换器
Struts2局部自定义类型转换器
Struts2局部自定义类型转换器
相关文档
最新文档