Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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错误不存在';t重定向到错误页面_Java_Mysql_Jsp_Servlets_Redirect - Fatal编程技术网

Java 控制台上的servlet错误不存在';t重定向到错误页面

Java 控制台上的servlet错误不存在';t重定向到错误页面,java,mysql,jsp,servlets,redirect,Java,Mysql,Jsp,Servlets,Redirect,正如您在下面的servlet中看到的,当我尝试输入重复条目时,我遇到了一个问题。问题是tomcat显示了重复的错误,但servlet没有重定向到所需的错误页面(dup_organism.jsp)。然而,当我输入一条新记录并重定向到另一个页面时,代码基本相同,我没有问题。 我有一个servlet: package package_ergasia; import java.sql.*; import java.io.*; import javax.servlet.*; import javax.s

正如您在下面的servlet中看到的,当我尝试输入重复条目时,我遇到了一个问题。问题是tomcat显示了重复的错误,但servlet没有重定向到所需的错误页面(dup_organism.jsp)。然而,当我输入一条新记录并重定向到另一个页面时,代码基本相同,我没有问题。 我有一个servlet:

package package_ergasia;

import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class AddOrganism extends HttpServlet 
{
@Override
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException 
   {
    response.setContentType("text/html");    
    Connection connection= null;    
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "ergasia";    
    String user = "root";
    String password = "password";
    String org_id = request.getParameter("id");  
    String oname = request.getParameter("oname");    


        try {   
            connection = DriverManager.getConnection(url + dbName, user, password);


            Statement statement = connection.createStatement() ;
            ResultSet resultset = statement.executeQuery("SELECT * FROM organism") ;

            while(resultset.next()){

                if(resultset.getString("org_id").equalsIgnoreCase(org_id)){
                    String contextPath= "http://localhost:8084/secured";
                    response.sendRedirect(response.encodeRedirectURL(contextPath + "/dup_organism.jsp"));
                }


                    else{
                        PreparedStatement ps = connection.prepareStatement("INSERT INTO organism (org_id,organismName) VALUES (?,?)");
                        ps.setString(1, org_id);
                        ps.setString(2, oname);                     
                        ps.executeUpdate(); 
                        String contextPath= "http://localhost:8084/secured";
                        response.sendRedirect(response.encodeRedirectURL(contextPath + "/all_organisms.jsp"));
                    }
            }

        } catch (SQLException e) {
            e.printStackTrace();        
        }
    }
    @Override
    public String getServletInfo() {
        return "info";
    }
}  
这是错误页面dup_organism.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"  
        pageEncoding="ISO-8859-1"%>  
<html>  
    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <link rel="stylesheet" type="text/css" href="../CSS/mystyle.css">
    <title>Duplicate entry</title>  
    </head>  
<body>
          <h1>Error</h1>
          <% String org_id = request.getParameter("org_id"); %>

            <h2><div align="center">
            <br><br><br>
            Duplicate data <br> @Organism Id: 
            <% out.println(org_id); %>
            </div></h2>      
</body> 
</html>  

重复条目
错误



重复数据
@生物体Id:

浏览器未显示任何内容(仍在servlet页面上),tomcat显示以下错误:com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:key“PRIMARY”的重复条目“02”

获取null的问题在于使用response.sendRedirect创建请求和响应对象的新实例。您可以执行以下任一操作:

  • 将其替换为request.getRequestDispatcher(url)
  • 在会话对象中设置Org_id并在jsp中检索它
    我无法让第一个开始工作,但在我设置会话对象后,它就像一个符咒一样工作,谢谢。