【问题标题】:How to access servlet's method variable inside inner class如何在内部类中访问servlet的方法变量
【发布时间】:2013-02-19 08:02:13
【问题描述】:

我想访问在我的基类方法中声明的内部类中的变量。我的基类是一个 servlet,所以我不能将此变量声明为全局变量。

下面的代码会给你一个想法。我想访问在我的基类 servlet 方法中声明的内部类中的变量 sort

public class AccessPointsListServlet extends Servlet  {

    protected void execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String sort = null;
        sort = request.getParameter("Sort");

    }

    private class InnerClass {

        public int evaulate(String first){ 
            if (sort.equalsIgnoreCase("url")) {
            // some code         
            }
        }
    }

}

请帮忙

【问题讨论】:

  • 使用getServletContext().setAttribute(),您将数据存储在应用程序范围中。通常这些属性意味着对整个 Web 应用程序(应用程序范围)和所有用户都可用,而且只要 Web 应用程序存在,它们就会存在。这是完全正常的做法,完全取决于您的具体需求。另请参阅此答案,其中包含与不同范围相关的更多信息和链接以及何时可以使用它们:stackoverflow.com/a/14718683/814702

标签: java servlets scope


【解决方案1】:

我认为这就是您要寻找的。

public class AccessPointsListServlet extends HttpServlet //instead of Servlet
{
    String sort=null;
    protected void execute(HttpServletRequest request, HttpServletResponse response) throws   Exception 
    {
        sort=request.getParameter("Sort");
    }
    private class InnerClass 
    {
        public int evaulate(String first)
        { 
            if (sort.equalsIgnoreCase("url"))
            {
                // some code         
            }
            //return int value here
        }
    }
}

【讨论】:

  • 我会采用这种方法。但是我的项目希望我避免对 Servlet 使用全局变量。顺便说一句,我必须提到 AccessPointsListServlet 扩展了 Abc 类,而 Abc 类扩展了 HttpServlet。为 servlet 设置全局变量不是一个坏习惯吗?
  • 嘿,我找到了另一种实现这一目标的方法。我在我的 servlet 方法中设置了 sort 的值,如下所示。 getServletContext().setAttribute("sort", request.getParameter("sort"));然后在我的内部类中访问这个排序值,如下所示。字符串 abc=(String)getServletContext().getAttribute("sort1");请让我知道这是否正常和更好的解决方案。
猜你喜欢
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多