将ServletContext接收到普通Java类中?
我今天刚开始学习一些JSP和servlet,想知道是否有可能将会话的将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
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问题-你真正想实现什么?如果我把settervoid setcontext(…){…}
放在myClass
中,sc
从哪里来?你从你的Servlet
构造并调用这个代码,我应该在myServlet
中为myContext
编写setter和getter代码,是吗?哪一步1-4表明你应该这样做?你的回答是这样的。