将ServletContext接收到普通Java类中?

将ServletContext接收到普通Java类中?,java,jsp,session,servlets,realpath,Java,Jsp,Session,Servlets,Realpath,我今天刚开始学习一些JSP和servlet,想知道是否有可能将会话的ServletContext作为变量传递给普通Java类?如果是,我可以怎样做 我的简单servlet: public class myServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) { HttpSession ses

我今天刚开始学习一些JSP和servlet,想知道是否有可能将会话的
ServletContext
作为变量传递给普通Java类?如果是,我可以怎样做

我的简单servlet:

public class myServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) {
                HttpSession session = request.getSession(true); 

                //How do I receive the servlet context below in a plain Java class?
                ServletContext sc = session.getServletContext();
                request.setAttribute("sc", sc); 
        }
}
我的Java类只是一个普通类:

public class myClass extends HttpServlet {

   //I want to be able to use the ServletContext as a variable that is passed from myServlet class into this one.

}
myClass
中,我希望能够使用它获取项目中文件的实际路径文件:

ServletContext sc
字符串路径=sc.getRealPath(…)

编辑:我可以在
myServlet
servlet中执行类似操作吗

String realPath=sc.getRealPath(“/WEB-INF/myFile”)

但是,我如何将这个
realPath
变量传递到
myClass
中,这样我就可以在那里而不是在
myServlet
中使用它了

  • 创建一个类

    公共类MyClass{..}

  • 具有类型为
    ServletContext

    private ServletContext myContext

  • 通过构造函数或setter设置值

    void setContext(ServletContext sc){myContext=sc;}

  • 使用它

    myContext.get…(“xxx”)

  • 编辑

    您可以将servlet中的此类用作

    doPost (....) {
    
       ....
        ServletContext sc = session.getServletContext();
       MyClass mc = new MyClass ();
       mc.setContext (sc);
    
     // now the context is **in** the MyClass instance - how you use it is up to you.
    

    为什么你要扩展
    公共类myClass扩展HttpServlet
    。当我问他时,他并没有真正的答案。就像我说的,我今天刚开始学习servlet和JSP可能是一个xy问题-你真正想实现什么?如果我把setter
    void setcontext(…){…}
    放在
    myClass
    中,
    sc
    从哪里来?你从你的
    Servlet
    构造并调用这个代码,我应该在
    myServlet
    中为
    myContext
    编写setter和getter代码,是吗?哪一步1-4表明你应该这样做?你的回答是这样的。