struts2在配置文件与JSP中用OGNL获取Action属性
参考:Struts与OGNL结合
struts2在配置文件中可以调用Action的属性,在JSP页面也可以取出Action的属性值(前提是属性有get,set方法)。
第一个例子:
1.Action中
//文件下载名 public String getDownloadFileName(){ String downloadFileName = ""; String filename = fileName + ".xls"; try { downloadFileName = URLEncoder.encode(filename,"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downloadFileName; }
2.配置文件中filename="${downloadFileName}"调用Action中的属性
<!-- 文件Excel模板下载 --> <action name="exportWebExcel" class="Action.Excel.ExportWebExcel"> <result type="stream"> <!-- 其他的参数在类中设置或者使用默认 --> <param name="contentType">application/octet-stream</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">8192</param> </result> </action>
第二个例子:
Action
package Demo1; import javax.print.attribute.standard.RequestingUserName; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import utils.CheckCookie; /** * Demo1主页,访问主页要先验证cookie * * @author: qlq * @date : 2017年8月29日下午12:02:31 */ public class Demo1Action extends ActionSupport { private String gotoUrl; public String getGotoUrl() { return gotoUrl; } public void setGotoUrl(String gotoUrl) { this.gotoUrl = gotoUrl; } @Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); if (CheckCookie.checkCookie(request)) return SUCCESS; // 登陆失败后将gotoUrl写到JSP页面 gotoUrl = "/demo1/main.action"; return LOGIN; } }
配置文件中:
<package name="sso" namespace="/sso" extends="struts-default"> <action name="login" class="SSOAction.LoginAction"> <result name="success" type="redirect">${gotoUrl}</result> </action> </package>
例子3: JSP页面中取出Action属性
属性有get,set方法即可,在JSP页面中也可以用OGNL表达式取出属性值,struts会将当前Action对象的属性放入值栈。
package Demo2; import javax.print.attribute.standard.RequestingUserName; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import utils.CheckCookie; /** * Demo2主页,访问主页要先验证cookie * * @author: qlq * @date : 2017年8月29日下午12:02:31 */ public class Demo2Action extends ActionSupport { private String gotoUrl; public String getGotoUrl() { return gotoUrl; } public void setGotoUrl(String gotoUrl) { this.gotoUrl = gotoUrl; } @Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); if (CheckCookie.checkCookie(request)) return SUCCESS; // 登陆失败后将gotoUrl写到JSP页面 gotoUrl = "/demo2/main.action"; return LOGIN; } }
-------------struts只写get方法,不写属性名字用${属性名}也会调用get方法-------------------
struts只写一个get方法,不写属性名,也可以获取到get方法返回的值,由此可见${name}是调用getName()方法。
例一:
类中只有getTest方法:
package cn.xm.exam.action.exam.exam; /** * 增加考试Action * * @author QiaoLiQiang * @time 2017年10月14日下午4:55:27 */ @Controller @Scope("prototype") @SuppressWarnings("all") public class Test2Action extends ActionSupport { public String getTest() { return "这个是只有get方法"; } @Override public String execute() throws Exception { return super.execute(); } }
配置文件:
<action name="test" class="test2Action">
<result name="success" type="json">
<param name="root">test</param>
</result>
</action>
测试:
例子二:
将上面类进行改造:
package cn.xm.exam.action.exam.exam; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.opensymphony.xwork2.ActionSupport; /** * 增加考试Action * * @author QiaoLiQiang * @time 2017年10月14日下午4:55:27 */ @Controller @Scope("prototype") @SuppressWarnings("all") public class Test2Action extends ActionSupport { private String test = "sssssss"; public String getTest() { return "这个是只有get方法"; } @Override public String execute() throws Exception { return super.execute(); } public void setTest(String test) { this.test = test; } }
结果:
总结:
当我们在struts配置文件或者JSP页面中调用${name}的时候实际是调用getName()方法,因此有时候只需要写getName方法而不用写私有属性与set方法也可以完成获取。
【当你用心写完每一篇博客之后,你会发现它比你用代码实现功能更有成就感!】
分类:
struts
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix