JDBC连接数据库(Servlet+JSP)
JDBC(Java Database connectivity),是连接数据库的一种方式。后面的框架Mybatis和Hibernate等都封装的是JDBC。在JDBC中常用的API有4个:DriverManager、Connection、Statement、ResultSet。
代码演示:
首先要导入jar包: jstl_el、jstl-1.2_1、mysql-5.1.10
User.java
public class User {
private int id;
private String age;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
QueryServlet.java
package cn.woo.servlet; import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.woo.entity.User;
import cn.woo.util.DBUtil; /**
* 类说明:接收请求的Servlet
*
* @author wyh
* @version 创建时间:2018年8月23日 下午2:46:29
*/
public class QueryServlet extends HttpServlet { /**
*
*/
private static final long serialVersionUID = 1L; @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8"); String action = req.getParameter("action");
List<User> userList = new ArrayList<>(); switch (action) {
case "getUserList":
try {
ResultSet resultSet = DBUtil.query("select * from user");
// 遍历结果集【一行行数据读取】,将结果集放置到实体对象中
while (resultSet.next()) {
User user = new User();
user.setId(resultSet.getInt("id"));
user.setAge(String.valueOf(resultSet.getInt("age")));
user.setName(resultSet.getString("name"));
userList.add(user);
}
req.setAttribute("userList",userList);
// 跳转至展示页面
req.getRequestDispatcher("../UserList.jsp").forward(req, resp);
} catch (SQLException e) {
e.printStackTrace();
}finally {
// 释放资源
DBUtil.closeResource();
}
break;
case "deleteUserInfo":
try {
String id = req.getParameter("id");
int delResult = DBUtil.insertOrDeleteOrUpdate("delete from user where id='"+id+"'");
if(delResult>0) {
System.out.println("删除成功");
}
} catch (SQLException e) {
e.printStackTrace();
}
break;
case "updateUserName":
try {
String id = req.getParameter("id");
String name = req.getParameter("name");
int updateResult = DBUtil.insertOrDeleteOrUpdate("update user set name='"+name+"' where id='"+id+"'");
if(updateResult>0) {
System.out.println("更新用户名成功");
}
} catch (SQLException e) {
e.printStackTrace();
}
break;
case "insertUserInfo":
try {
String addAge = req.getParameter("age");
String addName = req.getParameter("name");
int addResult = DBUtil.insertOrDeleteOrUpdate("insert into user(age,name) value('"+addAge+"','"+addName+"')");
if(addResult>0) {
System.out.println("新增用户成功");
}
} catch (SQLException e) {
e.printStackTrace();
}
break;
default:
break;
}
}
}
UserList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户信息列表</title>
<style type="text/css">
*{
padding: 0;
margin: 0;
} table{
margin: 300px auto;
} td{
width:100px;
text-align: center;
}
</style>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>序号</td>
<td>工号</td>
<td>年龄</td>
<td>姓名</td>
</tr>
<c:forEach items="${ userList }" var="user" varStatus="status">
<tr>
<td>${ status.index+1 }</td>
<td>${ user.id }</td>
<td>${ user.age }</td>
<td>${ user.name }</td>
</tr>
</c:forEach>
</table>
</body>
</html>
DBUtil.java
package cn.woo.util; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; /**
* 类说明:数据库连接工具类
* @author wyh
* @version 创建时间:2018年8月23日 下午3:58:55
*/
public class DBUtil { private static Connection connection;
private static Statement statement; static {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 获取连接 【并设置编码方式】
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/woo?unicode=true&characterEncoding=UTF-8","root","root");
} catch (SQLException e) {
e.printStackTrace();
}
} public static Statement getStatement() throws SQLException {
// 获取statement 【用于执行SQL语句】
statement = connection.createStatement();
return statement;
} /**
* 查
* @param sql 执行查询的sql语句
* @return resultSet 返回的结果集
* @throws SQLException
*/
public static ResultSet query(String sql) throws SQLException {
return getStatement().executeQuery(sql);
} /**
* 增/删/改 通用方法
* @param sql 要执行的SQL语句
* @return 执行结果 >0表明执行成功
* @throws SQLException
*/
public static int insertOrDeleteOrUpdate(String sql) throws SQLException {
return getStatement().executeUpdate(sql);
} /**
* 释放资源
*/
public static void closeResource() {
try {
if(statement!=null) {
statement.close();
}
if(connection!=null) {
connection.close();
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
JDBC连接数据库(Servlet+JSP)的更多相关文章
- tomcat中配置servlet.xml的JNDI或JDBC连接数据库【原】
tomcat中配置servlet.xml的JNDI或JDBC连接数据库 一. JNDI 1. tomcat环境 找到X:\xxx\......\apache-tomcat-6.0.39\conf\se ...
- 小峰servlet/jsp(3)登陆功能实现
一.User模型: User.java: package com.java1234.model; public class User { private int id; private String ...
- 使用JNDI或JDBC连接数据库
一. JNDI 1. tomcat环境 找到X:\xxx\......\apache-tomcat-6.0.39\conf\server.xml,在<Host>节点中配置如下: <H ...
- javabean+servlet+jsp实现分页
前端实现用ligerUI实现分页,感觉用框架确实简单,闲着无聊,模拟着liger的分页界面实现了一遍(只要是功能,样式什么无视) 这里用基础的三层架构+servlet+jsp实现,思路很简单,把所有分 ...
- Eclipse通过jdbc连接数据库制作简单登陆界面
一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...
- JDBC和servlet设计思路、DAO模式思路、MVC思路粗略总结
#JDBC和Servlet联合起来使用的项目思路: 说明:建库,最好一开始设置utf8字符集 step1: 在数据库中建表 如 create table t_user{ ...... } step ...
- 🈲Eclipse通过jdbc连接数据库制作简单登陆界面【新手必看】
一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...
- 小峰servlet/jsp(1)
一.scriptlet标签: 通过scriptlet标签我们可以可以在jsp理嵌入java代码: 第一种:<%! %> 可以在里面定义全局变量.方法.类: 第二种:<% %> ...
- MySQL+Service+Servlet+Jsp实现Table表格分页展示数据
下面以一个示例讲解如何使用MySQL+Service+Servlet+Jsp实现Table表格分页展示数据: eg:请假管理系统 要求如下: 一.打开首页页面, 访问查询请假记录的 servlet , ...
- JDBC连接数据库
JDBC连接数据库 1.加载JDBC驱动程序. Class.forName("com.mysql.jdbc.Driver"); 建立连接,. Connection conn = D ...
随机推荐
- /*带动画效果的hover*/
<!DOCTYPE html> /*带动画效果的hover*/ <html lang="en"> <head> <meta charset ...
- centos7安装与配置ansible
此次测试总共有三台机,分别如下: ansible服务器:10.0.0.20 client01:10.0.0.21 client02:10.0.0.22 一.安装ansible 1. python版本需 ...
- df查看分区使用情况
Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计.语法 df [选项]... [FILE]... -a, --all 包含所有的具有 0 Blocks 的文件系统 ...
- 在PCL中如何实现点云压缩(2)
博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=125 压缩配置文件: 压缩配置文件为PCL点云编码器定义了参数集.并针对压缩 ...
- PCLVisualizer可视化类(1)
PCLVisualizer可视化类是PCL中功能最全的可视化类,与CloudViewer可视化类相比,PCLVisualizer使用起来更为复杂,但该类具有更全面的功能,如显示法线.绘制多种形状和多个 ...
- 8、scala面向对象编程之Trait
一.Trait基础 1.将trait作为接口使用 // Scala中的Triat是一种特殊的概念 // 首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似 // 在t ...
- hdu1059
#include <stdio.h> #include <string.h> #define MAXN 120005 int main() { int num[7]; int ...
- 为什么源码中很多方法就一行throw new RuntimeException("Stub!")
在使用某些类的方法时,发现其内部就一行throw new RuntimeException("Stub!"),但是实际运行中并没有抛出该错误,该方法也并没有语法报错. 因此可能是系 ...
- 空字符串‘’ null false 区别
1.''空字符串 .null 和false都是以值为0来存储的 只是数据结构不一致而已 空字符串------字符串数据格式 null -----------null数据格式 false ----- ...
- gulp使用文档
gulp的优势 易于使用:通过代码优于配置的策略,Gulp让简单的任务简单,复杂的任务可管理. 构建快速:利用 Node.js 流的威力,你可以快速构建项目并减少频繁的 IO 操作. 插件高质:Gul ...