文章目录
概念
Struts是简单的Java后端框架,通过指定根Filter引入即可。
Eclipse配置
- web.xml
- struts.xml
web.xml
Filter标签指定/*路径由Struts代理。
structs.xml
位置:class路径下。Eclipse会将src下非java文件自动复制到class下。
配置constant,Action等。
实现Action
对action没有要求,但提供的Action接口是推荐的规范,其中定义了execute无参数方法,并要求所有属性的set、get操作。
Action 访问 Servlet 有三种方式。
- 通过Struts封装的接口
- Structs提供直接接口
- Structs提供ServletActionContext类
配置Action
包和命名空间
- <package>定义包,包中由Action,包可以指定命名空间。
- Action对应的URL = 命名空间+Action名;
- 命名空间为url路径形式。
- “/”代表根路径。
- 不设置命名空间代表默认明明空间。
- 在当前命名空间找不到action时会在默认空间寻找。
- 虽然url是多级的,但命名空间没有多级的概念,只是名字而已。
动态方法调用
- control!login 会调用control Action 的login方法处理。
- *Action 通配符,用{1}来代表通配变量调用方法。
- 为了安全,增加AllowedMethod标签规定可以调用的方法。(老版本没有)
默认Action
可以设置。
Result 配置
Result 根据Action的结果链接视图,可以有多种type:
- dipatcher 默认值,jsp页面
- plaintext 不处理,当作字符串返回
- redirect 重定向
- redirectAction 重定向到action
动态Result
- 通配符{1}格式,与上面类似。
- 取Action的属性,OGNL表达式。Action的属性如果在类中没有定义,那么就是null。
异常处理
- 在struts中注册定义并注册异常拦截器。
- 在struts中配置全局和局部异常链接页面。
Convention
功能
- 约定优于配置。
- 自动寻找action(s)和struts下的aciton实现类或者Action后缀类,绑定URL。
- 绑定的URL,包名为actions和struts后的剩余包路径,Action 名为类名,如果类名后缀为Action则去掉Action。
使用
- 引入struts2-convention-plugin JAR包
- 依赖 ASM 包
- 目前为止所有需要的包如下:
- asm-7.1.jar
- asm-commons-7.1.jar
- asm-tree-7.1.jar
- commons-fileupload-1.3.3.jar
- commons-io-2.5.jar
- commons-lang3-3.6.jar
- freemarker-2.3.26-incubating.jar
- javassist-3.20.0-GA.jar
- log4j-api-2.9.1.jar
- ognl-3.1.15.jar
- struts2-config-browser-plugin-2.5.14.jar
- struts2-convention-plugin-2.5.14.jar
- struts2-core-2.5.14.jar
版本问题
- 我使用Java 11,ASM要7.0以上才支持。struts要2.5.19
- 不要把所有struts包都加进来,只用需要的就好,否则可能莫名其妙出错。
- ASM 下载链接 https://mvnrepository.com/artifact/org.ow2.asm/asm/7.1
- 导入的项目总是出错,还是要自己建立项目啊……