执行servlet后将结果传递给jsp页面

时间:2014-06-08 23:34:16

标签: java jsp servlets

我有一个问题。当我单击链接时,执行将传递给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);               
    }

2 个答案:

答案 0 :(得分:1)

重用init实例时会调用

Servlet。但是Servlet实例可能会创建一次并重复使用多次(每次调用doGetdoPost ...)。

实质上: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获取国家/地区列表?