Struts2及Hibernate学习(二)

昨天晚上已经学习了如何配置struts配置文件以及写一个简单的struts案例,可以参考下:Struts2及Hibernate学习(一)

今天就学习一下昨晚写的小案例执行时struts配置文件内部的执行顺序。

一、首先我们用一张图来看看struts2应用的执行过程:


启动tomcat,启动的同时加载web.xml文件,然后实例化并初始化web.xml文件中配置的struts2过滤器,即StrutsPrepareAndExecuteFilter类,然后加载struts.xml配置文件。对应着图中的前3步,都是在启动tomcat的过程中完成的。

tomcat启动成功后,在浏览器发送请求: hello.action,请求首先到达过滤器,过滤器截取请求的动作名称hello,并从struts.xml中找对应的action,找到后实例化action对应的动作类,即HelloAction,调用动作类的对应的动作方法,方法有返回值,即对应的jsp文件名称,根据返回值,找到对应action中的结果视图,即jsp页面,然后返回给浏览器,展示结果。

  二、再研究一下struts2配置文件的执行顺序。

我们创建一个和昨天一样的案例,代码可以参考昨天的。好了之后启动服务并访问一下。

        

下面来探讨下struts2配置文件的执行顺序

1、struts2配置文件的加载顺序


注意:

        1.1Struts2提供了两种配置的方式。一种是key=value的方式,即使用.properties文件。另一种是xml文件配置。我们推荐使用xml文件(它能描述层级关系)。

        1.2、当多个配置文件中,有相同的参数,后面的会把前面的值给覆盖了。

 2、struts2的常用的常量,都在default.properties配置文件中。(下面的几步都用到了这些常量)


 3、看看struts2的配置文件执行的顺序。(此部分要参考上面第二部分的常用常量)

    3.1、先设置一下struts应用为开发模式,这样修改了配置文件后就不需要重启服务。

    

    3.2、struts.xml文件中修改访问后缀名为do。

    

    此时不用重启服务,因为3.1已经设置了开发模式,直接访问即可。

   先看一下index.jsp文件


      现在浏览器进行访问(此时已经修改了默认的访问后缀名,是.do, 不是.action了),结果为:


可以看到,我们在struts.xml文件里面修改了访问后缀名之后,再次访问原来设置的.action结尾的链接地址就无效了,可以看出来struts2的配置文件是struts.xml后于default.properties,在struts.xml文件中设置的访问后缀名.do覆盖了前面执行的default.properties文件中的默认的访问后缀名.action。

接着我们在index.jsp文件中增加以.do结尾的链接地址。


访问一下看看:


可以看出,只有.do结尾的链接路径访问成功。

  3.3、新增一个文件,struts.properties,内容也是修改访问后缀。

 

启动服务,访问一下看,:


可以看出来,在struts.properties文件中增加的修改访问路径后缀也生效了,将struts.xml中设置的访问路径给替换掉了。即struts.properties配置文件的执行后于strtus.xml配置文件以及default.properties配置文件的执行。

现在我们在index.jsp中新增一个以.abc结尾的访问链接。


访问一下看看:


3.4、接下来修改web.xml配置文件,同样是修改访问路径后缀名



修改完之后可以像上面几步那样执行访问一下看,肯定是访问不了的。

然后我们在jsp中增加一个.abcd结尾的访问链接地址。


然后再访问看看,.abcd结尾的链接是可以访问的。


以上所有就是证明了struts2配置文件的执行顺序:

default.properties-->strtus-default.xml-->struts-plugin.xml-->struts.xml-->strtus.properties-->web.xml

红色的三个文件是struts2相关jar包中的,后三个是我们自己写的。


好了  今天就到这里,得收拾收拾去同学家吃饭了。明天继续!



本文为原创,如有转载,请注明出处。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值