Получение ServletContext в простой Java-класс? - PullRequest
0 голосов
/ 15 ноября 2018

Я только начинаю изучать некоторые JSP и сервлеты сегодня, и мне было интересно, можно ли получить ServletContext сеанса в качестве переменной и передать его в простой Java-класс?Если да, то как я могу это сделать?

Мой простой сервлет:

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(...)

РЕДАКТИРОВАТЬ: Могу ли я сделать что-то подобноев myServlet сервлет?:

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

Но тогда как передать эту переменную realPath в myClass, чтобы я мог использовать ее вместо myServlet?

1 Ответ

0 голосов
/ 15 ноября 2018
  1. создать класс

    public class MyClass {....}

  2. Иметь переменную типа ServletContext

    private ServletContext myContext;

  3. Установить значение через конструктор или установщик

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

  4. Использовать

    myContext.get....("xxx");

Редактировать

Вы можете использовать этот класс из своего сервлета как

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.
...