Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置

上篇中谈到了Struts需要以下基础jar包,这里粗略补充一下各个jar包的作用:

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第1张图片


一、Struts2的访问流程及架构

1.1Struts2访问流程

此图仅仅帮助理解Struts2访问流程

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第2张图片



1.2Struts2架构

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第3张图片

Struts核心——拦截器

1.表面上看,拦截器帮助我们封装了很多功能。

2.拦截器优秀的设计——可插拔式设计。

3.aop(面向切面编程)思想。

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第4张图片


二、struts.xml配置

下面是struts.xml中的部分配置:


    
    
        
            /index.jsp
        
    

2.1 package元素

     将Action配置封装,就是可以在package中配置很多action。(和Java中的package不能混为一谈)

属性:

《1》name:给包起个名字,起标识作用,随便起,不能与其他包同名。

《2》namespace:给action的访问路径中定义一个命名空间。

《3》extends:继承一个指定包(必选)。

《4》abstract:包是否为抽象的,标识性属性,标识该包不能独立运行,专门被继承。


2.2  action元素

    配置Action类。

属性:

《1》name:设定了Action访问资源名。

《2》class:Action的完整类名。

《3》method:指定调用Action中的哪个方法处理请求。


2.3  result属性

     结果配置。

属性:

《1》name:标志结果处理的名称,与action方法的返回值对应。

《2》type:指定调用哪一个Result类来处理结果,默认使用转发。

《3》标签体:填写页面的相对路径


三、Struts2常量配置

3.1 修改Struts2常量配置

Struts2默认常量配置位置:

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第5张图片

打开default.properties,可以看到如下的一些常量配置信息:

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第6张图片

想要修改这些配置信息,有如下三种方式:


《1》struts.xml中配置(重点):在struts标签下添加标签。如下:    

《2》在src下新建一个struts.properties文件(了解):把需要修改的配置信息复制粘贴过来,修改。如下:    struts.i18n.encoding=GBK

《3》web.xml中配置(了解):在标签下添加标签。具体如下:


    struts.i18n.encoding
    GBK

注:上述写的《1》《2》《3》顺序也是它们的加载顺序,后面加载的会覆盖前面加载的。

      不过在真正的开发中只会在struts.xml配置即第《1》种。


3.2常量配置

《1》struts.i18n.encoding=UTF-8(国际化)——解决Post提交乱码

《2》struts.action.extension=action,,(指定访问action的后缀名)

《3》struts.devMode = false(指定Struts2 是否以开发模式运行,默认为false)

        为true时:1.热加载主配置文件(不需要重启struts.xml即可生效)

                        2.提供更多的错误提示信息,方便开发时的调试


3.3使用元素引入其他struts配置文件

例,在src下的struts.xml中引入com.zl.action包中的struts.xml:


四、Struts2配置的进阶

4.1 动态方法调用(重点)

左图BookAction中有四种方法,根据用户不同的选择,这四种方法每一个方法都需要在struts.xml里注册一个action元素(右图),过于繁琐。在这种情况下,可以使用动态方法来配置。

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第7张图片      Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第8张图片


有以下两种配置方法:

《1》在struts.xml中设置常量struts.enable.DynamicMethodInvocation的值为true

Java EE SSH框架之Struts2 (2)—— Struts2访问流程、架构及配置_第9张图片

该常量表示配置动态方法调用是否开启,默认是关闭的,需要开启。


    
    
    
        
        
             /success.jsp
        
    

在访问add方法时:

http://localhost:8080/IntercepterStruts2Demo/BookAction!add.action

在访问find方法时:

http://localhost:8080/IntercepterStruts2Demo/BookAction !find.action


以此类推,这种方式显然很麻烦,所以一般用下面这种:


《2》*通配符方式:使用{1}取出第一个*通配的内容

(*前面的下划线可以是#或者没有或者别的,但一般都会用下划线)


    
    
        
             /success.jsp
        
    

访问find()方法:

http://localhost:8080/IntercepterStruts2Demo/BookAction_find.action



4.2 Struts2中的默认配置(了解即可)


    
        
        
            /login.jsp
        
    

《1》中的class属性:默认为com.opensymphony.xwork2.ActionSupport。(需要自己手动配)用来修改默认Action,其中的name属性表示找不到包下的Action时,上例中会使用loginAction作为默认的Action处理请求。

《2》中的method属性:可以不写,默认为”execute“。

《3》中的name属性:默认为success。

《4》中的type属性:dispatcher转发。


五、Action类配置

《1》创建一个类,可以是POJO。

           POJO:表示不用继承任何父类,也不需要实现任何接口。

           使struts2框架的代码侵入性更低。


《2》实现一个接口Action。

package com.zl.action;

import com.opensymphony.xwork2.Action;

public class ActionDemo implements Action{
	@Override
	public String execute() throws Exception {
		return null;
	}
}

    里面必须要实现execute()方法,提供action方法的规范。为了方便,Action接口预置了一些字符串,可以在返回结果时使用。


《3》继承一个类ActionSupport。(推荐使用)

     帮我们实现了Validateable、ValidationAware、TextProvider、LocalProvider这些接口,当我们需要用到这些接口的实现时,不需要自己来实现了。



你可能感兴趣的:(Java,EE,SSH框架学习,Struts2访问流程,Struts2架构,struts.xml,Struts2动态方法调用)