- ServletContextAware接口示例
- ServletContextAware接口的示例
它仅包含一个方法setServletContext。句法:
public void setServletContext(ServletContext context);
ServletContextAware接口的用法
ServletContextAware接口可能有很多实际用法。他们是:
- 你可以使用collection来保存ServletContext对象中表的所有记录, 并从任何操作类中获取这些信息。这样, 将提高Web应用程序的性能。
- 你可以存储Connection对象并从任何操作类等中获取连接对象。
在此示例中, 我们将创建两个链接, 第一页和第二页。如果直接单击第二个页面, 它将不显示任何数据, 但是如果你单击了第一个链接, 则数据将存储在ServletContext对象中, 并且可以从另一个操作类获取。在第二个链接中, 我们获取存储在ServletContext对象中的数据。
在此示例中, 我们需要以下页面
- index.jsp, 用于提供到第一个和第二个动作的链接。
- 用于定义结果和操作的struts.xml。
- FirstAction.java, 用于在ServletContext对象中存储数据。
- SecondAction.java, 用于从ServletContext对象获取数据。
- 查看显示结果的组件。
该jsp页面创建两个链接, 第一个链接调用第一个动作类, 第二个链接调用第二个动作类。
index.jsp
<
hr/>
<
a href="http://www.srcmini.com/first">
first page<
/a>
|
<
a href="http://www.srcmini.com/second">
second page<
/a>
<
hr/>
2)在struts.xml中定义动作并生成结果
此xml文件定义一个包和2个动作。
struts.xml
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD
Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<
struts>
<
package name="abcd" extends="struts-default">
<
action name="first" class="com.srcmini.FirstAction">
<
result>
firstsuccess.jsp<
/result>
<
/action>
<
action name="second" class="com.srcmini.SecondAction">
<
result>
secondsuccess.jsp<
/result>
<
result name="error">
seconderror.jsp<
/result>
<
/action>
<
/package>
<
/struts>
3)创建动作类来存储数据
该动作类实现ServletContextAware接口, 并覆盖setServletContext方法以将信息存储在应用程序范围中。
FirstAction.java
package com.srcmini;
import javax.servlet.ServletContext;
import org.apache.struts2.util.ServletContextAware;
public class FirstAction implements ServletContextAware{ public void setServletContext(ServletContext ctx) {
ctx.setAttribute("dummyobject", "hello");
}
public String execute(){
return "success";
}
}
4)创建动作类以获取数据
此类从应用程序范围获取信息, 如果在会话范围中使用登录名找到任何信息, 则返回成功, 否则返回false。
SecondAction.java
package com.srcmini;
import javax.servlet.ServletContext;
import org.apache.struts2.ServletActionContext;
public class SecondAction{
public String execute(){
ServletContext ctx=ServletActionContext.getServletContext();
String obj=(String)ctx.getAttribute("dummyobject");
if(obj!=null){
return "success";
}
else{
return "error";
}
}
}
5)创建视图组件
有很多视图组件:
- firstsuccess.jsp
- secondsuccess.jsp
- seconderror.jsp
该页面创建登录表单。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
%@ taglib uri="/struts-tags" prefix="s" %>
Hello user, data is set into the ServletContext object
<
br/>
Now you may click the second page to verify
<
br/>
Data is :<
s:property value="http://www.srcmini.com/#application.dummyobject"/>
【Struts ServletContextAware接口用法示例】secondsuccess.jsp
此页面显示带有用户名的欢迎消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
%@ taglib uri="/struts-tags" prefix="s" %>
Hello user, data is found<
br/>
Data is :<
s:property value="http://www.srcmini.com/#application.dummyobject"/>
seconderror.jsp
此页面显示错误消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
Sorry , data is not found in theServletContext object
下载此示例(在myeclipse IDE中开发)
推荐阅读
- Struts 2 SessionAware接口用法示例图解
- Struts 2零配置约定介绍和用法
- Struts 2 ServletActionContext类介绍和用法
- Struts 2 Aware接口教程介绍
- Struts 2 Ajax验证-jsonValidation拦截器
- Struts 2双重验证示例
- Struts 2 URL验证示例
- Mybatis学习---MyBatis知识原始Dao开发和mapper代理开发
- Android 读写权限,已经授权情况下,仍然(Permission denied)