从JSP中的java类调用函数

时间:2015-09-19 10:53:58

标签: java mysql jsp

我有一个名为ManagerBook.java的无状态会话java类,我有以下方法:

public int findBook(int isbn) throws SQLException, ClassNotFoundException{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(url, user, password);

String find = "SELECT * from book WHERE isbn = ?";
PreparedStatement stt = con.prepareStatement(find);
stt.setInt(1, isbn);
ResultSet rs = stt.executeQuery();

int found = 0;
if (rs.next()) {
    int isbn1 = rs.getInt("isbn");
    String title = rs.getString("title");
    Book b1 = new Book();
    b1.setIsbn(isbn1);
    b1.setTitle(title); 

    found = 1;
}
con.close();
stt.close();
rs.close();
return found;
}

更新1 - Book.java类

package book;
import javax.persistence.Entity;
import javax.persistence.Id;

 @Entity
 public class Book {

    private int isbn;
    private String title;

    @Id
    public int getIsbn() {
        return isbn;
    }

    public void setIsbn(int isbn) {
        this.isbn = isbn;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }

  }

接下来,在我的JSP页面中,我想检索我在输入字段中输入的isbn数字的数据。它应该根据我在ManagerBook.java类中的sql查询显示isbn和其他详细信息。当我单击提交按钮时,它应显示带有我在输入字段中输入的ISBN号的书籍的ISBN和标题。请帮忙。如何在JSP中获取ISBN和磁贴?感谢

find.jsp

<%@page import="java.util.*, book.*" %>

    <jsp:useBean id = "bm" class="book.ManagerBook" scope = "session"/> 

    <%
        int success = 0;

    Boolean submitted =   Boolean.parseBoolean(request.getParameter("submitted"));
    if(submitted){
        int isbn = Integer.parseInt(request.getParameter("isbn"));      
        success = bm.findBook(isbn);
    }   

    %>

    <h1> Welcome to ABC Library</h1>

    <form>
    <table>
        <tr>
            <td> Enter Details </td>
            <td><input type="text" name="isbn"></td>
            <td><input type="submit" name="find" value="find"></td>
    </tr>
    </table>
        <input type="hidden" name="submitted" value="true">
</form> 

        <%
        if((success == 1) && (submitted)){%> 
            <table>
    <tr>
    <td colspan=2>
    <h2>Book Found</h2>
    </td>
    </tr>

    <tr>
        <td><h3>ISBN</h3></td>
        <td><h3>Title</h3></td>
    </tr>   

    <tr>
        <td><%=b1.getIsbn%></td>
        <td><%=b1.getTitle() %></td>
    </tr>
        </table>    

    <%} else if (submitted){ %>
        <h3> Book Not Found</h3>
        <% } %>

更新3 - 错误在这里

   <tr>
        <td><%=b1.getIsbn%></td>
        <td><%=b1.getTitle() %></td>
    </tr>
        </table>    

    <%} else if (submitted){ %>
        <h3> Book Not Found</h3>
        <% } %>

1 个答案:

答案 0 :(得分:0)

在表单中,将操作指定为jsp本身。

<form action="find.jsp" method="GET">

因此,无论何时提交表单,它都会将其重定向到相同的jsp。 在请求对象中,将出现isbn数字,该数字将被传递给java类中定义的函数。

Refer this link for more detailed explanation.

获取isbn号码和书名使用

<%if((success == 1) && (submitted)){%> 
Book Found
ISBN Number=<%=request.getparameter("isbn")%>
Book Name=<%=bm.getBookName()%><!-- getBookName() method in ManagerBook -->
<%}
else
{
%>
Book Not found
<%}%>