-
struts.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.HelloWorldAction"> <result>/result.jsp</result> </action> </package> </struts>查看全部
-
web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>查看全部
-
一 工作原理 在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher核心过滤器(2.0-2.1.2版本)被调用,【StrutsPrepareAndExecuteFilter(2.1.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中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 二 工作流程 1、客户端浏览器发出HTTP请求. 2、根据web.xml配置,该请求被FilterDispatcher接收 3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面 6、返回HTTP响应到客户端浏览器查看全部
-
result查看全部
-
struts2处理流程查看全部
-
action搜索顺序查看全部
-
要重看查看全部
-
可重看查看全部
-
1.执行一遍intercept,执行action,执行视图文件(.jsp等),再执行一遍intercept,然后返回给用户 2.再看一遍查看全部
-
要重看查看全部
-
123查看全部
-
方面: 1.访问Servlet API 2.Action搜索顺序 3.动态方法调用 4.制定多个配置文件 5.默认action 6.Struts2后缀 7.接受参数 8.处理结果类型 1.访问Servlet API HttpServletRequest HttpServletResponse(Struts2不存在) struts2提供了三种方式: 1.ActionContext 2.实现***Aware接口 3.ServletActionContext 2.Action搜索顺序 http://localhost:8080/struts2/path1/path2/path3/student.action 1.判断package是否存在,如:path1/path2/path3/ 2.(package存在)判断action是否存在,如果不存在则去默认namespace的package里面寻找action 3.如果没有,则报错 2.(package不存在)检查上一级路径的package是否存在(知道默认namespace),重复第一步 3.如果没有,则报错 3.动态方法调用 为了解决一个Action对应多个请求的处理,以免Action太多 1.制定method属性(少用)method="" 2.感叹号方式(不推荐)xxx!add.action 3.通配符方式(推荐使用)*_*和{1}{2} 4.指定多个配置文件 1.<include file="模块.xml"></include> 5.默认action 当用户输入的地址找不到对应的action,那么默认action就起作用了 <package> <default-action-ref name="action名称" /> <action name="" class=""> </action> </package>查看全部
-
(1)在result里面最重要的属性是type类型,type的默认值为dispatcher(转发),这个类型支持JSP视图技术。 (2)Struts2支持多种视图技术,例如JSP、Valocity(模板引擎)、FreeMaker(模板引擎)等。 (3)常用三个:chain,redirect,plaintext。 1、chain:将action和另外一个action链接起来。 2、redirect:重定向(会丢失请求参数)。 3、plaintext:返回网页源代码。 4、stream:返回inputstream用于文件下载。查看全部
-
处理结果类型-result标签下还有param标签: 1)location:该属性定义了该视图对应的实际视图资源 2)parse:该参数指定是否可以再实际视图名字中使用OGNL表达式,默认值为TRUE,支持OGNL(Object-Graph Navigation Language)表达式 ognl表达式可以在jsp页面去写,也可以在struts2页面中去写,在实际开发中是不常用的,默认情况下ognl是允许的,是打开状态 <param name="parse">true</param> <param name="location">...地址</param> ognl表达式使用:<param name="location">/${#request.path}.jsp</param> 在action类中对应的方法中写request.setAttribute("path","返回的jsp页面名称");查看全部
-
处理结果的两种类型: 1.局部结果:作为action子元素配置 2.全局结果:作为global-result元素的子元素配置。查看全部
举报
0/150
提交
取消