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>