个性化阅读
专注于IT技术分析

Struts ServletContextAware接口用法示例

  1. ServletContextAware接口示例
  2. ServletContextAware接口的示例

ServletContextAware接口必须由Action类实现, 以将信息存储在应用程序范围内。

它仅包含一个方法setServletContext。句法:

public void setServletContext(ServletContext context);

ServletContextAware接口的用法

ServletContextAware接口可能有很多实际用法。他们是:

  • 你可以使用collection来保存ServletContext对象中表的所有记录, 并从任何操作类中获取这些信息。这样, 将提高Web应用程序的性能。
  • 你可以存储Connection对象并从任何操作类等中获取连接对象。

ServletContextAware接口的示例

在此示例中, 我们将创建两个链接, 第一页和第二页。如果直接单击第二个页面, 它将不显示任何数据, 但是如果你单击了第一个链接, 则数据将存储在ServletContext对象中, 并且可以从另一个操作类获取。在第二个链接中, 我们获取存储在ServletContext对象中的数据。

在此示例中, 我们需要以下页面

  1. index.jsp, 用于提供到第一个和第二个动作的链接。
  2. 用于定义结果和操作的struts.xml。
  3. FirstAction.java, 用于在ServletContext对象中存储数据。
  4. SecondAction.java, 用于从ServletContext对象获取数据。
  5. 查看显示结果的组件。

1)创建index.jsp作为输入

该jsp页面创建两个链接, 第一个链接调用第一个动作类, 第二个链接调用第二个动作类。

index.jsp

<hr/>
<a href="first">first page</a>|
<a href="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

firstsuccess.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="#application.dummyobject"/>

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="#application.dummyobject"/>

seconderror.jsp

此页面显示错误消息。

<jsp:include page="index.jsp"></jsp:include>
Sorry , data is not found in the  ServletContext object

下载此示例(在myeclipse IDE中开发)

赞(0) 打赏
未经允许不得转载:srcmini » Struts ServletContextAware接口用法示例
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