无法在jsp

时间:2015-09-01 07:47:32

标签: java mysql jsp

我试图在运行Web应用程序后连接mysql数据库时出现如下错误: HTTP状态500 - 内部服务器错误 类型异常报告 消息内部服务器错误 description服务器遇到内部错误,导致无法完成此请求。 例外 javax.servlet.ServletException:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:拒绝访问用户'' localhost'到数据库' mysqluser = root'

根本原因

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:拒绝用户访问'' localhost'到数据库' mysqluser = root'

注意GlassFish Server Open Source Edition 4。0日志中提供了异常的完整堆栈跟踪及其根本原因。 GlassFish Server开源版4.0

我的JSP代码是:

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

<%
字符串fname = request.getParameter(&#34; fname&#34;);

`String lname = request.getParameter("lname");
`String email = request.getParameter("email");
`String user = request.getParameter("uname"); 
`String pwd = request.getParameter("pass");

Class.forName("com.mysql.jdbc.Driver"); 连接con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root"); 语句st = con.createStatement();

`int i = st.executeUpdate("insert into members(first_name, last_name,email, uname, pass) values ('" + fname + "','" + lname + "','" + email + "','" + user + "','" + pwd + "')");
`if (i > 0)
`{
 `out.print("Registration Successfull!"+"<ahref='index.jsp'>Go to Login</a>");
`} 
`else {
    `response.sendRedirect("index.jsp");

} %GT; `

我的数据库没有任何密码。 我通过以下步骤在netbeans中建立连接: 第1步:服务选项卡 第2步:右键单击Databases并选择New Connection ... 第3步:按照步骤操作。 测试连接成功完成。 我正在使用Linux Fedora 20 OS

2 个答案:

答案 0 :(得分:1)

您缺少密码参数...即使您没有密码登录,但使用empt字符串添加...并检查您是否将tomql库添加到tomcat或glassfish

答案 1 :(得分:1)

声明Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql"+ "user=root");错误,因为:

url"user=root"的连接将导致字符串:jdbc:mysql://localhost:3306/mysqluser=root,这是明确错误的。在URL中,您缺少数据库名称(如果它是mysql,那么您在命名时遇到问题,我建议您更改数据库名称)。

<强>解决方案:

分别为url,user和password定义变量(即使未设置密码,也必须将其作为空字符串提供)。请参阅以下代码:

String url="jdbc:mysql://localhost:3306/databaseName";
String user="root";
String password="";

Connection conn = DriverManager.getConnection(url, user, password);

希望它有所帮助。

P.S。在jsp中编写db逻辑是个坏主意。最好将其他类中的数据库管理代码外部化,并使用它来获取相应的连接。

P.P.S。在完成它们之后不要忘记管理你的数据库资源(我正在谈论你正在关闭Connection,PreparedStatement,ResultSet的finally块)以释放使用过的资源并避免内存泄漏。编写一个分离的方法是个好主意,该方法接受这些参数并将它们检查为null,如果condition为true,则相应的资源将被关闭。