jdbc+servlet+jsp+mysql简单的例子--gxy

2024-01-21 11:30

本文主要是介绍jdbc+servlet+jsp+mysql简单的例子--gxy,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天去面试,叫我做一个简单的注册并查询的例子,发现用多了springmvc,struts2尽然把这个最基础的忘记了。今天写一个最简单的稳固一下。其中有些参考了其他博主,再次感谢!

目录结构:
这里写图片描述

用到的jar也在图中。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><display-name>simple-project</display-name><servlet><servlet-name>StudentsAdd</servlet-name><servlet-class>servlet/StudentsAdd</servlet-class></servlet><servlet-mapping><servlet-name>StudentsAdd</servlet-name><url-pattern>/studentsAdd</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>注册</title><body><form action="addUser" method="post" >用户名:<input type="text" value="" name="name"/><br/>密码:<input type="password" value="" name="password"/><br/><input type="submit" value="提交"/></form><table border="1"><tr><td>编号</td><td>姓名</td>  </tr><c:forEach items="${list}" var="stu"><tr><td>${stu.id }</td><td>${stu.name }</td> </tr></c:forEach></table></body>
</html>

实体类:

package model;public class Student {public long id;public String name;private String password;public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

servlet类:

1.查询的

package servlet;import java.io.IOException;
import java.util.ArrayList;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import model.Student;
import util.DBConnection;/*** Servlet implementation class StudentsAdd*/
@WebServlet("/StudentsAdd")
public class StudentsAdd extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public StudentsAdd() {super();}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {DBConnection db = new DBConnection();  String sql = "select * from user";  ArrayList<Student> list = db.getStudentList(sql);  request.setAttribute("list", list);  request.getRequestDispatcher("index.jsp").forward(request, response);  }}

2.增加的:

package servlet;import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Random;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import model.Student;
import util.DBConnection;/*** 添加用户* @author Administrator**/
@WebServlet("/addUser")
public class AddUser extends HttpServlet{private static final long serialVersionUID = 422040094756504779L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {String name = req.getParameter("name");String password  = req.getParameter("password");Student stu = new Student();stu.setId(new Date().getTime());stu.setName(name);stu.setPassword(password);DBConnection dbc = new DBConnection();String sql = "insert into user values("+new Random().nextInt(100)+",'"+name+"','"+password+"')";dbc.ExecuteDel(sql);sql = "select * from user";  ArrayList<Student> list = dbc.getStudentList(sql);req.setAttribute("list", list);  req.getRequestDispatcher("index.jsp").forward(req, resp);  };}

数据库连接工具类:

package util;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;import model.Student;public class DBConnection {/*** 驱动类名称*/private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";/*** 数据库连接字符串   jdbc:mysql://localhost:3306/test 这种方式只对本地的数据库有用       test为数据库名称*/private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/test";/*** 数据库用户名*/private static final String USER_NAME = "root";/*** 数据库密码*/private static final String PASSWORD = "123456";/*** 数据库连接类*/private static Connection conn;/*** 数据库操作类*/private static Statement stmt;// 加载驱动static{try {Class.forName(DRIVER_CLASS);} catch (Exception e) {System.out.println("加载驱动错误");System.out.println(e.getMessage());}}// 取得连接private static Connection getConnection(){try {conn = DriverManager.getConnection(DATABASE_URL, USER_NAME, PASSWORD);} catch (Exception e) {System.out.println("取得连接错误");System.out.println(e.getMessage());}return conn;}/*** 执行 增、删、改 操作* @param sql*/public void ExecuteDel(String sql){try {stmt = getConnection().createStatement();int rows = stmt.executeUpdate(sql);if(rows >= 1){System.out.println("成功删除.....");} else {System.out.println("删除失败.....");}} catch (Exception e) {System.out.println("statement取得错误");System.out.println(e.getMessage());}finally {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}}/*** 读取数据库中的数据(查询操作)* @param sql* @return*/public ArrayList<Student> getStudentList(String sql){ArrayList<Student> list = new ArrayList<Student>();// 取得数据库操作对象try {stmt = getConnection().createStatement();   } catch (Exception e) {System.out.println("statement取得错误");System.out.println(e.getMessage());return null;} try {// 查询数据库对象,返回记录集(结果集)ResultSet rs = stmt.executeQuery(sql);// 循环记录集,查看每一行每一列的记录while (rs.next()) {// 第一列 snoint sno = rs.getInt(1);// 第2列 snameString sname = rs.getString(2);Student stu = new Student();stu.setId(sno);stu.setName(sname);list.add(stu);}} catch (Exception e) {System.out.println(e.getMessage());}return list;}
}

完成了。

访问方式:
http://localhost:8888/simple-jdbc/StudentsAdd

完成,提供下载地址:

http://download.csdn.net/download/u013154103/9962304

这篇关于jdbc+servlet+jsp+mysql简单的例子--gxy的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629371

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

mysql中insert into的基本用法和一些示例

《mysql中insertinto的基本用法和一些示例》INSERTINTO用于向MySQL表插入新行,支持单行/多行及部分列插入,下面给大家介绍mysql中insertinto的基本用法和一些示例... 目录基本语法插入单行数据插入多行数据插入部分列的数据插入默认值注意事项在mysql中,INSERT I

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL 衍生表(Derived Tables)的使用

《MySQL衍生表(DerivedTables)的使用》本文主要介绍了MySQL衍生表(DerivedTables)的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录一、衍生表简介1.1 衍生表基本用法1.2 自定义列名1.3 衍生表的局限在SQL的查询语句select

MySQL 横向衍生表(Lateral Derived Tables)的实现

《MySQL横向衍生表(LateralDerivedTables)的实现》横向衍生表适用于在需要通过子查询获取中间结果集的场景,相对于普通衍生表,横向衍生表可以引用在其之前出现过的表名,本文就来... 目录一、横向衍生表用法示例1.1 用法示例1.2 使用建议前面我们介绍过mysql中的衍生表(From子句