передача значения из сервлета на страницу jsp

#java #eclipse #jsp #servlets #dao

#java #eclipse #jsp #сервлеты #dao

Вопрос:

EditDeleteServlet — это мой сервлет со списком всех студентов. Вот код:

 Student sbean = new Student();
            EditDeleteDAO sDAO = new EditDeleteDAO();

            String command = request.getParameter("command");
            PrintWriter out = response.getWriter();
            out.print(command);

            try{
                if(command.equals("Submit")) 
                {
                    String id=request.getParameter("id");
                    String studName=request.getParameter("studName");
                    String icNum=request.getParameter("icNum");
                    String matrixID=request.getParameter("matrixID");
                    String contactNum=request.getParameter("contactNum");
                    String email=request.getParameter("email");
                    String course=request.getParameter("course");
                    sbean.setId(Integer.parseInt(id));
                    sbean.setStudName(studName);
                    sbean.setICNum(icNum);
                    sbean.setMatrixID(Integer.parseInt(matrixID));
                    sbean.setContactNum(Integer.parseInt(contactNum));
                    sbean.setEmail(email);
                    sbean.setCourse(course);
                    EditDeleteDAO.insertDetails(sbean);
                    List<Student> list = sDAO.getAllDetails();
                    if(list!=null)
                    {
                        request.setAttribute("list",list);
                        RequestDispatcher rd = request.getRequestDispatcher("/studListing.jsp");
                        rd.forward(request, response);
                    }
                }
  

studListing.jsp — это моя страница jsp, где я хочу отобразить свои данные здесь

список = request.getAttribute(«список»); %>

Комментарии:

1. Я не совсем уверен, в чем заключается ваш вопрос на данный момент, но вам следует избегать наличия Java-кода в ваших файлах jsp.

2. Замените request.setAttribute("list",list); на request.setAttribute("EditDeleteServlet",list); , и вы могли бы извлечь его с помощью <% List<Student> list = (List<Student>)request.getAttribute("EditDeleteServlet"); %>

Ответ №1:

Вы добавили в свой запрос с key именем list

 request.setAttribute("list",list);
  

поэтому вы должны извлечь его, используя это имя в вашем JSP

Также используйте EL, а не java в вашем JSP

 <c:foreach items="${list}" var="student">
    ${student.studName}
<c:forEach>
  

Ответ №2:

Вы должны использовать request.setAttribute() для добавления пар ключ-значение, которые может использовать ваша страница jsp. В вашем коде:

 request.setAttribute("list", list);
  

Затем вы можете извлечь атрибут в вашем jsp следующим образом:

 <% List<Student> list = request.getAttribute("list"); %> // Note that the name of the attribute is "list"
  

Но если вы собираетесь выполнять итерации по списку, рекомендуется использовать EL:

 <c:forEach items="${list}" var="listItem">
    <c:out value="${listItem.eid}"/>
</c:forEach>
  

Ответ №3:

По сути, JSP и сервлеты используют одно и то же пространство, фактически JSP компилируется в сервлет на серверной части, и они используют одни и те же HttpServletRequest и HttpServletResponse, поэтому вы можете задать значение в сервлете в запросе и извлечь в JSP, используя один и тот же объект запроса.

например, внутри сервлета, request.setAttribute(«список»,list);

внутри JSP, request.getAttribute(«список»);

В качестве альтернативы вы могли бы также использовать объект session, чтобы поделиться этим в вашей HttpSession.