开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天
MVC:Controller(控制层)、Model(模型层)、View(视图层)
流程:Controller 接收客户端请求,调⽤相关业务层组件产出 Model,或业务数据并返回给
Controller,Controller 再结合 View 完成业务数据的视图层渲染,并将结果响应给客户端,如下图所
示。
Spring MVC 对这套 MVC 流程进⾏封装,帮助开发者屏蔽底层代码,并且开放出相关接⼝供开发者调
⽤,让 MVC 开发变得更加简单⽅便
Controller(控制层):一般在一个程序内是以controller结尾的文件或者有@Controller注解的文件,也就是Java程序中的main方法可以理解为,其主要是对从Service层返回上来的接口进行简短处理或者不处理,将其返回到视图层,也就前端页面(HTML,jsp等)展示出来,展示给人们
Service:是将dao层返回的结果进行处理,里面多写方法,比如你从数据库得到的是1或2,前端1代表男,2代表女可以在Service写个方法如
User user = new User()
Integer sexId = user.getsexId;
if(sexId == 1){
sexId.setsexId("男");
}
sexId.setsexId("女");
或者对在前端往后端川数据的时候加条件,如加上时间
或者对条件的判断,如登录的判断,或者对后端数据的合法性或者成功性判断
Integer save=this.absenceDao.save(absent);
if (save!=1)throw new RuntimeException("添加失败");
一般接口加实现类组成
dao:是对数库进行操作的层,通过sql对数据库进行增删改查(sql语句),可以通过JDBC连接
private static String driverName = "com.mysql.cj.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/dormitory?serverTimezone=GMT%2B8";
private static String user = "root";
private static String password = "mysql";
连接数据的
private static String driverName = "com.mysql.cj.jdbc.Driver";
jar包(就是他人写好的程序我们调用)(仅个人理解)
然后通Sql语句进行查询
public SystemAdmin findByUsername(String username) {
Connection connection=JDBCUtil.getConnection();
String sql="select * from systemadmin where username='"+username+"'";
PreparedStatement statement=null;
ResultSet resultSet=null;
try {
statement=connection.prepareStatement(sql);
resultSet=statement.executeQuery();
if (resultSet.next()) {
int id=resultSet.getInt(1);
username=resultSet.getString(2);
String password=resultSet.getString(3);
String name=resultSet.getString(4);
String telephone=resultSet.getString(5);
SystemAdmin systemAdmin=new SystemAdmin(id,username,password,name,telephone);
return systemAdmin;
}
}catch (SQLException e){
e.printStackTrace();
}finally {
JDBCUtil.release(connection,statement,resultSet);
}
return null;
}
}
以上是当程序对后方交互时从后往前的进行的解读
从前往后
分为前后算分离或者不分离
不分离即用前端用jsp
jsp:是一种混合的东西以jsp结尾的文件
其中可以插入Html,Js,也可编写java代码(类似于PHP,php最好的语言哪里都能写,这是啥也能写进了,哈哈)
一般时混合度比较高也就时高耦合,代码可读性比较差,早期项目用这个写的,这个一般是跟着Java web进行使用,再往后知道SpringBoot出现后由一种thymeleaf(我感觉这就是jsp翻版但是他比jsp要轻巧一些语法没那么流氓了)再到后来出现一些类似前后端分离的如 freemarker这样的他已经由前后端分离的感觉但是不是严格上的前后端分离
分离
如vue这是这是一个分离的项目,前后端分离我认为就是前端可以独立成为一个程序,后端不用也可以,到这个时候就可以不用同一个端口进行文件的访问了,啥叫不是一个端口后面说那是跨域问题就比如8080访问9095
访问方法也是一样的用户从前端输入一个数据,比如用户注册有个输入框前端输入然后通往后端发出请求
图中两个/absent,进行对应查找,method是从前端带过去的数据比如我要查个用户更据id查这个method=search可以是数也可以是一个条件啥的都行
然后后端获得执行接下来的所有走果controller调用service层service调用dao,dao层通sql语句对数据库进行操作。这就是简单的程序