数据的增删改查是如何完成的呢?过程你知道吗?流程你会画吗?MVC你真的学会了吗?其中运用的原理你真的知道吗?让我们更深层次的去了解。
第一部分:回顾java基础.面向对象与面向过程。
?上面图中详细描绘了面向过程的思想。
一条路线:以自己为主线,亲力亲为的完成一项任务。
上面的主线是老师亲力亲为的去一个个的催学生健康打卡。
面向对象的思想:将一项任务进行分解,让多个对象去完成。
上面的图是
老师将健康打卡的任务交给执行负责人。
执行负责人将健康打卡任务交给班长。
班长将健康打卡任务交给寝室长。
寝室长健康打卡将任务交给寝室成员 。
这就是对面向对象最好的理解。
上面我们理解了面向对象的基本理论。那请看下面的图。你是真的理解了吗?如果下面的图你了解的话,流程明白的话。说明你真的明白了。
注意:上面的图是利用了面向对象的思想哦。
实操部分
?观察流程你要思考?建几个包几个类几个jsp导入那些框架,用那种方案连接数据库。
实操目标要将上面的图中数据显示在浏览器中。
第一步:你要有一个页面去显示数据。所以定义一个jsp文件用于显示mysql中的数据。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息对话列表</title>
<style type="text/css">
*{
/* background: linear-gradient(to right,red,pink,blue); */
background:white
font-size:30px;
font-weight: bold;
}
input{
color: white;
font-weight: bold;
padding-bottom:10px;
padding-top: 5px;
padding-left:10px;
padding-right:10px;
border-width: 0px;
}
.in1{
background-color: lightcyan;
color: black;
}
.in2{
background-color: darkcyan;
color: black;
}
.in3{
background-color:red ;
color: black;
}
in4{
background-color:black;
color: white;
}
caption {
font-size: 40px;
font-weight:bold ;
border: 2px solid pink;
background: white;
text-shadow: 3px 1px paleturquoise;
}
th{
font-size: 40px;
font-weight:bold ;
border: 2px solid pink;
background: white;
text-shadow: 3px 1px red;
}
tr{
font-size: 20px;
font-weight: bold;
border-radius: 6px;
background: lightcyan;
}
td{
font-size: 20px;
font-weight: bold;
border-radius: 6px;
background: pink;
}
</style>
</head>
<body>
<!-- 使用表格展示从数据库中获取的所有学生信息 -->
<div align="center">
<table border="3" style="width: 900px;text-align: center;border-collapse: collapse;">
<caption>学生书籍信息列表</caption>
<tr>
<th>书籍编号</th>
<th>书籍名称</th>
<th>书籍价格</th>
<th>书籍数量</th>
<th>书籍作者</th>
<th>操作</th>
</tr>
<c:forEach items="${studentbook}" var="book" varStatus="v">
<tr>
<td>${book.id}</td>
<td>${book.bookname}</td>
<td>${book.bookprick}</td>
<td>${book.boooknumber}</td>
<td>${book.bookautor}</td>
<td style="width: 400px;">
<a href="bookaddstudent2.jsp"><input type="button" value="增加" class="in1"></a>
<a href="bookUpdateStudent.jsp?index=${v.count-1 }"><input type="button" value="修改" class="in2"></a>
<a href="bookDeleteStudent?id=${stu.id }"><input type="button" value="删除" class="in3"></a>
</td>
</tr>
</c:forEach>
</table>
</div>
<h3 style="color:white; background: black;">
MVC全名是Model View Controller,<br>
是
@@1模型(model)<br>
@@2-视图(view)<br>
@@3-控制器(controller)的缩写,<br>
一种软件设计典范,<br>
用一种业务逻辑、数据、界面显示分离的方法组织代码,<br>
将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,<br>
不需要重新编写业务逻辑。<br>
MVC被独特的发展起来用于映射传统<br>
的输入、处理和输出功能在一个逻辑<br>
的图形化用户界面的结构中。<br>
</h3>
</body>
</html>
?第二步定义一个页面解决乱码问题这里运用到了,Servlect的过滤器。/*全部拦截。
package com.student.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* 用于拦截所有浏览器请求
*/
@WebFilter("/*")
public class MyFilter implements Filter {
/**
* Default constructor.
*/
public MyFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
//设置请求和响应的字符编码格式为UTF-8
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
第三步.定义一个控制层的Servlect,用于发送信息,和接收信息。
首先你要明确你的数据库中发给servlect控制层时,用什么方式存放起来。方案一:实体类。方案二:四大域,利用list集合存放MAP集合的方式存放起来。
请看代码
package com.student.controller;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.student.service.IStudentService;
import com.student.service.StudentServiceImp;
/**
* Servlet implementation class HomeServlet
*/
@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HomeServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//将浏览器的任务接收,发给业务逻辑层处理
IStudentService service=new StudentServiceImp();
List<Map<String, Object>> oList=service.getStudents();
HttpSession session =request.getSession();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
?控制层将任务发送给了逻辑层接口,而逻辑层的接口要发送给数据访问层的接口,数据访问层的接口将查询命令发送给数据访问层的实体类。在这之前要实现连接数据库。然后将数据层层返回个控制层的Servlect.
代码编译
package comstudentbookservlice;
import java.util.List;
import java.util.Map;
public interface IStudentBookservlice {
List<Map<String, Object>> getStudentBooks();
}
package comstudentbookservlice;
import java.util.List;
import java.util.Map;
import comstudentbookdao.IStudentBookdao;
import comstudentbookdao.StudentBookdaoImp;
public class StudentBookserviceImp implements IStudentBookservlice {
@Override
public List<Map<String, Object>> getStudentBooks() {
return ;
}
}
package comstudentbookdao;
import java.util.List;
import java.util.Map;
public interface IStudentBookdao {
List<Map<String, Object>> getStudentBooks();
}
package comstudentbookdao;
import java.util.List;
import java.util.Map;
import com.student.utils.DBUtil;
public class StudentBookdaoImp implements IStudentBookdao {
@Override
public List<Map<String, Object>> getStudentBooks() {
return ;
}
}
?控制层将任务发送给了逻辑层接口,而逻辑层的接口要发送给数据访问层的接口,数据访问层的接口将查询命令发送给数据访问层的实体类。在这之前要实现连接数据库。然后将数据层层返回个控制层的Servlect.理思路。
请看下面的代码。
?
?
?
?
?
?
?上面的流程以完毕。
运行结果图
?增删改查自行思考。
这是我上次课所学https://blog.csdn.net/qq_56248592/article/details/121840541
|