我有一个问题。当我单击链接时,执行将传递给servlet。在这个servlet中有一个被覆盖的init()
,它应该在servlet启动时执行。我的问题是如何将元素CountriesList
传递给jsp页面signup.jsp
?如果我进入了doGet()或doPost()函数,我可以使用forward()
函数,但事实并非如此。有什么想法吗?
@Override
public void init()
throws ServletException
{
this.getServletContext().setAttribute("CountriesList", signUpBean.getContriesList());
}
修改
问题解决了
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
request.setAttribute("CountriesList", signUpBean.getContriesList());
String arg = "/signup.jsp";
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher(arg);
dispatcher.forward(request, response);
}
答案 0 :(得分:1)
init
实例时会调用 Servlet
。但是Servlet
实例可能会创建一次并重复使用多次(每次调用doGet
,doPost
...)。
实质上:init()
用于实例化后的servlet初始化,而不是其他任何内容。您使用doXXX
方法处理请求。
更新:
要检索您放在ServletContext
中的数据,例如doGet
(或者,在您的示例中为processRequest
),您只需
List<Country> countriesList = (CountriesList) getServletContext().getAttribute("CountriesList");
检索值。
您也可以从JSP本身访问getServletContext()
。
如果您正在使用JSTL并且在ServletContext
中放置了一个bean,那么它也可能被检索为&#34;应用程序作用域&#34;豆。但是不知道如何使用List
或bean数组。
答案 1 :(得分:1)
为什么不直接从JSP页面的signUpBean
获取国家/地区列表?