struts2核心配置文件

转载地址: https://blog.csdn.net/bbb695480667/article/details/56496285

struts2的核心配置文件为struts.xml,一般放在src目录下。struts2配置使用包来管理Action。包的作用与java中包的作用相似,用于管理一组业务功能相关的Action。在实际应用中,应将一组业务功能相关的Action放在同一个包下。

注意:struts.xml中的包与Action类所在的包无关。

一<package/>标签

(1)name属性

        配置包时必须指定name属性,该属性可以任意取值,但是必须唯一。其与java的类包间无对应关系。若其它包要继承该包,则必须通过该属性进行引用。

(2)namespace属性

        包的namespace属性用于定义该包的命名空间。命名空间是访问该包下Action的路径的一部门。此属性是必须的,且不能为空。但命名空间可以为“/”。

(3)extends属性

        通常情况下,包需要继承struts-default包。因为struts2的11个返回类型,35个拦截器,默认拦截器栈等struts2的主要功能,都定义在这个包中,继承了这个包,也就拥有了这些功能。struts-default包定义在struts-default.xml中。

(4)abstract属性

        包还可以通过abstract="true"定义为抽象包。抽象包中是不能包含Action的。抽象包一般就是用于被继承的。struts-default包即为抽象包。

二<action/>标签

(1)name属性

        在struts2中,访问struts2中的action的URL路径由两部分组成:包的命名空间+action的name属性值。

(2)method属性

        Action标签有一个属性method,该属性用于指定所要执行的Action类的哪个Action方法。若没有指定该属性,则默认值为"execute",即执行指定Action类的execute方法。

(3)class属性

        class属性用于指定该Action所要执行的Action类。其有三种写法:

                A.直接写要执行的类的全限定类名。

                B.在SSH中,Action交由Spring容器管理,此时class属性要设置为一个伪类名。

                C.class属性缺省。对于class属性缺省情况是指,若用户提交某个请求后,不需要经过某个Action类的处理,而是直接要转向某个视图页面,如简单的页面间的超链接,则可以采用缺省的方式。因为在class缺省的情况下,会默认执行ActionSupport类。为什么会默认执行这个类呢?是因为在Struts-default包中通过<default-class-ref/>指定了默认执行的类。该类有个有个execute()方法,其返回值为常量SUCCESS,即字符串"success"。

三<result/>标签

(1)name属性

        result标签用于指定Action执行完毕后所要转向的视图资源,其name属性指定该视图的名称,如果name属性缺省,默认值为字符串常量"success"。

(2)type属性

        struts2中共提供了11中视图转向类型,类型由result标签的type属性指定,type属性的值在struts-default.xml中可以查看到。需要注意到,在dispatcher后设置的default为true。即默认为dispatcher。

        注意:对于请求转发的页面,可以是web-inf中的页面,而重定向的页面,是不能为web-inf中的页面的,因为重定义相当于用户再次发出一次请求,而用户是不能直接访问web-inf中的资源的。

        下面重点介绍以下四种转向方式。      

 A.dispatcher转发

        该转向类型用于完成请求转发的功能,即为服务器内跳转,请求转发是可以将请求参数传递给要转发的下一级页面的。dispatcher为默认的转向类型。      

代码示例

请求页面

 
  1. <body>

  2. <form action="login" method="post">

  3. name:<input type="text" name="name"/><br>

  4. age:<input type="text" name="age"/><br>

  5. <input type="submit" value="提交"/><br>

  6. </form>

  7. </body>

Action

 
  1. package cn.ccnu.actions;

  2.  
  3. public class LoginAction {

  4. private String name;

  5. private int age;

  6.  
  7. public String getName() {

  8. return name;

  9. }

  10. public void setName(String name) {

  11. this.name = name;

  12. }

  13. public int getAge() {

  14. return age;

  15. }

  16. public void setAge(int age) {

  17. this.age = age;

  18. }

  19.  
  20. public String execute(){

  21. return "success";

  22. }

  23. }

struts.xml

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="dispatcher">/welcome.jsp</result>

  5. </action>

  6. </package>

  7. </struts>

结果页面

 
  1. <body>

  2. name = ${name } <br>

  3. age = ${age }

  4. </body>

执行结果

B.redirect跳转

        该转向类型用于完成请求重定向的功能。因此,redirect是无法将Action中属性值传递给要转向的下一个页面的。

例如,如果将上面示例中type值改为redirect,则发现其结果为:

        说明redirect无法将Action中属性值传递给要转向的下一个页面得。

        要想实现参数值可以转向下一个页面可以使用<param/>方法。

将struts.xml该成如下

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="redirect">

  5. <param name="location">/welcome.jsp</param>

  6. <param name="name">${name }</param>

  7. <param name="age">${age }</param>

  8. </result>

  9. </action>

  10. </package>

  11. </struts>

结果页面改为:

 
  1. <body>

  2. uname = ${param.name } <br>

  3. age = ${param.age }

  4. </body>

还可以charset设置字符集:

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="redirect">

  5. <param name="location">/welcome.jsp</param>

  6. <param name="name">${name }</param>

  7. <param name="age">${age }</param>

  8. <param name="charset">utf-8</param>

  9. </result>

  10. </action>

  11. </package>

  12. </struts>

C.redirectAction跳转

        该转向类型专门用于重定向到Action。当然,Action中的属性值是无法传递到下一个Action中的。不过请注意,redirect在不使用<param/>方式时,也是可以重定向到Action的。

核心代码

struts.xml文件

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="redirectAction">second</result>

  5. </action>

  6.  
  7. <action name="second" class="cn.ccnu.actions.SecondAction">

  8. <result name="success">/welcomeSecond.jsp</result>

  9. </action>

  10. </package>

  11. </struts>

对于重定向到Action,还可以使用<param/>来设定转向的Action,并且将参数值传到下一个Action。

核心代码:

struts.xml文件

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="redirectAction">

  5. <param name="actionName">second</param>

  6. <param name="username">${username}</param>

  7. <param name="password">${password}</param>

  8. </result>

  9. </action>

  10.  
  11. <action name="second" class="cn.ccnu.actions.SecondAction">

  12. <result name="success">/welcomeSecond.jsp</result>

  13. </action>

  14. </package>

  15. </struts>

Dchain跳转

用于将请求转发到Action。Request中的参数可以传递到下一个Action中。

核心代码:

struts.xml文件

 
  1. <struts>

  2. <package name="default" namespace="/" extends="struts-default">

  3. <action name="login" class="cn.ccnu.actions.LoginAction">

  4. <result name="success" type="chain">second</result>

  5. </action>

  6.  
  7. <action name="second" class="cn.ccnu.actions.SecondAction">

  8. <result name="success">/welcomeSecond.jsp</result>

  9. </action>

  10. </package>

  11. </struts>

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bbb695480667/article/details/56496285

文章标签: struts2核心配置文件

个人分类: struts2

相关热词: struts2与 struts2和 struts2书 struts2图 struts2值

猜你喜欢

转载自blog.csdn.net/m0_38053538/article/details/81319567