不带参
package JDBC_Web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class JDBC_Select extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//数据库使用:第一步装载驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动器
//第二步,建立数据库连接,con是建立好的一个数据库对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","123456");
//第三步,执行sql语句
String sql="select * from tb_user";//定义一个查询语句出来
Statement st=con.createStatement();//获取查询对象,注意这种查询不能带参数
ResultSet rs=st.executeQuery(sql);//执行查询语句
//第四步,把执行完查询语句的结果的数据提取出来,这里是输出到控制台上,正常是要输出到客户端的哦
// while ((rs.next())){
// System.out.println("id:"+rs.getString("id"));
// System.out.println("name:"+rs.getString("name"));
// System.out.println("age:"+rs.getString("age"));
// System.out.println("interest:"+rs.getString("interest"));
// }
//向客户端输出例子
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<table>");
out.write("<tr>");
out.write("<th>id</th>");
out.write("<th>name</th>");
out.write("<th>age</th>");
out.write("<th>interest</th>");
out.write("</tr>");
while (rs.next()){
out.write("<tr>");
out.write("<td>"+rs.getString("id")+"</td>");
out.write("<td>"+rs.getString("name")+"</td>");
out.write("<td>"+rs.getString("age")+"</td>");
out.write("<td>"+rs.getString("interest")+"</td>");
out.write("</tr>");
}
out.write("</table>");
//第五步,关闭数据库连接
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
下面是带参的,允许接收前端发过来的参数来查询,并在客户端显示出来
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数据库</title>
</head>
<body>
<form action="http://localhost:8080/servlet_war_exploded/JDBC_Web_WithParameter" method="get" name="queryform">
请输入要查询的用户:<input type="text" name="name"/>
<br/>
<input type="submit" value="查询">
</form>
</body>
</html>
package JDBC_Web;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
public class JDBC_Web_WithParameter extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name=request.getParameter("name");
try {
//数据库使用:第一步装载驱动
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动器
//第二步,建立数据库连接,con是建立好的一个数据库对象
Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","123456");
//第三步,构建查询对象,这种Statement是带参的,允许接收前端传过来的参数
PreparedStatement preparedStatement = con.prepareStatement("select * from tb_user where name =?");//这里的问号是暂定的意思,可以有很多个
preparedStatement.setString(1, name);//1代表第一个问号,name就是给这个问号的值
//获取结果
ResultSet rs=preparedStatement.executeQuery();
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();
out.write("<table>");
out.write("<tr>");
out.write("<th>id</th>");
out.write("<th>name</th>");
out.write("<th>age</th>");
out.write("<th>interest</th>");
out.write("</tr>");
while (rs.next()){
out.write("<tr>");
out.write("<td>"+rs.getString("id")+"</td>");
out.write("<td>"+rs.getString("name")+"</td>");
out.write("<td>"+rs.getString("age")+"</td>");
out.write("<td>"+rs.getString("interest")+"</td>");
out.write("</tr>");
}
out.write("</table>");
//第五步,关闭数据库连接
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}