0
点赞
收藏
分享

微信扫一扫

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


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

  • ​​1.开始之前的准备(servlet+jsp+javaBean增删改查)​​
  • ​​2.查询​​
  • ​​3.删除​​
  • ​​4.添加​​
  • ​​5.修改​​
  • ​​5.1.进入修改的页面​​

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​​<map>​​然后再存储到request对象里去
  • 在StudentServlet里service方法里获取链接里的method如果匹配 调用 query查询方法
  • 在主页面里写一个超链接,超链接为​​<a href="<%=request.getContextPath()%>/student.do?method=query"> Student模块的全部查询 </a>​
  • 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.删除

  • 删除的第一步,首先给删除的按钮加上链接:​​<a href="<%=request.getContextPath()%>/student.do?method=delete&sno=<%=map.get("sno") %>">删除</a>​
  • 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.添加

  • 添加的第一步,首先给添加按钮加上链接:​​<a href="<%=request.getContextPath()%>/student.do?method=addPage">添加</a>​
  • 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判断里添加​​el​​se 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>


举报

相关推荐

0 条评论