Web对数据库的增删改查(servlet+jsp+javaBean增删改查)

简介: Web+Java对数据库增删改查-javaWeb中级

1.开始之前的准备(servlet+jsp+javaBean增删改查)

  • jsp:页面的请求和展示
  • 在前台主要学了jsp进行页面的请求和展示
  • java后台
  • mysql数据库
  • 学习了java如何进行数据库增删改查
  • JDBC
  • JDBC重构Dao
  • Dao进行sql语句
  • 将数据库的获取结果响应到页面上
  • 页面向后台进行请求
  • 请求:(url:http://xx.8080/student.do)
  • servlet进行响应
  • jsp+servlet+javaBean+mysql === M2
  • 代码准备
  • StudentServlet.java
package com.Li;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @desc Student 模块的 Servlet
 * @author Li Ya Hui 
 * @time   2021年6月2日 上午8:34:22
 */
public class StudentServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("Student--->service");
    }
}

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>JSP+Servlet+JavaBean实现表单的增删改查</title>
    </head>
    <body>
        <a href="<%=request.getContextPath()%>/student.do">Student模块的全部查询 </a>
    </body>
</html>

web.xml

<servlet>
    <servlet-name>ser</servlet-name>
    <servlet-class>com.Li.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ser</servlet-name>
    <url-pattern>/studnet.do</url-pattern>
</servlet-mapping>

2.查询

  • 首先创建一个Dao(连接数据库)
  • 然后创建一个查询的类StudnetService实例化Dao(StudnetService)
  • 在StudentServlet里创建一个StudnetService对象的query方法
  • query方法将数据转成list然后再存储到request对象里去
  • 在StudentServlet里service方法里获取链接里的method如果匹配 调用 query查询方法
  • 在主页面里写一个超链接,超链接为 Student模块的全部查询
  • method的参数为query代表我的一个匹配参数
  • 当servlet匹配成功时,会将request.getRequestDispatcher("/jsps/studnet/list_student.jsp").forward(request, response);发送请求
  • 子页面接收数据的代码(list_student.jsp)
<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Student 模块的查询展示界面</title>
<style type="text/css">
  *{
    margin: 0;
    padding: 0;
  }
  table{
  border-width:2px;
    border-color: red;
    text-align: center;
  }
</style>
</head>
<body>
  <table border="1">
    <tr>
      <td>学号</td>
      <td>姓名</td>
      <td>年龄</td>
      <td>性别</td>
      <td>操作</td>
    </tr>
    <%
      List list = (List) request.getAttribute("list");
      for(int i = 0 ; i < list.size() ; i++)
      {
        Map map =(Map) list.get(i);
    %>
    <tr>
      <td><%=map.get("sno") %></td>
      <td><%=map.get("sname") %></td>
      <td><%=map.get("sage") %></td>
      <td><%=map.get("ssex") %></td>
      <td>
        <a href="#">添加</a>
        <a href="#">修改</a>
        <a href="#">删除</a>
      </td>
    </tr>
    <%
      }
    %>
  </table>
</body>
</html>

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://JAVA.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>WebM2Demo001</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>StudentServlet</servlet-name>
    <servlet-class>com.Li.student.StudentServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>StudentServlet</servlet-name>
    <url-pattern>/student.do</url-pattern>
  </servlet-mapping>
</web-app>

3.删除

  • 删除的第一步,首先给删除的按钮加上链接:">删除
  • method=delete 制造关键字


  • sno=<%=map.get(“sno”) %> 制造主键


  • 在StudentServlet的service方法里添加method=delete时的方法,调用delete方法


  • delete方法里调用StudentService里的deleteBySno方法
/**
   * @desc 根据学号删除了一条学生信息
   * @param sno
   * @throws SQLException 
   * @throws ClassNotFoundException 
   */
  public void deleteBySno(String sno) throws ClassNotFoundException, SQLException {
    // 删除
    dao.executeUpdate(" delete from student where sno='"+sno+"'");
  }

在StudentServlet的delete方法里进行重定向

//2.调用studentService中的方法执行sql语句实现删除该条记录
studentservice.deleteBySno(sno);
//3.重定向:刷新   重新指向新的页面  简介进行刷新页面
response.sendRedirect(request.getContextPath()+"/student.do?method=query");

4.添加

  • 添加的第一步,首先给添加按钮加上链接:添加
  • method=addPage 代表要进入信息添加页面
  • 新建student模块添加页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>student模块的添加页面</title>
<style type="text/css">
  *{
    margin:0;
    padding:0;  
  }
</style>
</head>
<body>
  <form action="<%=request.getContextPath()%>/student.do?method=add" method="post">
    <table border="2" algin="center">
      <tr>
        <td>姓名</td>
        <td><input type="text" name="sname" value=""/></td>
      </tr>
      <tr>
        <td>年龄</td>
        <td><input type="text" name="sage" value=""/></td>
      </tr>
      <tr>
        <td>性别</td>
        <td><input type="text" name="ssex" value=""/></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" style="display:block;margin:auto;" value="提交"/></td>
      </tr>
    </table>
  </form>
</body>
</html>

在添加页面的表单里提交地址为:action="<%=request.getContextPath()%>/student.do?method=add"

因为表单存在英文,当前前台向后台用form表单传输数据时,需要设定编码request.setCharacterEncoding("utf-8");

  • 在StudentService里service判断里添加else if(“addPage”.equals(method)) {this.addPage(request,response);
    }
  • 在StudentService里service判断里添加
