JSP链接数据库(MySQL)
最近在学JSP,记录一下关于JSP链接数据库的一些笔记。
首先通过两个JSP网页模拟一个验证查询的功能:
1.index.jsp(简单的一个验证表单):
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="check.jsp" method="post">
<input type="text" name="uname"><br>
<input type="submit" name="提交"><br>
</form>
</body>
</html>
因为自己这里用的数据库比较单一,所以就只打算通过查询名称进行验证;
2.check.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" import="java.uitl.*"%><!-- 注意这里的导包格式 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/zxy?&useSSL=false&serverTimezone=UTF-8&useSSL=false&serverTimezone = GMT";
String username = "root";
String password = "zxy170518.";
Connection connection = null;//链接数据库
PreparedStatement pstmt=null;//执行sql语句
// Statement stmt=null;
ResultSet rs=null;//存放结果集(查询使用)
try {
Class.forName(driver);//建立连接mysql
connection=DriverManager.getConnection(url,username,password);
if(!connection.isClosed())
{out.print("数据库连接成功!");}//验证是否连接成功
String sql="select * from tb1 where name = ?";
pstmt=connection.prepareStatement(sql);//对sql语句进行预编译
String names=request.getParameter("uname");//获取到index中的uname,传递方法是post
pstmt.setString(1, names);//对sql语句中的“?”进行定义
rs=pstmt.executeQuery();//接收所查询到的结果集
int count=-1;//判断是否查询成功的变量
if(rs.next())
{count=rs.getInt(1);}
if(count>0)
{out.print("查询成功!");}else
{out.print("查询失败!");}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(SQLException e)
{e.printStackTrace();
}finally {
try {
if(rs!=null)
{rs.close();}
if(pstmt!=null)
{pstmt.close();}
if(connection!=null)
{connection.close();}
}catch(SQLException e)
{e.printStackTrace();}
}
%>
</body>
</html>
实验结果:
这是MySQL的内容:
index.jsp:
结果:
因为mysql里面没有name为toms,所以显示查询失败;
改为tom之后:
总:JSP链接数据库本身就不是很复杂的技术,但是自己在做的过程中还是遇到了很多小问题:
1.在提交之后check页面没有内容,并且程序内报错,显示驱动有问题;
这个错误一般是因为导包的问题,web项目只需要把对应数据库所提供的jar包复制到项目目录下的WEB-INF/lib中即可;
2.对于代码;
其实本身不算是问题,主要是我自己做的时候是仿着别人做的,然后自己再做了一遍,发现仿的时候跟自己做的时候好像不是那么一回事,诸如对执行sql语句对象PreparedStatement的使用,因为还有一个叫Statement的,自己很容易搞混淆,所以对这两个所带的方法和一些语法上的格式,需要额外注意,PreparedStatement在使用的时候,需要先对sql语句进行预编译,而Statement就不用;
本人的处女贴,如果文章中有什么错误,还望指点指点。