猿教程 Logo

ServletContextAware接口

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

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

public void setServletContext(ServletContext context);

使用ServletContextAware接口

ServletContextAware接口有很多的实际用途。 他们是:

  • 您可以使用集合在ServletContext对象中保存表的所有记录,并从任何操作类获取这些信息。 以这种方式,Web应用程序的性能将会提高。

  • 您可以存储Connection对象,并从任何action类等获取连接对象。


ServletContextAware接口示例

在这个例子中,我们正在创建两个链接第一页和第二页。 如果直接点击第二页,它不会显示任何数据,但是如果您点击了第一个链接,数据将被存储在ServletContext对象中,并且可以从另一个action类获取。 在第二个链接中,我们将获取存储在ServletContext对象中的数据。

在这个例子中,我们需要以下页面

  1. index.jsp用于提供第一个和第二个操作的链接。

  2. 用于定义结果和操作的struts.xml。

  3. FirstAction.java用于在ServletContext对象中存储数据。

  4. SecondAction.java用于从ServletContext对象获取数据。

  5. 查看显示结果的组件。


1)创建index.jsp进行输入

此jsp页面创建两个链接,第一个链接调用第一个action类,第二个链接调用第二个action类。

index.jsp

<hr/>
<a href="first">first page</a>|
<a href="second">second page</a>
<hr/>

2)struts.xml中定义action和result

这个xml文件定义了一个package和两个action。

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.javatpoint.FirstAction">
<result>firstsuccess.jsp</result>
</action>

<action name="second" class="com.javatpoint.SecondAction">
<result>secondsuccess.jsp</result>
<result name="error">seconderror.jsp</result>
</action>

</package>
</struts>

3)创建action类来存储数据

此操作类实现ServletContextAware接口,并覆盖setServletContext方法以将信息存储在应用程序范围内。

FirstAction.java

package com.javatpoint;
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)创建action类来获得数据

该类从应用程序范围获取信息,如果在会话范围中找到有登录名的信息,则返回成功否则为false。

SecondAction.java

package com.javatpoint;
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


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Struts/struts-2-ServletContextAware.html