我正在尝试使用Java jsp将数据插入到本地计算机的SQL数据库中

时间:2015-12-11 20:38:41

标签: java jsp servlets

我正在使用Eclipse和Tomcat在java jsp中创建一个Web应用程序。但是我无法将数据插入到我的本地SQL服务器中。页面的表单用HTML编码然后我希望Java代码部分获取输入的数据并将数据插入数据库但是当我单击提交按钮时绝对没有任何反应,没有错误消息,没有警告到目前为止我是只能输入并清除表格。我是Java的新手。我最近刚拿起这种编码语言,但我决定学习它。

Help please here is my full code.


   <%@ page import="java.text.*,java.util.*" session="false"%>
   <%@ page import="java.sql.*" %>
   <%@page import="javax.swing.JOptionPane" %>
   <%@page import="java.util.Date" %>
   <%@page import ="java.io.IOException" %>
   <%@page import ="javax.servlet.ServletException" %>
   <%@page import ="javax.servlet.http.HttpServlet" %>
   <%@page import ="javax.servlet.http.HttpServletRequest" %>
   <%@page import ="javax.servlet.http.HttpServletResponse" %>
   <% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); %>

   <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert Laptops Data</title>
    <link rel="stylesheet" href="Style.css" type="text/css">
    </head>

    <body>

    <%!public class Insert extends HttpServlet {



        String dbURL = "jdbc:sqlserver://localhost\\SQLYRSIN";
        String user = "pass";
        String pass = "pass";
        Connection conn = null;
        PreparedStatement InsertLaptops = null;
        ResultSet resultSet = null;

        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException  {

            String LaptopMake, LaptopModel, LaptopServicetag, LaptopDatein, LaptopNotes, LaptopType;
            LaptopMake = req.getParameter("iMake");
            LaptopModel = req.getParameter("iModel");
            LaptopServicetag = req.getParameter("iServiceTag");
            LaptopDatein = req.getParameter("iDatein");
            LaptopNotes = req.getParameter("iNotes");
            LaptopType = req.getParameter("iType");

            try {

                conn = DriverManager.getConnection(dbURL, user, pass);

                Statement st = conn. createStatement();
                st.executeUpdate("INSERT INTO LaptopsTable (Make, Model,  [Service Tag], Datein, Notes, Type)"
                                + " VALUES  ('"+LaptopMake+"','"+LaptopModel+"','"+LaptopServicetag+"','"+LaptopDatein +"','"+LaptopNotes+"','"+LaptopType+"')");

                JOptionPane.showConfirmDialog(null, "Your Data Has been  Inserted", "Result", JOptionPane.DEFAULT_OPTION,
                        JOptionPane.PLAIN_MESSAGE);
                st.close();
                conn.close();

            } catch (SQLException ex) {
                ex.printStackTrace();
            }

        }


    }%>
        <div id="header">
        <div class="logo">
            <a href="#"><span> Resident Screening</span> Jinventory </a>
        </div>
    </div>

    <div id="container">
        <div class="content">
            <h1>Add New Laptop</h1>

            <p>Make sure all Service Tag Enter in here are Laptops</p>

            <div id="box">
                <form name="LaptopsForm" method="get" class="contentfonts"
                    action="LaptopsInsert2.jsp" method="Post">
                    <table>
                        <tbody>

                            <tr>
                                <td>Service Tag</td>
                                <td><input type="text" name="iServiceTag" size="40"></td>
                            </tr>
                            <tr>
                                <td>Make</td>
                                <td><input type="text" name="iMake" size="40"></td>
                            </tr>
                            <tr>
                                <td>Model</td>
                                <td><input type="text" name="iModel"></td>
                            </tr>
                            <tr>
                                <td>Date</td>
                                <td><input type="date" name="iDate"></td>
                            </tr>
                            <tr>
                                <td>Type</td>
                                <td><input type="text" name="iTyped"  Value="Laptop"
                                    disabled="disabled"></td>
                            </tr>
                            <tr>
                                <td>Notes</td>
                                <td><input Type="text" name="iNotes" size="30" height="40"></td>
                            </tr>

                            <tr>
                                <td><input type="reset" name="Reset"></td>
                                <td><input type="submit" name="submit"></td>
                            </tr>
                        </tbody>
                    </table>
                </form>


            </div>

        </div>
    </div>

    </body>
    </html>

1 个答案:

答案 0 :(得分:0)

这是一个你可以用作起点的草稿。

