-
动态方法调用: 动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。 三种方式:指定method属性、感叹号方式、通配符方式 1:<action name="add" method="add" class="com.Action.hellowAction"> 2:<constant name="struts.enable.DynamicMethodInvocation" value="false"> </constant> <action name="hellowword" class="com.Action.hellowAction"> <result >/result.jsp</result> <result name="add">/add.jsp</result> <result name="update">/update.jsp</result> </action> http://localhost:8080/struts_hellowworld/aaa/hellowworld!.action 3: <action name="*_*" method="{2}" class="com.Action.{1}Action"> <result >/{2}.jsp</result> <result name="add">/{2}.jsp</result> <result name="update">/{2}.jsp</result> </action> http://localhost:8080/struts_hellowworld/aaa/hellow_add.action查看全部
-
Action 搜索顺序查看全部
-
解析struts.xml——(下): 6、<action> <!-- Action配置:一个Action可以被多次映射(只要action配置中的name不同) name:action名称,如(假设namespace="/"):http://localhost:8080/项目名/<action>中属性name值.action class:对应的类的路径 method:调用Action中的方法名 Ps:每个package包里可以定义多个action --> <action name="" class="" method="" converter=""> <!-- 引用拦截器:name:拦截器名称或拦截器栈名称 --> <interceptor-ref name=""></interceptor-ref> <!-- 节点配置:name:result名称,和Action中返回的值相同(如果不写name,默认SUCCESS或"success"); type:result类型,不写则选用superpackage的type struts-default.xml中的默认为dispatcher --> <result name="" type="">/xxx.jsp</result> <!-- 参数设置:name:对应Action中的get/set方法 --> <param name="">值</param> </action> 7、<constant> <!-- struts.properties文件中的语句:struts.i18n.reload=true,则对应struts.xml文件中语法如下 --> <constant name="struts.i18n.reload" value="true"></constant>查看全部
-
解析struts.xml——(上): 1、.dtd就是约束struts.xml中可以有哪些标签不能有哪些标签。 2、<include> <!-- 可以通过 <include file="">包含其他文件,include节点是struts2中组件化的方式,可以将每个功能模块独立到一个xml配置文件中,然后用Include节点引用 --> <include file="struts-default.xml"></include> 3、<package> package提供了将多个Action组织成为一个模块的方式。 package的名字必须是唯一的(配置文件中可以有多个包,但包名要唯一),可以在这个包上加一些拓展的包。 abstract设置package的属性为抽象,抽象的package不能定义action的值,ture或false。 namespace="/test":http://localhost:8080/项目名/test/xx.action namespace="/":http://localhost:8080/项目名/xx.action <package name="包名" extends="继承的父类的名称" namespace="包的命名空间"> 4、拦截器 <interceptors> <!-- 拦截器定义name(名称)和class(类路径) --> <interceptor name="" class=""></interceptor> <!-- 定义拦截器栈 --> <interceptor-stack name=""> <interceptor-ref name=""></interceptor-ref> </interceptor-stack> </interceptors> <!-- 定义默认的拦截器,每个Action都会自动引用。如果Action中引用了其他的拦截器,默认的拦截器将无效 --> <default-interceptor-ref name=""></default-interceptor-ref> 5、<global-results> <!-- 全局results配置 --> <global-results> <result name="">/xxx.jsp</result> </global-results>查看全部
-
#制定默认编码集,对于请求参数带有中文的情况应该设置成gbk.gb2312,默认值utf-8 1.struts.i18n.encoding=utf-8 #是否每次HTTP请求到达时,都重新加载国际化资源文件,默认为false 2.struts.i18n.reload = true #但struts.xml改动后,是否重新加载该文件,在开发阶段建议设置成true,提高开发效率,默认为false 3.struts.configuration.xml.reload=true #是否使用struts2的开发模式,可以获得更多报错信息,便于调试,在开发阶段设置为true,默认为false 4.struts.devMode =true #设置浏览器是否缓存静态页面,开发阶段设置为false,以获得服务器最新响应,默认为true 5.struts.serve.static.browserCache=true #指定后缀为.action形式的请求可以被struts2处理,可配置多个请求后缀,比如.do,struts等,配置多个后缀名用逗号隔开 6.struts.action.extendsion=action,do,struts2, #配置服务器运行时的端口号,一般情况下该属性不用修改,如果端口号占用则重新分配端口号,默认为80 7.struts.url.http.port = 8080查看全部
-
struts.properties查看全部
-
struts.xml的作用查看全部
-
web.xml查看全部
-
用户的请求HttpServletRequest--->过滤器filter--->ActionMapper(.action)请求---->过滤器---->ActionProxy---->通过ConfigurationManager读取struts.xml中的ActionInvocation具体的Action类---->通过ActionProxy创建Action反向实例---->拦截器--->action,返回result(字符串对象)对应的视图---->拦截器---->HttpServletResponse返回请求查看全部
-
(别人博客上copy的) 上图来源于Struts2官方站点,是Struts 2 的整体结构。 一个请求在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 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 在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。查看全部
-
StrutsPrepareAndExecuteFilter 代替2.0、2.1版本的核心过滤器StrutsFilter的原因是它不止可以在Struts顶头配置,还可以在Action执行之前设置进行过滤。strut2工作原理 请求通过过滤器,如果请求中含有.action的后缀,则传给actionmapper进行处理查看是否有相应的action请求,再返回给过滤器,过滤器传给actionproxy代理,actionproxy通过config查找Struts.xml文件里面是否含有对应的action,通过一系列的拦截器后执行Action,对请求进行处理,然后返回字符串result找到对应视图(jsp等),再返回给response查看全部
-
一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求; 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。FilterDispatcher的功能如下: (1)执行Actions (2)清除ActionContext (3)维护静态内容 (4)清除request生命周期内的XWork的interceptors 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.导入Struts常用的jar包 2.buildpath引用导入的包 3.xml中创建过滤器 <filter> <filter-name>name</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> 映射 <filter-mapping> <filter-name>name</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 4.创建Struts中的核心文件 New-other-XML文件-Struts.xml,并写入: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> </struts> 5.创建action(这个类要继承ActionSupport),这个类主体中调用继承/接口execute()方法,这个方法返回success; 6.配置Struts文件中的映射 <struts> <package name="default" namespace="/" extends="struts-default"> <action name=" " class="src中action类的地址"> <result>/result.jsp</result> </action> </package> </struts> 配返回这个result.jsp页面查看全部
-
MVC流程图查看全部
-
MVC查看全部
举报
0/150
提交
取消