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>
目录
相关文章
|
2月前
|
关系型数据库 MySQL Java
Servlet+MySQL增删改查 原文出自[易百教程] 转载请保留原文链接: https://www.yiibai.com/geek/1391
对于任何项目开发,创建,读取,更新和删除(CRUD)记录操作是应用程序的一个最重要部分。
74 20
|
4月前
|
Java 关系型数据库 MySQL
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
本文介绍了一款基于Spring Boot和JSP技术的房屋租赁系统,旨在通过自动化和信息化手段提升房屋管理效率,优化租户体验。系统采用JDK 1.8、Maven 3.6、MySQL 8.0、JSP、Layui和Spring Boot 2.0等技术栈,实现了高效的房源管理和便捷的租户服务。通过该系统,房东可以轻松管理房源,租户可以快速找到合适的住所,双方都能享受数字化带来的便利。未来,系统将持续优化升级,提供更多完善的服务。
毕设项目&课程设计&毕设项目:springboot+jsp实现的房屋租租赁系统(含教程&源码&数据库数据)
|
3月前
|
Java 应用服务中间件 Spring
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
【终极解决方案】Could not open ServletContext resource [/WEB-INF/dispatcher-servlet.xml]
51 0
|
5月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
54 3
|
5月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
49 1
|
5月前
|
C# 数据可视化 开发者
WPF开发者福音:深度解析OxyPlot与LiveCharts图表库,轻松实现数据可视化不再是难题!
【8月更文挑战第31天】在WPF应用中,数据可视化对提升用户体验至关重要。本文介绍并演示了两种流行图表库OxyPlot和LiveCharts的集成与使用方法。OxyPlot是一款适用于.NET应用的开源图表库,提供多种图表类型,易于集成。LiveCharts则以其丰富的图表类型和动画效果,特别适合实时数据展示。通过具体代码示例,本文展示了如何利用这两种图表库创建折线图和柱状图,并详细说明了安装和配置步骤。希望本文能帮助开发者在WPF应用中轻松实现高效、美观的数据可视化。
273 0
|
5月前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
122 0
|
5月前
|
前端开发 安全 Java
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
在Java服务器端开发的浩瀚宇宙中,Servlet与JSP犹如两颗璀璨的明星,它们联袂登场,共同编织出动态网站的绚丽篇章。
35 0
|
5月前
|
监控 前端开发 Java
揭秘Web开发神器:Servlet、过滤器、拦截器、监听器如何联手打造无敌博客系统,让你的用户欲罢不能!
【8月更文挑战第24天】在Java Web开发中,Servlet、过滤器(Filter)、拦截器(Interceptor,特指Spring MVC中的)及监听器(Listener)协同工作,实现复杂应用逻辑。以博客系统为例,Servlet处理文章详情请求,过滤器(如LoginFilter)检查登录状态并重定向,Spring MVC拦截器(如LoggingInterceptor)提供细粒度控制(如日志记录),监听器(如SessionListener)监控会话生命周期事件。这些组件共同构建出高效、有序的Web应用程序。
45 0
|
17天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
44 3
下一篇
开通oss服务