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="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
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="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中开发)

    推荐阅读