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 ...
随机推荐
- React中state与props介绍与比较
一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更 ...
- [HDU1754]I Hate It线段树裸题
http://acm.hdu.edu.cn/showproblem.php?pid=1754 解题关键:刚开始死活超时,最后发现竟然是ch,和t1.t2每次循环都定义的锅,以后养成建全局变量的习惯. ...
- ARC097D Equals
传送门 题目 We have a permutation of the integers from 1 through N, p1, p2, .., pN. We also have M pairs ...
- SuperSocket框架中BinaryRequestInfo协议的使用
一.开发环境 1.Windows 10 企业版 64位 2.Microsoft Visual Studio 2017 企业版 二.项目开始 1.新建控制台程序,项目名称“BinarySuperSock ...
- jq中打开新页面 并获取携带值
打开新页面:window.location.href = "./index.html?id=1"获取携带值: function GetRequest() { var url = l ...
- 谈谈Java异常处理这件事儿
此文已由作者谢蕾授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 我们对于"异常处理"这个词并不陌生,众多框架和库在异常处理方面都提供了便利,但是对于 ...
- Hyperledger Cello 安装遇到问题
Hyperledger Cello 安装遇到问题 8083 我跟着这篇教程 https://github.com/hyperledger/cello/blob/master/docs/setup_m ...
- bzoj2039: [2009国家集训队]employ人员雇佣(最小割)
传送门 膜一下大佬->这里 不难看出这是一个最小割的模型(然而我看不出来) 我们从源点向每一个点连边,容量为他能带来的总收益(也就是他能对其他所有经理产生的贡献) 然后从每一个点向汇点连边,容量 ...
- bzoj1227: [SDOI2009]虔诚的墓主人(树状数组,组合数)
传送门 首先,对于每一块墓地,如果上下左右各有$a,b,c,d$棵树,那么总的虔诚度就是$C_k^a*C_k^b*C_k^c*C_k^d$ 那么我们先把所有的点都给离散,然后按$x$为第一关键字,$y ...
- Python的自增运算与Python变量的浅析
一.关于Python的自增运算 学了C/C++后再学习Python,不自觉地就打出了自增运算符++,但是发现Python解释器不认识,查了下资料,发现Python中没有这个运算符.这里暂时不探讨自增运 ...