struts2中访问和添加Application、session以及request属性
一、访问或添加Application、session、request属性
《一》方式一
HelloWorldAction类中添加如下代码
//此方法适用于仅对Application、session、request对象添加属性值
public String execute(){
//访问或添加Application、session、request属性
ActionContext act=ActionContext.getContext();
act.getApplication().put("app", "application范围(应用范围)");
act.getSession().put("ses", "session范围");
act.put("req", "request范围");
return "success";
}
Struts.xml文件内容:(使用了通配符的方式)
<action name="helloworld_*" class="test.struts2.HelloWorldAction" method="{1}" >
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
Hello.jsp页面内容:
${applicationScope.app}</br>
${sessionScope.ses}</br>
${requestScope.req}</br>
访问连接可以为:
http://localhost:8080/struts2/test/helloworld_execute.do(注意:do,xxx为自定义后缀,这样访问时必须加上)
http://localhost:8080/struts2/test/helloworld_execute.xxx
http://localhost:8080/struts2/test/helloworld_execute.action
http://localhost:8080/struts2/test/helloworld_execute为无效链接
http://localhost:8080/struts2/test/helloworld为无效链接
http://localhost:8080/struts2/test/helloworld.action也可以访问
http://localhost:8080/struts2/test/helloworld.do也可以访问
结论:
在使用通配符的方式下(name="helloworld_*",method="{1}")如果地址栏中地址helloworld后没有直接跟方法名execute或addUI等,那么默认执行execute方法,因为在配置文件中 <constant name="struts.action.extension" value="do,action,xxx,aiai"/>定义了几个后缀,所以访问连接必须添加其中之一方有效。以上五个有效连接访问结果一样。
结果为:
application范围(应用范围)
session范围
request范围
《二》方式二
此方式适用于需要获取绝对路径等重要信息时使用
此时在Action类HelloWorldAction类中添加如下代码,其他地方不改动
public String rsa()
{
HttpServletRequest request=ServletActionContext.getRequest();
ServletContext servletContext=ServletActionContext.getServletContext();
request.setAttribute("req", "请求方位属性");
request.getSession().setAttribute("ses", "会话范围属性");
servletContext.setAttribute("app", "应用范围属性");
return "success";
}
访问地址:
http://localhost:8080/struts2/test/helloworld_execute!rsa.do
http://localhost:8080/struts2/test/helloworld!rsa.do
http://localhost:8080/struts2/test/helloworld_rsa.do
http://localhost:8080/struts2/test/helloworld_addUI!rsa.do
http://localhost:8080/struts2/test/helloworld_addUI!Rsa无效
http://localhost:8080/struts2/test/helloworld_rsa无效
结果为:
应用范围属性
会话范围属性
请求方位属性
补充:
public String execute(){
//访问或添加Application、session、request属性
ActionContext act=ActionContext.getContext();
act.getApplication().put("app", "application范围(应用范围)");
act.getSession().put("ses", "session范围");
act.put("req", "request范围");
act.put("names",Arrays.asList("幽林孤狼","心晴","幽林孤狼B组"));//新
return "success";
}
再\WebRoot\WEB-INF\lib目录下引入如下两个jar文件

在hello.jsp文件中添加:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
以及:
<c:forEach items="${names}" var="name">
${name}</BR>
</c:forEach>
访问结果为:
幽林孤狼
心晴
幽林孤狼B组
struts2中访问和添加Application、session以及request属性的更多相关文章
- Struts2中访问web元素的四种方式
Struts2中访问web元素的四种方式如下: 通过ActionContext来访问Map类型的request.session.application对象. 通过实现RequestAware.Sess ...
- struts2中访问servlet API
Struts2中的Action没有与任何Servlet API耦合,,但对于WEB应用的控制器而言,不访问Servlet API几乎是不可能的,例如需要跟踪HTTP Session状态等.Struts ...
- Struts2中 ValueStack、ActionContext、ServletContext、request、session等 表格解析
变量 从ActionContext中获得 生命周期 用Ongl来读取值 使用ServletConfigInterceptor来注入 ActionContext类 静态方法ActionContext. ...
- struts2中的使用BaseAction获取Session
package com.owen.ma; import java.util.Map; import org.apache.struts2.interceptor.RequestAware; impor ...
- Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题
1.为什么需要ModelDriven? 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2 ...
- Struts2(八)访问Servlet API
一.Struts2中的Servlet API 1.1.struts2的Action实现了MVC中C层的作用 针对请求用户显示不同的信息 登录后段保存用户信息 ----session 保存当前在线人数等 ...
- 关于struts2中的相对路径与绝对路径
从昨天开始复习了struts2的课程,之所以重新走上java的道路,是觉得写了一年的go程序,并没有感觉到学习了什么,反而把java给忘得干干净净的.想想我的计划,年后就要换工作了,至于要换到什么方向 ...
- struts2访问或添加几个属性(request/session/application属性)
https://blog.csdn.net/hebiao100/article/details/7385055 struts2添加request.session.application属性 第一种方法 ...
- struct2访问或添加request/session/application
访问或添加request/session/application 1 通过ActionContext //这样放置 public String execute() { ActionConte ...
随机推荐
- android.content.Context 含义及使用
Context字面意思上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄,很多方法需要通过Con ...
- ListView(2)最简单的上拉刷新,下拉刷新
最简单的上拉刷新和下拉刷新,当listview滚动到底部时向上拉刷新数据.当listview滚动到最顶部时下拉刷新. 图1,上拉刷新 图2,下拉刷新 1,设置lisview,加载heade ...
- [Codeforces673A]Bear and Game(水题,思路)
题目链接:http://codeforces.com/contest/673/problem/A 题意:一个人看一个90分钟的节目,然后告诉你一些有趣的时刻.这个人假如在15分钟内还没有看到有趣的时刻 ...
- 异常:Caused by: java.lang.NoClassDefFoundError: Could not initialize class net.sf.log4jdbc.Properties
参考文章: 使用Log4jdbc-log4j2监听MyBatis中运行的SQL和Connection 使用 log4jdbc格式化输出SQL,maven配置如下: <dependency> ...
- uva 10453 - Make Palindrome(dp, 记录路径)
题目 题意: 给一个字符串 ,判断最少插入多少个字符 使字符串成为回文串, 并输出回文串. 思路:先用dp判断需要个数, 再递归输出路径. #include <iostream> #inc ...
- SQL SERVER 2008筛选时报错 无法为该请求检索数据
使用SqlServer2008的筛选功能时报错“无法为该请求检索数据. (Microsoft.SqlServer.Management.Sdk.Sfc)” 如下图: 解决方法: 打上SQL SERVE ...
- UVa 10892 (GCD) LCM Cardinality
我一直相信这道题有十分巧妙的解法的,去搜了好多题解发现有的太过玄妙不能领会. 最简单的就是枚举n的所有约数,然后二重循环找lcm(a, b) = n的个数 #include <cstdio> ...
- UVa 437 (变形的LIS) The Tower of Babylon
题意: 有n种类型的长方体,每种长方体的个数都有无限个.当一个长方体的长和宽分别严格小于另一个长方体的长和宽的时候,才可以把这个放到第二个上面去.输出这n种长方体能组成的最大长度. 分析: 虽说每种都 ...
- wince和window mobile winphone
windows mobile是微软在2000年左右推出的针对移动平台的操作系统,这个系统一直使用到三年前,微软开始启用metro界面,将windows mobile改名为windows phone. ...
- [swustoj 785] Divide Tree
Divide Tree(0785) 问题描述 As we all know that we can consider a tree as a graph. Now give you a tree wi ...