【问题标题】:HTTP Status 404 - /DBinsertHTTP 状态 404 - /DBinsert
【发布时间】:2017-02-21 16:21:13
【问题描述】:

It is a executed jsp file.

当我在执行的jsp文件中填写表格并单击注册按钮时,它会显示以下输出页面。

After clicking the signup button, the output page

我的 servlet 文件代码是

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

import com.mysql.jdbc.Statement;

/**
 * Servlet implementation class for Servlet: DBinsert
 *
 */
 public class DBinsert extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;

    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#HttpServlet()
     */
    public DBinsert() {
        super();
    }       

    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String fname=request.getParameter("fname");
String sname=request.getParameter("sname");
String user=request.getParameter("uname");
String pwd=request.getParameter("pwd");
String email=request.getParameter("email");
String phone=request.getParameter("phone");
/*int ph=Integer.parseInt(phone);

if (phone.length()!=10) 
        {
    JOptionPane.showMessageDialog(null,"errormsg" );
            String e="Check phone number ";

            request.setAttribute("errormsg", e);
            request.getRequestDispatcher("SignNIIT.jsp").forward(request, response);
        }
        else
        */{
            try {
                Class.forName("com.mysql.jdbc.Driver");
                        Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "");
                        String code="insert into prct.db (lastname,username,password) values (?,?,?)";
                        PreparedStatement ps=con.prepareStatement(code);
                        //ps.setString(1, fname);
                        ps.setString(1, sname);
                        ps.setString(2, user);
                        ps.setString(3, pwd);
                        //ps.setString(5, email);
                        //ps.setString(6, phone);
                        ps.executeUpdate();
                        //JOptionPane.showMessageDialog(null, "Sucessfull");
                    String msg="!!! Registered Sucessfully !!! ";
                        request.setAttribute("data", msg);
                        request.getRequestDispatcher("SignU.jsp").forward(request, response);

            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
    }   

而我的 web.xml 文件是

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <display-name>aWebTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>DBinsert</display-name>
    <servlet-name>DBinsert</servlet-name>
    <servlet-class>dbAccess.DBinsert</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DBinsert</servlet-name>
    <url-pattern>/DBinsert</url-pattern>
  </servlet-mapping>
</web-app>

我无法解决此错误。 请帮帮我。

【问题讨论】:

    标签: java jsp servlets tomcat8


    【解决方案1】:

    您可以使用注解代替web.xml(从servlets 3.0 开始)。试试这个代码。

    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.JOptionPane;
    
    import com.mysql.jdbc.Statement;
    
    /**
     * Servlet implementation class for Servlet: DBinsert
     *
     */
     @WebServlet(name = "DBinsert", urlPatterns = { "/DBinsert" })
     public class DBinsert extends HttpServlet {
       static final long serialVersionUID = 1L;
    
        /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#HttpServlet()
         */
        public DBinsert() {
            super();
        }       
    
        /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    String fname=request.getParameter("fname");
    String sname=request.getParameter("sname");
    String user=request.getParameter("uname");
    String pwd=request.getParameter("pwd");
    String email=request.getParameter("email");
    String phone=request.getParameter("phone");
    /*int ph=Integer.parseInt(phone);
    
    if (phone.length()!=10) 
            {
        JOptionPane.showMessageDialog(null,"errormsg" );
                String e="Check phone number ";
    
                request.setAttribute("errormsg", e);
                request.getRequestDispatcher("SignNIIT.jsp").forward(request, response);
            }
            else
            */{
                try {
                    Class.forName("com.mysql.jdbc.Driver");
                            Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306", "root", "");
                            String code="insert into prct.db (lastname,username,password) values (?,?,?)";
                            PreparedStatement ps=con.prepareStatement(code);
                            //ps.setString(1, fname);
                            ps.setString(1, sname);
                            ps.setString(2, user);
                            ps.setString(3, pwd);
                            //ps.setString(5, email);
                            //ps.setString(6, phone);
                            ps.executeUpdate();
                            //JOptionPane.showMessageDialog(null, "Sucessfull");
                        String msg="!!! Registered Sucessfully !!! ";
                            request.setAttribute("data", msg);
                            request.getRequestDispatcher("SignU.jsp").forward(request, response);
    
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      我猜您确实将数据发布到您的 Servlet,但只覆盖了 doGet-Method。

      尝试覆盖doPost方法

      【讨论】:

      • 感谢您的回复,但是如何覆盖 dopost 方法
      • 通过将 protected void doGet(...) 更改为 protected void doPost(...)
      猜你喜欢
      • 2018-03-05
      • 1970-01-01
      • 2015-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      • 2017-01-04
      相关资源
      最近更新 更多