Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何将一个对象(定义到servlet中)放入会话以将其用于JSP页面?_Java_Jsp_Session_Jakarta Ee_Servlets - Fatal编程技术网

Java 我如何将一个对象(定义到servlet中)放入会话以将其用于JSP页面?

Java 我如何将一个对象(定义到servlet中)放入会话以将其用于JSP页面?,java,jsp,session,jakarta-ee,servlets,Java,Jsp,Session,Jakarta Ee,Servlets,这是我第一次从事J2EE项目,我遇到以下问题: 我有以下servlet实现了HttpServlet接口 public class Salwf extends HttpServlet { private String msg = StringUtils.EMPTY; public void init(ServletConfig config) throws ServletException { super.init(config); Stand

这是我第一次从事J2EE项目,我遇到以下问题:

我有以下servlet实现了HttpServlet接口

public class Salwf extends HttpServlet {

    private String msg = StringUtils.EMPTY;

    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        StandardConfigurationFactory standardConfigurationFactory = new StandardConfigurationFactory();

        try {
            standardConfigurationFactory.init();
        } catch (ConfigurationException e) {
            throw new ServletException(e);
        }

        ConfigurationFactory.setInstance(standardConfigurationFactory);
    }

    public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        LoggerMDC.setup(req, res);
        Logger logger = (Logger) Logger.getStdLogger(Monitoraggio.class); // do not declare 'logger' as static field in order to work with MDC

        String service = req.getParameter("serv");

        char serviceId = Utility.getServizio(req.getParameter("serv"));

        // The collection that have to be shown in a table inside the JSP view:
        SalDettaglio[] salDettaglio = this.getSalDettaglioList();

        gotoPage(ConfigurationFactory.getPropertiesPages().getProperty("pagina_salwf"), req, res);

        //String paginaDaLanciare = lanciaServizio(serviceId, req, res);
    }

    /*
    private String lanciaServizio(char num_servizio, HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        Logger logger = (Logger) Logger.getStdLogger(Monitoraggio.class); // do not declare 'logger' as static field in order to work with MDC

        HttpSession session;

    }
    */

    private void gotoPage(String address, HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        Logger logger = (Logger) Logger.getStdLogger(Monitoraggio.class); // do not declare 'logger' as static field in order to work with MDC
        logger.debug("gotoPage() | address: " + address);

        ServletContext ctx = getServletConfig().getServletContext();
        RequestDispatcher dispatcher = ctx.getRequestDispatcher(address);
        dispatcher.forward(req, res);
    }

    private SalDettaglio[] getSalDettaglioList(){

        SalDettaglio[] salDettaglioArrayResult;

        List<SalDettaglio> salDettaglioList = new ArrayList<SalDettaglio>();

        List<RM> rmList = new ArrayList<RM>();

        RM rm1 = new RM("codiceRM1", "Andrea", "01/01/1014", "acqRiserva1", "consegnaFinale1", "descrizioneRM1", BigDecimal.valueOf(1000));
        RM rm2 = new RM("codiceRM2", "Andrea", "01/01/1014", "acqRiserva2", "consegnaFinale2", "descrizioneRM2", BigDecimal.valueOf(1000));

        rmList.add(rm1);
        rmList.add(rm2);

        RM[] rmArray =  (RM[]) rmList.toArray();

        SalDettaglio salDettaglio1 = new SalDettaglio("codice1", "stato1", "01/01/2014", "01/06/2014", "Andrea",
                "Andrea", "Andrea", BigDecimal.valueOf(1000), "fornitore1",
                "rmConRiserva1", "errore1", null, rmArray);

        SalDettaglio salDettaglio2 = new SalDettaglio("codice2", "stato2", "01/01/2014", "01/06/2014", "Andrea",
                "Andrea", "Andrea", BigDecimal.valueOf(1000), "fornitore2",
                "rmConRiserva2", "errore2", null, rmArray);

        salDettaglioList.add(salDettaglio1);
        salDettaglioList.add(salDettaglio2);

        salDettaglioArrayResult = (SalDettaglio[]) salDettaglioList.toArray();

        return salDettaglioArrayResult;

    }

}
现在我必须把它放到会话中,这样我就可以在JSP视图中使用它

我怎么做

HttpSession session = req.getSession();
session.setAttribute("salDettaglio", salDettaglio);
这将
saldetaglio
放在会话中,您可以使用属性标识符
saldetaglio
访问它。请记住,它将它存储为一个普通的
对象
,因此如果您使用的是sciplets,您必须在JSP中强制转换

也看到

这将
saldetaglio
放在会话中,您可以使用属性标识符
saldetaglio
访问它。请记住,它将它存储为一个普通的
对象
,因此如果您使用的是sciplets,您必须在JSP中强制转换


另请参见

创建一个会话对象并将数组放入该会话对象中,然后使用sendRedirect()您可以通过它发送会话

创建一个会话对象并将数组放入该会话对象中,然后使用sendRedirect()可以通过它转发会话

请注意会话的getAttribute/setAttribute方法是同步的,但存储它们是您的责任。这意味着如果您更改存储对象中的可变字段,而该字段不能保证被其他线程看到。由于servlet由线程池中的不同线程调用,因此这可能是一个问题。要避免这种情况,请使用不可变对象或使对象线程安全。

请注意,会话的getAttribute/setAttribute方法是同步的,但与它们一起存储的内容是您的责任。这意味着如果您更改存储对象中的可变字段,而该字段不能保证被其他线程看到。由于servlet由线程池中的不同线程调用,因此这可能是一个问题。要避免这种情况,请使用不可变对象或使对象线程安全。

是否确实要将其放入会话而不仅仅是请求?是否确实要将其放入会话而不仅仅是请求?
HttpSession session = req.getSession();
session.setAttribute("salDettaglio", salDettaglio);