如前所述,您应该认真考虑对设计进行一些更改:

  • 从Business-Logic(SQL-Statements等)
  • 分离视图(.jsp)
  • 不要使用scriptlet(&lt;%等)
  • 在JSP中创建Servlet太过分了 - 一个JSP由servlet容器编译成一个servlet。
  • 不要逐个创建连接。使用连接池。这将很快得到回报。

在代码中,您会看到对设置进行的一些更改:

  • 表单按POST提交
  • 而不是子类,JSP检查方法POST,然后才尝试插入。
  • 永远不会在Web应用中使用Swing。如果JOptionPane被打开,那么您的webapp将在此时阻止,而对话框显示在您服务器的某个位置。
  • 使用PreparedStatement代替Statement可以防止SQL注入。如果您打算再次在webapp中显示插入的值,则仍需要检查跨站点脚本。

免责声明:我尚未测试甚至尝试编译此代码。编辑只是为了指向正确的方向。

在这里

<%@page import="java.text.*,java.util.*" session="false"%>
<%@page import="java.sql.*" %>
<%@page import="java.util.Date" %>
<%@page import ="java.io.IOException" %>
<%@page import ="javax.servlet.ServletException" %>
<%@page import ="javax.servlet.http.HttpServlet" %>
<%@page import ="javax.servlet.http.HttpServletRequest" %>
<%@page import ="javax.servlet.http.HttpServletResponse" %>
<% Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert Laptops Data</title>
<link rel="stylesheet" href="Style.css" type="text/css">
</head>

<body>

<%
if("POST".equals(request.getMethod()) {

  String dbURL = "jdbc:sqlserver://localhost\\SQLYRSIN";
  String user = "pass";
  String pass = "pass";
  Connection conn = null;
  PreparedStatement InsertLaptops = null;
  ResultSet resultSet = null;


  String LaptopMake, LaptopModel, LaptopServicetag, LaptopDatein, LaptopNotes, LaptopType;
  LaptopMake = req.getParameter("iMake");
  LaptopModel = req.getParameter("iModel");
  LaptopServicetag = req.getParameter("iServiceTag");
  LaptopDatein = req.getParameter("iDatein");
  LaptopNotes = req.getParameter("iNotes");
  LaptopType = req.getParameter("iType");

  try {

    conn = DriverManager.getConnection(dbURL, user, pass);

    PreparedStatement st = conn.prepareStatement("INSERT INTO LaptopsTable (Make, Model,  [Service Tag], Datein, Notes, Type) VALUES (?,?,?,?,?,?)");
    st.setString(1, LaptopMake);
    st.setString(2, LaptopModel);
    st.setString(3, LaptopServicetag);
    st.setString(4, LaptopDatein);
    st.setString(5, LaptopNotes);
    st.setString(6, LaptopType);

    st.executeUpdate();

    //This is SWING - and would at best popup a Dialog ON YOUR SERVER
    //JOptionPane.showConfirmDialog(null, "Your Data Has been  Inserted", "Result", JOptionPane.DEFAULT_OPTION,
    //        JOptionPane.PLAIN_MESSAGE);

    //Alternative: Show some HTML.                
    %>
    <h1>Your Data has been inserted.</h1>
    <%

    st.close();
    conn.close();

  } catch (SQLException ex) {
    ex.printStackTrace();
  }


} //END of Method.equals("POST")
%>
    <div id="header">
    <div class="logo">
        <a href="#"><span> Resident Screening</span> Jinventory </a>
    </div>
</div>

<div id="container">
    <div class="content">
        <h1>Add New Laptop</h1>

        <p>Make sure all Service Tag Enter in here are Laptops</p>

        <div id="box">
            <form name="LaptopsForm" method="POST" class="contentfonts"
                action="" method="POST">
                <table>
                    <tbody>

                        <tr>
                            <td>Service Tag</td>
                            <td><input type="text" name="iServiceTag" size="40"></td>
                        </tr>
                        <tr>
                            <td>Make</td>
                            <td><input type="text" name="iMake" size="40"></td>
                        </tr>
                        <tr>
                            <td>Model</td>
                            <td><input type="text" name="iModel"></td>
                        </tr>
                        <tr>
                            <td>Date</td>
                            <td><input type="date" name="iDate"></td>
                        </tr>
                        <tr>
                            <td>Type</td>
                            <td><input type="text" name="iTyped"  Value="Laptop"
                                disabled="disabled"></td>
                        </tr>
                        <tr>
                            <td>Notes</td>
                            <td><input Type="text" name="iNotes" size="30" height="40"></td>
                        </tr>

                        <tr>
                            <td><input type="reset" name="Reset"></td>
                            <td><input type="submit" name="submit"></td>
                        </tr>
                    </tbody>
                </table>
            </form>
        </div>
    </div>
</div>
</body>
</html>