文章目录
基础
实战
配置文件
文件1:
<?xml version="1.0" encoding="UTF-8"?>
// 声明这是一个 XML 文件,且使用 UTF - 8 编码
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
// 指定文档类型定义(DTD),此 DTD 为 Struts 2.5 版本的配置文件。
<struts>
// Struts 2 配置文件的根元素
<constant name="struts.convention.default.parent.package" value="crud-default" />
// 指定使用 Convention 插件时,Action 类默认的父包为 crud-default
<constant name="struts.convention.package.locators" value="web" />
// Convention 插件搜索 Action 类的包定位器,这里指定为 web
<constant name="struts.multipart.maxSize" value="10485760"/>
// 设置文件上传的最大大小为 10485760 字节(即 10MB)
<constant name="struts.convention.package.locators.basePackage" value="com.cqxp.jxt.web" />
// Convention 插件搜索 Action 类的基础包为 com.cqxp.jxt.web
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
// 启用动态方法调用
<constant name="struts.multipart.saveDir" value="/tmp"></constant>
// 文件上传时临时保存的目录为 /tmp。
<constant name="struts.convention.action.mapallmatches" value="true"/>
// Convention 插件是否映射所有匹配的 Action
<constant name="struts.devMode" value="false" />
// 是否开启开发模式,这里设置为 false 表示关闭
// crud-default 包配置
<package name="crud-default" extends="convention-default,json-default">
// 该包继承自 convention-default 和 json-default 包
<interceptors>
// 定义拦截器栈
<interceptor-stack name="crudStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="crudStack" />
<global-results>
<result name="home">/authentication/manager-home.jsp</result>
</global-results>
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
/*
使用Convention插件,实现约定大于配置的零配置文件风格.
特殊的Result路径在Action类中使用@Result设定.
*/
// 微信网页配置
<package name="wechat" extends="crud-default" namespace="/">
//拦截器
<interceptors>
<interceptor name="MobilePageInterceptor" class="com.cqxp.jxt.web.MobilePageInterceptor">
</interceptor>
//拦截器栈
<interceptor-stack name="stackMobilePageInterceptor">
<interceptor-ref name="MobilePageInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="stackMobilePageInterceptor" />
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
</struts>
NameSpaces
@Namespace("/")
// 定义了 Struts2 中 Action 的命名空间。
// 命名空间用于区分不同的模块或功能组。
// 如果 URL 请求匹配到 / 命名空间下的某个 Action,则会触发该类。
@Scope("prototype")
// 定义了 Spring 容器中该类的实例化范围
// prototype 表示每次请求都会创建一个新的实例
@Results({
// 定义了 Struts2 中 Action 方法的返回值与视图资源之间的映射关系。
@Result(name = "index", location = "app-index.jsp"),
@Result(name = "regapp", location = "app-regapp.jsp")
})
// 每个 @Result 定义了一个逻辑视图名称(如 "index")和对应的物理资源路径(如 "app-index.jsp")。
// 触发机制:
// 请求 /index.action 会触发 AppAction 类中的 index 方法。
// 请求 /regapp.action 会触发 AppAction 类中的 regapp 方法。
3万+

被折叠的 条评论
为什么被折叠?



