我在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文件并生成函数时发生此问题。
答案 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);
...