Struts2框架的XML配置详解

1.1.1.1 配置Struts2的前端控制器(核心过滤器)

在工程的web.xml中配置:

  <!-- 配置Struts2的核心过滤器 -->

  <?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

 

<filter>

<filter-name> struts2 </filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>    //表示所有都通配

</filter-mapping>

 

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

1.1.1  Struts.xml 配置文件   ( 设置开发者模 )

     开启开发者模式

  <constant name="struts.devMode" value="true"></constant>

 

 

1.1.2 Struts2的配置文件 (  指定URL后缀 拦截 ):

 

顺序

配置文件名

所在位置

说明

1

default.properties

struts2-core-2.3.15.3.jar\org\apache\struts2

不能修改

2

struts-default.xml

struts2-core-2.3.15.3.jar

不能修改

3

strtuts-plugin.xml

struts2提供的插件jar包中

不能修改

4

struts.xml

我们的应用中

我们修改的:推荐

5

struts.properties

我们的应用中

我们修改的

6

web.xml

我们的应用中

我们修改的,可以给过滤器配置参数

 

 

struts.xml :   修改访问URL后缀    例如修改的后缀为 .do

       涉及的标签:

<constant  

 

name"struts.action.extension"   value="do">      

 

</constant>                        

 

 

 

Struts.properties : 修改访问URL后缀

   Struts.action.extension = do

 

Web.xml :    修改访问URL后缀

<init-param  >

     <param-name>struts.action.extension</param-name>

     <param-value> do </param-value>

    </init-param    >

    

注意:  从上到下  后修改的配置文件, 会覆盖前面的文件,这由于加载顺序决定的

 

 

1.1.4 Struts.xml 配置文件 (  package   标签  )

作用: action的配置定义到用一个包里面,把配置文件按照面向对象的思想来管理

属性:

    name:指定包的名称。必须写。必须唯一。

    extends指定当前包的父包。子包自动具备父包定义的配置。这是面向对象思想的一种体现。我们自己配置文件中的包,一般都会继承struts-default这个 包。

如果不继承该包,则不能使用struts2的核心功能。struts-default包在struts-default.xml中定义着。该文件是struts2核心jar包中的配置文件。

 abstract把当前包声明为抽象包。抽象包一般都是用来被继承的。抽象包中可以定义写公共的配置。

      只有没有action标签的包,才能声明为抽象包。

namespace:指定当前包的名称空间。把访问URL按照模块化来管理。当我们使用了名称空间之后,访问URL就变成了:

   URL =   名称空间 + action标签name属性的取值

   例如:URL= /user/hello

   名称空间的写法:

   必须是以:/开头,后面只能跟字母和数字的组合。但是必须以字母开头

   名称空间有默认值:

   默认值是:""    不写默认就是空字符串 ,一般不写

 

 

 

<struts>

<package   name ="p1"    extends="struts-default"    namespace="/n1">

   <action   name="hello"   class="com.itheima.web.action.HelloAction"    method="sayHello">

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

</action>

</package>

 

<struts>

 

 

 

action标签:

作用:动作名称和动作类已经动作方法的对应关系。

属性:

name指定的是动作名称。必须唯一。    默认的动作类是:com.opensymphony.xwork2.ActionSupport    是在struts-default.xml中定义的

( 也就是说不写默认就是这个)

 

 

 

  class 指定的是动作类的全限定类名。

 method指定的是动作方法名称。  动作类中的方法名称。默认是public String execute(){}   ( 也就是说不写默认就是这个)

要求:

1.public

2.返回值必须是String

3.没有参数

 

创建动作类的三种方式:

第一种方式:

1.无侵入式创建动作类。

例如:HelloAction

实际开发中不常用。

第二种方式:

2.实现接口的方式。实现Action接口。

例如:Hello2Action

Action接口中的常量:

SUCCESS:一般多用于成功。

ERROR:一般多用于动作方法执行时产生异常,前往错误页面

NONE:不返回任何结果视图时用此值。它也等同于return null;

INPUT:一般多用于数据回显。例如表单提交时,当有数据类型转换失败后,都会前往input视图。

LOGIN:一般多用于前往登录页面

默认动作方法:

execute();当执行此方法时,可以不指定method属性。

实际开发中不常用

第三种方式:

3.继承接口的实现类方式。继承ActionSupport

例如:Hello3Action

默认动作类:

ActionSupport

实际开发中采用的方式。以后我们的动作类都要求继承该类。    实际开发中采用的方式。以后我们的动作类都要求继承该类。

 

1.无侵入式的创建方式

public class HelloAction {

//我们的第一个动作方法:它的作用就是用于接收客户浏览器的请求,并响应

public String sayHello(){

System.out.println("HelloAction中的sayHello方法执行了"+this);

return "success";

}

}

 

2实现Action接口

Public   class  Hello2Action implements   Action {

 

@Override

public String execute() throws Exception {

System.out.println("Hello2Actionexecute方法执行了123abc。。。。。");

return SUCCESS;

}

}

 

3.继承接口的实现类方式。继承ActionSupport

 

public class Hello3Action extends ActionSupport {

 

public String execute() throws Exception {

System.out.println("Hello3Actionexecute方法执行了aaaaa。。。。。");

return SUCCESS;

}

 

}

 

 result标签:

作用:配置逻辑结果视图。

逻辑结果视图:它指的不是一个真正的jsp页面,而指的是当动作方法返回值和result标签name属性取值一致时,前往指定的页面。

属性:

name:指定的就是和动作方法返回值一样时,前往哪个页面。要求和动作方法返回值保持一致。

type:指定采用何种方式前往该页面

常用取值:

dispatcher:请求转发。默认值。

redirect:重定向。一般多用于重定向到指定的jsp,不用于重定向到另外的动作

转发和重定向的区别:

转发:服务器行为,一次请求,地址栏不变,请求域中数据不会丢失

重定向:浏览器行为,两次请求,地址栏改变,请求域中的数据会丢失。

redirectAction:重定向到指定的动作名称。

标签体中的内容:

指定前往哪个页面。

 

如下所示:

 

<package name="p1" extends="struts-default">

<action name="hello" class="com.itheima.web.action.HelloAction"  method="sayHello">

<result  name="success"  > mydefault </result> 

</action>

 <action name="mydefault"   >

<result name="success"   type="redirect"></result>

</action>  

</package>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值