Java 使用JSP插入到表中

Java 使用JSP插入到表中,java,oracle,jsp,Java,Oracle,Jsp,我使用以下代码使用JSP插入到表中: <%@ page import="java.sql.*" %> <%@ page language="java" import="java.sql.*" %> <%@page contentType="text/html" pageEncoding="UTF-8"%> <html> <head>conn</head> <body> <form action = "" m

我使用以下代码使用JSP插入到表中:

<%@ page import="java.sql.*" %>
<%@ page language="java" import="java.sql.*" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>conn</head>
<body>
<form action = "" method = "POST">
id : <input type = "text" name = "eid">
name: <input type="text" name="first_name">
<input type="submit" value="Submit" />
</form>
<% 
String data1 = request.getParameter("eid");
String data = request.getParameter("first_name");
%>

<%
Connection conn = null; 
Statement stmt = null; 
ResultSet result = null; 
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","Password"); 
PreparedStatement ps = null;
String query = "insert into employee(eid,ename) values(?,?)";       
ps = conn.prepareStatement(query);
ps.setString(1,data1);
ps.setString(2,data);
ps.executeUpdate();
%>
</body>
</html>

康涅狄格州
身份证件:
姓名:
我收到错误“ORA-01400:无法在(“系统”、“员工”、“EID”)中插入NULL”

在表单出现之前,我就收到了这个错误。 为什么在单击“提交”按钮之前插入


谢谢

当页面加载时,内部的每个块都在服务器端执行,并将结果传递给页面。因此,您得到了上述行为


您的块与fom没有任何关系。

加载页面时,在服务器端执行其中的每个块,并将结果传递给页面。因此,您得到了上述行为


您的块与fom没有任何关系。

如果您只想使用JSP:

您可以将
之间的所有代码放在另一个jsp页面中,在该页面中向其传递数据


但这不是一个好的实践,建议使用
servlet
,从
jsp
获取数据并将其传递给bean,也可以在
bean
中将代码连接到数据库

如果只想使用JSP:

您可以将
之间的所有代码放在另一个jsp页面中,在该页面中向其传递数据


但这不是一个好的实践,建议使用
servlet
,从
jsp
获取数据并将其传递给bean,也可以在
bean
中将代码连接到数据库

如果您想让JSP能够发布到自身并处理请求,我可能会执行以下操作:

<%

String eid = request.getParameter("eid");
String first_name = request.getParameter("first_name");
if(eid != null && first_name != null){ 
    Connection conn = null; 
    Statement stmt = null; 
    ResultSet result = null; 
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    try{
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","Password"); 
        PreparedStatement ps = null;
        String query = "insert into employee(eid,ename) values(?,?)";       
        ps = conn.prepareStatement(query);
        ps.setString(1,eid);
        ps.setString(2,first_name);
        ps.executeUpdate();
    }catch(SQLException sqle){
        //log sql exception     
    } finally {
        if(conn != null){
            try{
                conn.close();
            }catch(SQLException sqle){
                //log exception
            }
    }
}
%>


请记住,使用JSP时,所有工作都是在服务器端完成的,因此,如果代码中存在逻辑错误,那么大多数错误都会在页面完全呈现之前发生。如果要对数据库进行查询,则应确保已发送必要的信息。您可以通过JSP页面的请求对象来访问该信息。接下来,我在代码周围放了一个if语句,以确保填充了这两个值。最后,我将代码放在try/catch/Finally结构中,以确保数据库连接已关闭。这最后一点对你来说可能没什么大不了的(我认为你这样做是为了上课或者只是为了学习)但是,如果您长时间运行服务器而忘记关闭数据库连接,则可能会出现问题。

如果您想让JSP能够自行发布并处理请求,我可能会执行以下操作:

<%

String eid = request.getParameter("eid");
String first_name = request.getParameter("first_name");
if(eid != null && first_name != null){ 
    Connection conn = null; 
    Statement stmt = null; 
    ResultSet result = null; 
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    try{
        conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","Password"); 
        PreparedStatement ps = null;
        String query = "insert into employee(eid,ename) values(?,?)";       
        ps = conn.prepareStatement(query);
        ps.setString(1,eid);
        ps.setString(2,first_name);
        ps.executeUpdate();
    }catch(SQLException sqle){
        //log sql exception     
    } finally {
        if(conn != null){
            try{
                conn.close();
            }catch(SQLException sqle){
                //log exception
            }
    }
}
%>

请记住,使用JSP时,所有工作都是在服务器端完成的,因此,如果代码中存在逻辑错误,那么大多数错误都会在页面完全呈现之前发生。如果要对数据库进行查询,则应确保已发送必要的信息。您可以通过JSP页面的请求对象来访问该信息。接下来,我在代码周围放了一个if语句,以确保填充了这两个值。最后,我将代码放在try/catch/Finally结构中,以确保数据库连接已关闭。最后一点对您来说可能没什么大不了的(我认为您这样做是为了上课或只是为了学习),但如果您长时间运行服务器,并且忘记关闭数据库连接,则可能会出现问题