使用Javaservlet和Netbeans从Oracle数据库查询数据

使用Javaservlet和Netbeans从Oracle数据库查询数据,java,jsp,netbeans,servlets,Java,Jsp,Netbeans,Servlets,从index.jsp代码 statement.executeQuery("select * from fus where tester_num like 'hf60' ") ; 示例我希望“hf60”是一个变量(userinput),其中用户必须从输入文本中输入/写入数据,然后提交并获取数据,这样结果将是 ("select * from fus where tester_num like 'userinput' ") 我应该在哪里插入代码,是在InsertServlet.java中还是在I

从index.jsp代码

statement.executeQuery("select * from fus where tester_num like 'hf60' ") ;
示例我希望“hf60”是一个变量(userinput),其中用户必须从输入文本中输入/写入数据,然后提交并获取数据,这样结果将是

("select  * from fus where tester_num like 'userinput' ")
我应该在哪里插入代码,是在InsertServlet.java中还是在Index.jsp中。?或者生成另一个filename.java代码?请帮忙。谢谢;)

Index.jsp

<%@ page import="java.sql.*" %>

<%  Class.forName("oracle.jdbc.driver.OracleDriver"); %>

<HTML>
<HEAD>
    <TITLE>SHIFT REPORT </TITLE>
</HEAD>

<BODY BGCOLOR=##342D7E>
    <CENTER>
    <H2><FONT COLOR="#ECD672" FACE="Verdana" >SHIFT REPORT</FONT></H2></CENTER>
<hr>
    <% 


 Connection connection=DriverManager.getConnection ("jdbc:oracle:thin:@oradev2.*****.com:1521:RPADB","shift_admin",  //
         "shift_admin"
            );

        Statement statement = connection.createStatement() ;
//**Should I input the codes here?**
        ResultSet resultset = 
            statement.executeQuery("select  * from fus where tester_num like 'hf60") ; 
    %>

    <TABLE BORDER="1" BGCOLOR="CCFFFF" width='200%' cellspacing='1' cellpadding='0'   bordercolor="black" border='1'>
        <TR>
            <TH bgcolor='#DAA520'> <font size='2'>RECORD NUMBER</TH>
            <TH bgcolor='#DAA520'><font size='2'>TESTER NUMBER</TH>
            <TH bgcolor='#DAA520'><font size='2'>DATE</TH>
            <TH bgcolor='#DAA520'><font size='2'>TIME</TH>
            <TH bgcolor='#DAA520'><font size='2'>SYSTEM TYPE</TH>
            <TH bgcolor='#DAA520'><font size='2'>PACKAGE</TH>
            <TH bgcolor='#DAA520'><font size='2'>SOCKETS</TH>
            <TH bgcolor='#DAA520'><font size='2'>VALIDATED BY</TH>
        </TR>

        <% while(resultset.next()){ %>
        <TR>
            <TD> <font size='2'><center><%= resultset.getLong(1) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(2) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getDate(3) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(4) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(5) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(6) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(7) %></center></TD>
            <TD> <font size='2'><center><%= resultset.getString(8) %></center></TD>
            </TR>

        <% } %>

    </TABLE>     
        </BODY>
</HTML>

您可以在
JSP
中访问请求。因此,如果您的
JSP
是这样访问的:

test.jsp?q=userinput
您可以在
JSP
中这样访问它:

request.getParameter('userinput');
执行此操作时,应将
JSP
代码转换为至少使用
preparedStatement

PreparedStatement ps = connection.prepareStatement("select * from fus where tester_num like ?");
ps.setString(1, "%" + request.getParameter('userinput') + "%");
ResultSet resultSet = ps.executeQuery();

正如tvanfosson所说,您应该从视图逻辑(JSP)中删除所有数据库访问代码。您应该只在JSP中显示信息,让Servlet完成所有处理。我还强烈建议您使用类似Hibernate的OMR框架。

如果您坚持使用这种设计,我建议您使用。这提供了一组用于访问数据、控制逻辑和执行SQL访问的标记

请参见标准标记库和上的Sun教程。这是一种比将scriptlet嵌入JSP好得多的方法。这就是说,我建议这种方法(或scriplets)只用于原型或作为非常临时的修复

使用JSTL,您可以用类似于以下内容的内容替换所有scriptlet:

<sql:query var="rows" >
    select  * from fus where tester_num like ?
    <sql:param value="${param.user_input}" />
</sql:query>

<table>
   <c:forEach var="row" items="${rows}">
      <tr>
         <td>${row.column1name}</td>
         <td>${row.column2name}</td>
         <td>${row.column3name}</td>
      </tr>
   </c:forEach>
</table>

从fus中选择*,测试仪的编号如何?
${row.column1name}
${row.column2name}
${row.column3name}

也许可以对这个答案提出警告,这不是推荐的最佳做法…@JamesSchek最佳做法是什么?
<sql:query var="rows" >
    select  * from fus where tester_num like ?
    <sql:param value="${param.user_input}" />
</sql:query>

<table>
   <c:forEach var="row" items="${rows}">
      <tr>
         <td>${row.column1name}</td>
         <td>${row.column2name}</td>
         <td>${row.column3name}</td>
      </tr>
   </c:forEach>
</table>