有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java获取、处理并在同一页面上显示结果

我有一个jsp页面,其中包含一个表单,用户在其中填写一些值。现在,我将这些值传递到一个servlet中,该servlet对其进行处理并重新存储一组相关的数据。现在,我可以在servlet页面中检索数据,但无法在获取请求的同一个jsp页面上显示数据


我不想在jsp中使用java代码。我希望只使用servlet来做同样的事情。我不想做这样的事


<% if(rollno==null)
      // then display the form
   else 
      // process the request on the jsp page itself  
%>

我想在一个servlet文件中处理我的所有reults,然后通过将数据从servlet传递到jsp,在jsp页面上显示结果。我在下面发布我的代码:


<form id="form" method="post" action="searchServlet">
Student Roll No :<br><input type="text" value="" name="rollno"><br><br>
<input type="submit" value="SHOW DETAILS" />
</form>

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {
            String rollno=request.getParameter("rollno");
            ResultSet rs=null;

            Class.forName("com.mysql.jdbc.Driver");  
            String url="jdbc:mysql://localhost/schooldatabase";
            Connection con = DriverManager.getConnection(url,"root","passwd");

            Statement st= (Statement) con.createStatement();
            String strquery="SELECT name,regno FROM `schooldatabase`.`student_info` WHERE rollno="+ rollno+ ";";

            if(!con.isClosed()) {
                rs=st.executeQuery(strquery);

                while(rs.next())
                {
                    out.println(rs.getString("name"));
                    out.println(rs.getString("regno"));
                }
            }

            else
            {    // The connection is closed 
            }
          }           

            catch(Exception e)
            {
                out.println(e);
            }

             finally {            
               out.close();
            }
}

共 (1) 个答案

  1. # 1 楼答案

    您不应该在servlet中进行演示。您应该而不是在servlet中拥有任何

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    
    // ...
                    out.println(rs.getString("name"));
                    out.println(rs.getString("regno"));
    
    // ...
    
                out.println(e);
    

    相反,您应该将数据存储在一个合理的集合中,并将其设置为请求属性,最后将请求/响应转发给JSP,JSP反过来会围绕所有这些数据生成适当的HTML。比如:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            List<Student> students = studentDAO.find(request.getParameter("rollno"));
            request.setAttribute("students", students); // Will be available as ${students} in JSP
            request.getRequestDispatcher("/WEB-INF/students.jsp").forward(request, response);
        } catch (SQLException e) {
            throw new ServletException("Cannot obtain students from DB", e);
        }
    }
    

    students.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    ...
    <table>
        <c:forEach items="${students}" var="student">
            <tr>
                <td>${student.name}</td>
                <td>${student.regno}</td>
            </tr>
        </c:forEach>
    </table>
    

    有关更具体的示例,请参见以下答案:Show JDBC ResultSet in HTML in JSP page using MVC and DAO pattern

    另请参见: