Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/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中的init()继续到doGET()_Java_Servlets - Fatal编程技术网

Java 不会从servlet中的init()继续到doGET()

Java 不会从servlet中的init()继续到doGET(),java,servlets,Java,Servlets,我正在为学校编写一个管理产品的web应用程序。设计如下: 在我使用servlet检查登录后,我被转发到另一个名为ManageMainPageServlet的servlet,在该servlet中,doGet a)发布html,该html由两个表单组成,用于搜索产品,b)将产品插入数据库 在填写第一个表单(搜索产品表单)后,它被传递到同一servlet中的post方法,后者反过来将其重定向到SearchProductservlet 我在那里定义了init()来注册连接到数据库的所有变量(我已经测试并

我正在为学校编写一个管理产品的web应用程序。设计如下:

在我使用servlet检查登录后,我被转发到另一个名为ManageMainPageServlet的servlet,在该servlet中,doGet a)发布html,该html由两个表单组成,用于搜索产品,b)将产品插入数据库

在填写第一个表单(搜索产品表单)后,它被传递到同一servlet中的post方法,后者反过来将其重定向到SearchProductservlet

我在那里定义了init()来注册连接到数据库的所有变量(我已经测试并运行了数据库)

在初始化之后(我知道第一次只运行一次),我假设代码会转到doGet方法,开始管理查询。这对我不起作用,它会返回到ManageMainPageServlet

我试过使用dispatcher.forward,我现在写的是,如果我尝试将其更改为response.redirect,它甚至无法访问SearchProduct中的init()函数

我错过了什么

这是ManageMainPageServlet的代码:

@WebServlet(name = "ManageMainPageServlet", urlPatterns = {"/ManageMainPageServlet"})
public class ManageMainPageServlet extends HttpServlet {
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        HttpSession session = request.getSession(false);
        if(session==null || (Boolean)session.getAttribute("logged") == false)
            response.sendRedirect("index.html");
        out.println("<!DOCTYPE html>"+
                        "<html>\n"+
                        "<head><title>Welcome to Main Page</title></head>\n"+
                        "<body>\n"+
                        "<h1> Welcome to Main Page</h1>\n"+
                        "<form action=\"ManageMainPageServlet\" method=\"POST\">\n"+
                        " Enter product name and\\or product id to search:<br>\n"+
                        "Product Name: <input type=\"text\" name=\"productName\" /><br>\n"+
                        "Product ID:<input type=\"text\" name=\"productId\" /> <br>\n"+
                        " <input type=\"hidden\" name=\"direction\" value=\"/SearchProduct\">\n"+
                        " <input type=\"submit\" />\n"+
                        "</form>\n"+
                        " <form action=\"ManageMainPageServlet\" method=\"POST\">\n"+
                        "Fill in the fields to enter new product into DB.\n"+
                        " <br>Product Name: <input type=\"text\" name=\"productName\" />\n"+
                        " <br>Product ID: <input type=\"text\" name=\"productId\" />\n"+
                        "<br>Price:  <input type=\"text\" name=\"price\" />\n"+
                        "<br>Quantity: <input type=\"text\" name=\"productId\" />\n"+
                        " <br>Product Description: <br><textarea rows=\"4\" cols=\"50\"  name=\"description\"></textarea>\n"+
                        " <input type=\"hidden\"  name=\"direction\" value=\"\">\n"+
                        "  <br> <input type=\"submit\" />\n"+
                        "  </form>\n"+
                        " <form action=\"LogOutServlet\" method=\"GET\">\n"+
                        " <input type=\"submit\" value=\"logout\"/>\n"+
                        " </form>\n"+
                        "</body></html>");
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String direction = request.getParameter("direction");
        //response.sendRedirect(direction);
        RequestDispatcher rd = request.getRequestDispatcher(direction);
        rd.forward(request, response);
    }
这是SearchProduct servlet的代码:

@WebServlet(name = "SearchProduct", urlPatterns = {"/SearchProduct"})
public class SearchProduct extends HttpServlet {
    private Connection con=null;
    private String url=null;
    private String user=null;
    private String password=null;
    private String odbcDriver=null;

    /**
     * initializes servlet with db connection and throws back error if the 
     * connection failed for some reason
     */
   @Override
   public void init(ServletConfig servletConfig) throws ServletException {
       try {
           this.url = servletConfig.getInitParameter("dbUrl");
           this.user = servletConfig.getInitParameter("user");
           this.odbcDriver = servletConfig.getInitParameter("odbcDriver");

           Class.forName(odbcDriver);

        } catch (Exception e) {
            //decide how to handle the exception
            System.out.println("Failed to load the driver");
            return;
        }

   }

    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String productName = request.getParameter("productName");
        String productID = request.getParameter("productID");

        try {
            try {
                // Create the connection to the database    
                con = DriverManager.getConnection(url,user,password);
                System.out.println("Made a connection to the database");
            } catch (Exception e) {
                System.out.println("Exception was thrown:\n"); 
                e.printStackTrace();
            }
            // Get a statement object from the connection
            //
            Statement statement = con.createStatement();
            if(productID==null);

       } catch (Exception e) {
           System.out.println("Exception was thrown:\n"); 
           e.printStackTrace();
       } finally {
           try {
               if (con != null) { con.close(); }
           }catch (SQLException e) {
               e.printStackTrace();
           }
       }
    }
}

哇,代码太多了。你能回答吗?这个问题对你有帮助吗?为什么假定控制权会转到
doGet()
<当通过HTTP请求servlet的映射URL时,将调用code>doGet()<代码>初始化()在servlet加载时被调用。