我如何在jsp

时间:2015-06-22 15:52:32

标签: jsp servlets jdbc

我在ubuntu机器上使用jsp。

使用jdbc,我可以在没有自己的功能的情况下访问我自己的数据库。

我尝试在一个jsp文件中收集所有数据库工具,并在其他jsp文件中调用这些函数。

我的尝试是,

API /的Login.jsp

<%@page import="java.sql.*"%>
<%!
    public int CheckLogin(String login, String password)
    {
        //  query database.
        Class.forName("com.mysql.jdbc.Driver");
        String myUrl = "jdbc:mysql://localhost/prjhd";
...

checkLogin.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@include file="api/Login.jsp"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hyundai co-relation page</title>
    </head>
    <body>
        <%
        //  get parameters.
        String login=request.getParameter("login");
        String password=request.getParameter("password");

        int result=CheckLogin(login, password);
...

尝试访问checkLogin.jsp时,发生异常错误。

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 6 in the jsp file: /api/Login.jsp
Unhandled exception type ClassNotFoundException
3:  public int CheckLogin(String login, String password)
4:  {
5:      //  query database.
6:      Class.forName("com.mysql.jdbc.Driver");
7:      String myUrl = "jdbc:mysql://localhost/prjhd";
8:      Connection conn = DriverManager.getConnection(myUrl,"prjhd","---");
9:      String query = "select password from User where login=?";

我试图搜索这个问题,但我找不到合适的答案。 当我在同一个jsp文件中使用Class.forName(...)时,没有问题。 拆分jsp文件并生成函数时发生此问题。

1 个答案:

答案 0 :(得分:0)

将所有函数放在类/WEB-INF/classes/packageName/className.java中并在那里编译。在这个类中,您需要将package packageName;置于顶部,并使您的函数保持静态(如果您希望能够在不实例化的情况下调用它们)。

示例:

package FunctionsPackage;
import java.sql.*;
public class FunctionsClass
{
    public static int CheckLogin(String login, String password)
    {
        //  query database.
        Class.forName("com.mysql.jdbc.Driver");
        String myUrl = "jdbc:mysql://localhost/prjhd";
        ....
    }
    ...
}

(您可能还需要添加一些错误处理才能使其编译)

然后在您的JSP代码中按packageName.className引用该类。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hyundai co-relation page</title>
    </head>
    <body>
        <%
        //  get parameters.
        String login=request.getParameter("login");
        String password=request.getParameter("password");

        int result=FunctionsPackage.FunctionsClass.CheckLogin(login, password);
...