else if("add".equals(method)) {
    this.add(request,response);
}

在StudentService里添加add数据方法

/**
   * @desc 保存添加页面的数据
   * @param request
   * @param response
   * @throws SQLException 
   * @throws ClassNotFoundException 
   * @throws IOException 
   */
  private void add(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, IOException {
    System.out.println("StudentServlet--->add()");
    //1.接值
    String sname = request.getParameter("sname");
    String sage = request.getParameter("sage");
    String ssex = request.getParameter("ssex");
    System.out.println(sname+sage+ssex);
    //2.调用StudentService中的方法执行sql语句实现将数据保存到mysql数据库中
    studentservice.save(sname,sage,ssex);
    //3.进行重定向(刷新)
    response.sendRedirect(request.getContextPath()+"/student.do?method=query");
  }

还需要在StudentService里添加一个save保存方法

/**
   * @desc 根据前台的信息从而添加一条学生信息到数据库
   * @param sname
   * @param sage
   * @param ssex
   * @throws SQLException 
   * @throws ClassNotFoundException 
   */
  public void save(String sname, String sage, String ssex) throws ClassNotFoundException, SQLException {
    dao.executeUpdate("insert into student values ('"+UUID.randomUUID().toString().substring(0, 9)+"','"+sname+"','"+Integer.parseInt(sage)+"','"+ssex+"')");
  }
  • 测试添加数据(完成)

5.修改

5.1.进入修改的页面

  • 首先讲展示数据页面的修改连接改为
<a href="<%=request.getContextPath()%>/student.do?method=editPage&sno=<%=map.get("sno")%>">修改</a>
  • method=editPage 代表将进入修改信息界面内 并且将此数据的sno作为参数传入
  • 然后将StudentServlet里的service方法method关键字判断加入editPage
else if("editPage".equals(method)) 
{
    this.editPage(request,response);
}

然后创建一个editPage函数

/**
   * @desc 跳转到学生信息修改页面  转发
   * @param request
   * @param response
   * @throws SQLException 
   * @throws ClassNotFoundException 
   * @throws IOException 
   * @throws ServletException 
   * @throws  
   */
private void editPage(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, SQLException, IOException, ServletException {
    System.out.println("StudentServlet--->editPage");
    //1.接值
    String sno = request.getParameter("sno");
    System.out.println(sno);
    //2.根据传递过来的sno查询该条数据信息
    Map<String, Object> map = studentservice.queryOneBySno(sno);  
    System.out.println(map);
    //3.存值
    request.setAttribute("map", map);
    //4.转发地址  
   request.getRequestDispatcher("/jsps/studnet/edit_student.jsp").forward(request, response);
}
  • 我们发现,现在需要一个方法来根据sno查找数据 studentservice.queryOneBySno(sno)
  • 在StudentService 里创建方法
/**
   * @desc 4.根据sno查询一条数据
   * @param sno
   * @return
   * @throws SQLException 
   * @throws ClassNotFoundException 
   */
  public Map<String, Object> queryOneBySno(String sno) throws ClassNotFoundException, SQLException {
    return dao.executeQueryForMap("select * from student where sno = '"+sno+"'");
  }

接下来数据已经存入到了 request 并且已经转到了修改页面,只剩下了 “ 喷数据 ”

  • 新建/jsps/studnet/edit_student.jsp,代码:
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Student模块的修改页面</title>
</head>
<body>
  <%
  //取出StudentServlet里的request的数据  "map"
    Map map =(Map) request.getAttribute("map");
  %>
  <!-- 目前没有加提交地址 -->
  <table border="2" bordercolor="green" align="center">
    <tr>
      <td>姓名</td>
      <td><input type="text" name="sname" value="<%=map.get("sname") %>"/></td>
    </tr>
    <tr>
      <td>年龄</td>
      <td><input type="text" name="sage" value="<%=map.get("sage") %>"/></td>
    </tr>
    <tr>
      <td>性别</td>
      <td><input type="text" name="ssex" value="<%=map.get("ssex") %>"/></td>
    </tr> 
    <tr>
      <td colspan="2"><input type="submit" style="margin :auto; display:block;" value="更新"/></td>
    </tr>
  </table>
</body>
</html>
目录
相关文章
|
10月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
858 77
|
10月前
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
296 5
|
10月前
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
301 0
Android常用的room增删改查语句(外部数据库)
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
379 19
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
526 13
|
SQL 安全 网络安全
Web应用防火墙(WAF)与数据库应用防火墙有什么区别?
Web应用防火墙(WAF)专注于Web应用系统和网站的应用层防护,可有效应对OWASP Top 10等常见攻击,防止SQL注入、CC攻击等。而数据库应用防火墙则位于应用服务器与数据库之间,提供数据库访问控制、攻击阻断、虚拟补丁等高级防护功能,直接保护数据库免受攻击。两者分别针对Web层和数据库层提供不同的安全保护。
363 4
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
624 5
|
数据可视化 API PHP
低代码开发工具-学生管理系统-老师管理增删改查实现
低代码开发工具-学生管理系统-老师管理增删改查实现
241 5
|
前端开发 Java 数据库连接
javamvc配置,增删改查,文件上传下载。
【10月更文挑战第4天】javamvc配置,增删改查,文件上传下载。
150 1