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>
目录
相关文章
|
6天前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
6天前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
|
2月前
|
存储 设计模式 搜索推荐
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(下)
16 1
|
1月前
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
18 0
|
1月前
|
XML Java 数据格式
jsp和servlet有什么区别?
总的来说,JSP和Servlet都是创建动态Web应用程序的重要工具,但它们的使用依赖于特定的需求和上下文。
22 0
|
2月前
|
Java API
JSP 教程 之 JSP JavaBean 4
**JSP JavaBean教程摘要:** JavaBean是遵循JavaBean规范的特殊Java类,用于JSP中。`jsp:getProperty`读取属性(getter),`jsp:setProperty`设置属性(setter)。
16 0
|
2月前
|
Java API
JSP 教程 之 JSP JavaBean 3
**JSP JavaBean教程简述:** JavaBean是遵循JavaBean规范的特殊Java类,用于JSP中。`&lt;jsp:useBean&gt;`标签声明并实例化Bean,如`&lt;jsp:useBean id=&quot;date&quot; class=&quot;java.util.Date&quot; scope=&quot;page&quot;/&gt;`。`scope`决定Bean的作用域,`id`是变量名。示例显示日期:`&lt;%= date %&gt;`,输出如`Tue Jun 28 15:22:24 CST 2016`。
13 0
|
2月前
|
XML 前端开发 Java
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap(上)
16 0
|
2月前
|
Java API
JSP 教程 之 JSP JavaBean 2
**JSP JavaBean 简介** JavaBean 是遵循特定规范的 Java 类,用于封装数据和业务逻辑。`StudentsBean.java` 示例展示了属性(firstName, lastName, age)及对应的 getter 和 setter 方法。编译得到 `StudentBean.class`,常放于 `/WebContent/WEB-INF/classes/包路径/` 下,以供JSP使用。
9 0
|
2月前
|
Java API
JSP 教程 之 JSP JavaBean 1
**JSP JavaBean 技术概览:** JavaBean遵循特定规范的Java类,具备默认无参构造器、实现Serializable接口以支持序列化。核心特性包括可读写的属性及对应的getter/setter方法。属性可通过getXXX()和setXXX()访问,如getMyName()和setMyName()对应属性myName。只读属性只有getter,只写属性只有setter。
14 0

热门文章

最新文章