Nyt tarvis hieman apuja seuraavanlaisessa tapauksessa. Kyseessä Java.
Servlet1:stä pitäisi saada tuo varoitus teksti (String warning) kulkeutumaan Servlet2:sen doGet metodiin.
Servlet1:ssä on ainoastaan doPost -metodi tällä hetkellä. Servlet2:ssa on doGet ja doPost, mutta ne on muussa käytössä.
Miten tuo saadaa tuonne servlet2:een?
Eli servlet1:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); //otetaan istunto käyttöön User user = (User) session.getAttribute("user"); //otetaan käyttäjä istunnosta int userID = user.getUserid(); //haetaan userID String item = request.getParameter("item"); //haetaan parametri String warning = ""; if (item.isEmpty()) { warning = "Please enter item"; } else if (item.length() > 30) { warning = "Name must not exceed 30 characters"; } else { try { ItemDAO itemdao = new ItemDAO(ds); //luodaan tietokantaan yhteys itemdao.addItem(userID, item); //lisätään esine tietokantaan response.sendRedirect("UserLogin"); //siirrytään LoginServletin doGet metodiin, jolloin lista päivittyy return; } catch (SQLException ex2) { warning = "There was an error while adding item to the list"; ex2.printStackTrace(); } } request.setAttribute("warning", warning); RequestDispatcher rd = request.getRequestDispatcher("userpage.jsp"); //Palataantakaisin ja näytetään virheilmoitus rd.forward(request, response); } }
Servlet2.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { HttpSession session = request.getSession(); //otetaan istunto käyttöön User user = (User) session.getAttribute("user"); //otetaan käyttäjä istunnosta int userID = user.getUserid(); //haetaan userID ItemDAO itemdao = new ItemDAO(ds); List < Item > items = itemdao.getItemsByUserID(userID); request.setAttribute("items", items); } catch (SQLException e) { request.setAttribute("warning", "Error. Please try again later"); e.printStackTrace(); } RequestDispatcher rd = request.getRequestDispatcher("userpage.jsp"); rd.forward(request, response); }
Missä ympäristössä Servletit pyörii ?
_Pete_ kirjoitti:
Missä ympäristössä Servletit pyörii ?
Tomcat v7.0
Jos warning pitää aina olla liietty tiettyyn User niin silloin voisi yksi tapa olla Servlet1 lisätä kyseisen tiedon User objektiin ja Servlet2 käyttää sitä kautta.
Lisäsin virheilmoituksen istuntoon ja homma tuli sillä kuntoon.
Aihe on jo aika vanha, joten et voi enää vastata siihen.