无法从数据库中检索数据并使用Servlet在JSP中显示

时间:2016-04-27 10:32:14

标签: java jsp servlets

我是JSP和Servlets的初学者。我已经搜索了这个问题,但无法找到解决方案的确切内容。

我将数据从jsp传递到servlet并插入数据库并从那里检索并传递给JSP进行显示

我能够从JSP传递数据并成功插入数据库但无法再次检索并显示在jsp中。下面是代码。

JSP:

<!DOCTYPE HTML><%@page language="java"
    contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<html>
<head>
<title>loginform</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
<body>
<form name=loginform action=TestServlet method=post>


Input ID <input type=text name="id" size=10></input> <br><br>

<Input type="button" value=Retrive> <br>
<label for = "getdata" ></label> <br>

value is <%= request.getSession().getAttribute("data") %>
<input type=submit value=submit></input>
</form>

</body>
</html>

的Servlet

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.sql.*;

/**
 * Servlet implementation class TestServlet
 */
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

        }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub

         response.setContentType("text/html");

          // Actual logic goes here.
         try {

             String getvalue=request.getParameter("id");
             PrintWriter out = response.getWriter();
             out.println(getvalue);
             out.println("attempting to read from table");

             Class.forName("oracle.jdbc.driver.OracleDriver");              
            // Open a connection
             Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@IP:Port:ServiceName, UN, Pass);
                             // Execute SQL query
             Statement stmt = conn.createStatement();
             String sqlinsert, sqlselect;
             sqlinsert = "Insert into abc(abc) values("+getvalue+")";
             sqlselect="Select abc from abc";

             ResultSet rs = stmt.executeQuery(sqlinsert);
             ResultSet rs1 = stmt.executeQuery(sqlselect);
             int id=0 ;
             // Extract data from result set
             while(rs1.next()){
                //Retrieve by column name
                id  = rs1.getInt("ABC");

                //Display values

                out.println("ID: " + id + "<br>");

             }
             HttpSession session = request.getSession(false); 
             request.setAttribute("data",  "0");
                request.getRequestDispatcher("/loginform.jsp").forward(request, response);
            // out.println("</body></html>");

             // Clean-up environment
             rs.close();
             stmt.close();
             conn.close();
          }catch(SQLException se){
             //Handle errors for JDBC
             se.printStackTrace();
          }catch(Exception e){
             //Handle errors for Class.forName
             e.printStackTrace();
          }

    }

}

我无法理解问题出在哪里。每次运行代码时,我都只能在JSP中看到null

3 个答案:

答案 0 :(得分:2)

在您的Java代码中,您使用request.setAttribute("data", "0");,但在JSP页面中使用request.getSession().getAttribute("data"),因此您将无法获取数据。

答案 1 :(得分:2)

只需将request.getSession().getAttribute("data")更改为request.getAttribute("data"),即可正常使用。

答案 2 :(得分:1)

您实际上是在会话中存储数据并尝试从请求范围中获取数据,因此我认为您的数据为空值。

在jsp中移除<%= request.getSession().getAttribute("data") %>行并使用此行<%= request.getAttribute("data") %>