📜  Struts 2 ServletContextAware接口示例

📅  最后修改于: 2021-01-11 06:33:45             🧑  作者: Mango

ServletContextAware接口示例

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

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

public void setServletContext(ServletContext context);

ServletContextAware接口的用法

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

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

ServletContextAware接口的示例

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

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

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

1)创建index.jsp作为输入

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

2)在struts.xml中定义动作并生成结果

这个xml文件定义了一个包和2个动作。








firstsuccess.jsp



secondsuccess.jsp
seconderror.jsp



    

3)创建动作类来存储数据

该动作类实现ServletContextAware接口,并重写setServletContext方法以将信息存储在应用程序范围中。

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)创建动作类以获取数据

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

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

该页面创建登录表单。



<%@ taglib uri="/struts-tags" prefix="s" %>
Hello user, data is set into the ServletContext object

Now you may click the second page to verify
Data is :

此页面显示带有用户名的欢迎消息。


<%@ taglib uri="/struts-tags" prefix="s" %>
Hello user, data is found
Data is :

此页面显示错误消息。


Sorry , data is not found in the  ServletContext object