Struts
Struts全区配置
Struts.xml配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="day05" namespace="/" extends="struts-default"> <action name="*_*" class="com.struts.pattern.{1}" method="{2}"> <result name="{2}"> /{1}/{2}.jsp </result> </action> </package> </struts>
{1}:为类名
{2}:为方法名
Action代码
public class LoginAction07 extends ActionSupport { public String list(){ return "list"; } public String add(){ return "add"; } }
映射JSP页面
文件夹为Action名,jsp为方法名
Struts result类型配置
type 类型 :(在struts2-core.jar/struts-default.xml中可以找到)
Type 类型值 |
作用说明 |
对应类 |
chain |
用来处理Action 链 |
com.opensymphony.xwork2.ActionChainResult |
dispatcher(默认值) |
用来转向页面,通常处理 JSP |
org.apache.struts2.dispatcher.ServletDispatcherResult |
redirect |
重定向到一个URL |
org.apache.struts2.dispatcher.ServletRedirectResult |
redirectAction |
重定向到一个 Action |
org.apache.struts2.dispatcher.ServletActionRedirectResult |
plainText |
显示源文件内容,如文件源码 |
org.apache.struts2.dispatcher.PlainTextResult |
freemarker |
处理 FreeMarker 模板 |
org.apache.struts2.views.freemarker.FreemarkerResult |
httpheader |
控制特殊 http 行为的结果类型 |
org.apache.struts2.dispatcher.HttpHeaderResult |
stream
|
向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据。
|
org.apache.struts2.dispatcher.StreamResult
|
velocity |
处理 Velocity 模板 |
org.apache.struts2.dispatcher.VelocityResult |
xslt |
处理 XML/XLST 模板 |
org.apache.struts2.views.xslt.XSLTResult
|
默认为Dispatcher(转发)
<package name="day04" namespace="/" extends="struts-default"> <action name="list" class="com.struts.action.LoginAction07"> <result name="list"> /04/list.jsp </result> </action> </package>
redirect(重定向)
<package name="day04" namespace="/" extends="struts-default"> <action name="list" class="com.struts.action.LoginAction07"> <result type="redirect" name="list"> /04/list.jsp </result> </action> </package>
Chain(动作链跳转)从一个action发往另一个action
<package name="day06" namespace="/" extends="struts-default"> <action name="add" class="com.struts.pattern.PatternAction02" method="add"> <result name="add" type="chain"> <param name="actionName">list</param> <param name="namespace">/</param> </result> </action> <action name="list" class="com.struts.pattern.PatternAction02" method="list"> <result name="list"> /PatternAction/list.jsp </result> </action> </package>
OGNL与值栈
OGNL:Object Graph Navigation Language 对象导航图语言
开源项目,取代页面中Java脚本,简化数据访问
和EL同属于表达式语言,但功能更为强大
让我们通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。
OGNL在Struts2中的作用
表达式语言
将表单或Struts2标签与特定的java数据绑定起来,用来将数据移入、移出框架
类型转换
数据进入和流入框架,在页面数据的字符串类型和java数据类型之间进行转换
值栈与OGNL
值栈(ValueStack)
由Struts 2框架创建的存储区域,具有栈的特点
Action的实例会被存放到值栈中
OGNL访问值栈
按照从上到下的顺序,靠近栈顶的同名属性会被读取
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步