J2EE框架——struts.xml配置
来源:互联网 发布:java输出语句换行符 编辑:程序博客网 时间:2024/06/06 15:55
Struts2绝大多数的配置都是在struts.xml中完成的。小伙伴们在学习中会有遇到xml不熟悉导致配置文件不知从何下手的感觉,小可在此给大家详述struts.xml的配置方法
一.Action配置
Action是struts2的工作单元。配置一个基本的Action需要两个信息:Action名字和对应的Action类。属性”method”用来告诉Struts2调用Action的哪个方法。在Action处理之后需要展示处理结构给用户,所以还需要把Action和Result映射在一起:
/**action配置*/<action name="helloWorld" class="example.HelloWorld" method="doWork"> <result name="failure" path="Error.jsp" /> <result name="ok" path="HelloWorld.jsp" /></action>
几种默认配置:
(1)没有class定义,默认使用com.opensymphony.xwork.ActionSupport类,有一个execute()方法,返回”success”
(2)method为空,默认调用Action类的execute()方法。如果没有该方法则抛出异常
(3)没有第一个result的属性,默认为”success”
二.Result配置
Struts2定义一些默认Result:error、input、login、none、success
小伙伴们也可以自定义结果,以“名字 - 值”的形式映射到结果类型。Result嵌套在标签里,如果location参数是唯一的参数,可以:
/**添加参数*/<action name="bar" class="myPackage.barAction"> <result name="success" type="dispatcher"> <param name="location">foo.jsp</param> </result></action>
如果没有param参数,可以:
<action name="bar" class="myPackage.barAction"> <result name="success" type="dispatcher">foo.jsp </result></action>
如果没有type属性,默认为dispatcher类型
使用全局Result映射是减少struts.xml配置内容的另一种好方法。在Action中使用一组通用的Result,可以把这些通用的Result的定义集中起来,而不需要每个Action重复定义:
/**全局result配置*/<package name="default">.... <global-results> <result name="login" type="dispatcher"> <param name="location">login.jsp</param> </result> </global-results> <action name="foo" class="mypackage.fooAction"> <result name="success" type="dispatcher">bar.jsp</result> </action> <action name="submitForm" class="mypackage.submitFormAction"> <result name="success" type="dispatcher">submitSuccess.jsp</result> </action> ...</package>
三.拦截器(Interceptor)配置
Interceptor是能在一个Action执行的前后执行的代码,功能有安全检查,跟踪日志等,也可以把Interceptor连接成栈,但必须先定义好:
/**Interceptor配置*/<interceptors> <interceptor name="security" class="com.mycompany.security.SecurityInterceptor" /> <interceptor-stack name="defaultComponnentStack"> <interceptor-ref name="component" /> <interceptor-ref name="defaultStack" /> </interceptor-stack></interceptors>/**action中这样使用*/<action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter"> <result name="success">...</result> <interceptor-ref name="defaultComponentStack" /> /**引用名既可以是拦截器名也可以是栈名,没区别*/</action>
四.包配置
包配置就是把actions,results,types和interceptors打包到一个逻辑单元中,更像是一个对象。name是必填属性,extends和abstract可选
/**扩展default包*/<package name="example" namespace="/example" extends="struts-default"> <action name="HelloWorld" class="example.HelloWorld"> <result>/example/HelloWorld.jsp</result> </action> <action name="Login" method="login" class="example.Login"> <result name="input">/example/Login.jsp</result> <result type="redirect-action">Menu</result> </action> <action name="*" class="example.ExampleSupport"> <result>/example/blank.jsp</result> </action></package>
五.命名空间配置
命名空间允许把Action配置分成不同的命名空间,可以是功能不同Action中使用相同的名字。Struts2中以”/”命名的根命名空间,是请求直接来自应用程序根路径的时候的命名空间,默认寻找:
/**命名空间为空*/<package name=""default> <action name="foo" class="mypackage.simpleAction"> <result name="success" type="dispatcher">greeting.jsp</result> </action> <action name="bar" class="mypackage.simpleAction"> <result name="success" type="dispatcher">bar1.jsp</result> </action></package>
/**命名空间为"/"*/<package name="mypackage1" namespace="/"> <action name="mybackage1" class="mypackage.simpleAction"> <result name="success" type="dispatcher">moo.jsp</result> </action></package>
`/**命名空间为"barspace"*/<package name="mypackage2" namespace="/barspace"> <action name="bar" class="mypackage.simpleAction"> <result name="success" type="dispatcher">bar2.jsp</result> </action></package>
流程:
(1)如果请求为/barspace/bar.action,系统首先查找/barspace命名空间,如果找到bar Action便执行,如果没有继续到默认命名空间查找
(2)请求为barspace/foo.action,系统会在/barspace中找foo这个action,如果找不到,则到默认中查找,例子中会在默认中找到foo
(3)请求为/moo.action,系统在根空间找到moo
(4)请求为/foo.action,先找根再找默认
六.struts.xml中定义JavaBean
定义JavaBean:
<struts> <bean type="com.opensymphony.xwork2.ObjectFactory" name="myfactory" class="com.company.myapp.MyObjectFactory" /></struts>
这里使用反转控制概念Ioc,也称为依赖注入。反转控制用来处理对象间的依赖关系而出现的。但一般使用Spring作为IoC容器
七.使用通配符
在配置Action Mapping数量很多的时候,通配符是一个好方法,将一些相似的Mapping绑在一起,路径用*来代替变化的部分,而Action的处理类和Jsp中{1}刚好是代替这个变量
<action name="/edit*" class="example.Edit{1}Action"> <result name="failure" path="/mainMenu.jsp" /> <result name="ok" path="/\{1\}.jsp" /></action>
以上代码URI:editSubscription、editRegistration都将复合条件匹配到这个Action配置,被代替的是Action映射中的变量属性和Action结果替换{1}。比如/editSubscription将对应的Action处理类是example.EditSubscriptionAction,result的jsp是Subscription.jsp
- J2EE框架——struts.xml配置
- J2EE(02) struts-config.xml 配置说明
- 最全三大框架整合(使用映射)——struts.xml和web.xml配置
- Struts2——struts.xml常用配置
- struts2—核心配置struts.xml
- Struts框架中struts-config.xml文件配置小结
- J2EE笔记——Struts
- J2EE——XML
- 【J2EE】struts 2框架搭建
- STRUTS框架(web.xml,struts.xml,XXXvalidation.xml配置信息)个人心得
- J2ee框架配置
- myeclipse使用struts2框架,struts.xml怎么配置
- Struts框架刷新验证之基于xml配置方式
- J2EE系列之Struts2学习笔记(七)--struts.xml配置
- J2EE系列之Struts2学习笔记(八)--struts.xml分模块配置
- J2EE系列之Struts2学习笔记(九)--使用通配符配置struts.xml文件
- Struts2笔记——struts.xml配置详解
- 004——struts2的struts.xml配置
- RT-Thread内核之线程调度(三)
- nginx的 CPU参数worker_processes和worker_cpu_affinity使用说明
- Python Paste.deploy 笔记
- 用Apache Kafka构建流数据平台
- IOS初级:UIScrollView & UIPageControl
- J2EE框架——struts.xml配置
- 【opencv】opencv之头文件分析【转】
- Guava集合
- [模板]合数分解
- SQL中WHERE子句中的连接顺序
- 利用JS实现简单的瀑布流效果
- oracle logminer初步学习与使用
- 使用java中replaceAll方法替换字符串中的反斜杠
- JVM-verbose参数详解