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>
目录
相关文章
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
310 10
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
基于Servlet和JSP的Java Web应用开发指南
672 1
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
316 1
|
SQL Java 关系型数据库
应用DriverManager类创建sqlserver数据库连接实例 JSP中使用数据库
该博客文章介绍了在JSP中使用JDBC连接SQL Server数据库的方法,包括加载数据库驱动、建立数据库连接的过程,并提供了一个使用DriverManager类创建数据库连接的Java示例代码。
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
476 12
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
470 10
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。
477 7
|
搜索推荐 Java 数据库连接
探索Java Web开发:Servlet与JSP的协同工作原理
【6月更文挑战第23天】Java Web开发中,Servlet和JSP协同打造动态网站。Servlet是服务器端的Java程序,处理HTTP请求并执行复杂逻辑;JSP则结合HTML和Java,生成动态内容。Servlet通过`doGet()`等方法响应请求,JSP在首次请求时编译成Servlet。两者常搭配使用,Servlet处理业务,JSP专注展示,通过`RequestDispatcher`转发实现数据渲染。这种组合是Java Web应用的基础,即使新技术涌现,其价值仍然重要,为开发者提供了强大的工具集。
398 7
|
SQL Java 关系型数据库
JSP 教程 之 JSP 连接数据库 4
JSP教程展示使用JSTL SQL标签执行DELETE操作。示例连接到MySQL数据库,删除ID为11的记录,然后显示更新后的websites表内容。包括设置数据库源、执行`DELETE FROM websites WHERE Id=?`语句,并用JSTL遍历结果展示表格。
172 2