-1

我今天刚开始学习一些 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 String path = sc.getRealPath(...)

编辑: 我可以在myServletservlet 中做这样的事情吗?:

String realPath = sc.getRealPath("/WEB-INF/myFile");

但是,如何将这个realPath变量传递给myClass我,以便我可以在那里而不是 in 使用它myServlet

4

1 回答 1

0
  1. 创建一个类

    public class MyClass {....}

  2. 有一个类型的变量ServletContext

    private ServletContext myContext;

  3. 通过 Constructor 或 setter 设置值

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

  4. 用它

    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.
于 2018-11-15T04:17:41.747 回答