后端数据传输?
后端代码的耦合:打点调用、方法调用、接口、继承。
Dao、Service、servlet(controller)各层的作用?
Dao负责与数据库交互,执行SQL语句,例如简单的增删改查等等。(要创建对应的接口和实现类)
Service层通常会调用Dao层提供的方法来获取数据或更新数据,执行特定的业务逻辑,并将处理结果返回。(要创建对应的接口和实现类)
Servlet接收前端请求、调用Service层(的方法)执行业务逻辑,并返回处理结果给前端。
前端传递数据?
前端 :1. Ajax技术;2. RESTful API;3. WebSocket技术(不太清楚网上查的)
最原始的方式——HTML的表单。
表单数据将以POST请求的方式发送到指定的URL。(在HTML中使用form元素和input元素来创建表单,用户填写完数据后,通过表单的submit提交按钮来发送数据。method:Post)
(如果使用 method="get",当用户点击提交按钮时,表单数据将会以 GET 请求的方式被发送到指定的 URL。在这种情况下,表单数据会被附加在URL的查询参数中,以键值对的形式出现。)
form表单action?
发送到的指定url。
这里是Servlet里的doPost方法。如果执行add操作,把前端的数据存到后端实体类(比如之前pojo包里写的user类,封装的属性有username、password、realname、userType)的属性里面。
Servlet处理Post请求?
当使用 Servlet 来处理 POST 请求时,一般会在 `doPost()` 方法中编写处理 POST 请求的逻辑。(从Post请求获取表单数据request.getParameter()、处理表单数据(比如数据校验、存储到数据库等)、生成响应、设置响应内容类型和编码)
Servlet?
调用Service层(的方法)执行业务逻辑,并返回处理结果给前端。
下图UserServlet在处理Post请求,调用Service的add方法。
Service层 扩展:然后这里是Service接口的抽象add方法
到Service具体类里实现add()
然后到Dao里,可以创建Use类型对象vo,(前端的数据通过表单传到vo,)在Dao里实现具体操作(sql增删改查)、(vo的数据就可以传到数据库里。)
为什么Service和Dao都要有对应的接口?
使用接口是为了调用与实现解耦。一种抽象、可以暂时不用考虑它的具体实现。(如果一个Dao、或Service明确只有一种实现,)Service和Dao对应的接口应该不是必须要写的。
抽象方法能调用吗?
直接通过接口名和方法名来调用抽象方法是不合法的,在Java中直接调用接口的抽象方法必须通过实现接口的类来实现。
当定义一个接口时,只能包含方法的声明,而没有方法的具体实现。接口中的方法都是抽象方法,不包含方法体。在接口中定义了一个方法后,需要在实现接口的类中提供具体的实现逻辑。
调用方法时,需要通过实例化一个`MyClass`对象来调用抽象方法`myMethod()`,而不是直接通过接口名调用。
拿上图举例子:红框部分是一个实例化的对象,userService是这个对象的名字;蓝框部分是创建对象,new一个对象:其类型是 `UserService`。而赋值给 `userService` 的实例是 `UserServiceImpl` 类的一个对象。(多态)1.如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法。2.父类类型实例可以调用父类中定义的所有属性和方法。
那么这个userService就可以调用`UserServiceImpl` 类的方法。
Controller和Servlet?
servlet
Servlet负责接收HTTP请求、处理请求参数、生成响应内容并返回给客户端。
Servlet是遵循Java Servlet规范的Java类,通过继承Servlet接口或Servlet的子类来实现对HTTP请求的处理。可以处理不同类型的HTTP请求(GET、POST等)
controller
-
处理请求:Controller 层接收来自用户的 HTTP 请求(例如 GET、POST、PUT、DELETE)。
-
执行业务逻辑:Controller 负责处理业务逻辑,例如验证输入、处理数据、与数据库交互等。
- 返回视图:根据业务逻辑的结果,Controller 选择要返回给用户的视图。视图可以是 HTML、JSON 或其他格式。