http://mybatis.org/spring/zh/index.html
http://mybatis.org/ehcache-cache/
MVC是一种常用的软件设计规范,它将一个应用程序分为三个不同的部分:模型(Model)、视图(View)、控制器(Controller)。这三个部分相互协作,共同完成应用程序的各项任务。
其中,模型表示应用程序的数据和业务逻辑,视图用于显示数据和与用户交互,而控制器负责处理用户请求并更新模型和视图。通过将业务逻辑、数据和显示分离,MVC可以使代码更加清晰、易于维护和扩展,并能够快速地进行单元测试和集成测试。
MVC的主要作用在于降低了视图与业务逻辑间的双向偶合。这意味着,当一个应用程序需要修改或者更新时,只需要修改相应的模型或者控制器,而无需改变视图。这样就可以大大提高开发效率,同时也能够在维护应用程序时减少出错的可能性。
需要注意的是,虽然MVC被广泛使用,但是不同的MVC实现可能存在差异。因此,在使用MVC时,需要根据具体情况进行选择和调整。
经典的MVC(Model-View-Controller)设计模式,它的优化点在于它将应用程序分为三个独立的部分,使得代码更易于维护和扩展。
其中,对于模型来说,可以优化以下几个方面:
对于视图来说,可以考虑以下优化点:
对于控制器来说,可以优化以下几个方面:
最典型的MVC就是JSP + servlet + javabean的模式。
image.png
Controller可以分为两部分:
Model可以分为两部分:
View也可以分为两部分:
需要注意的是,在前后端分离的架构下,前端组件往往承担了更多的职责,包括视图展示、用户输入校验、数据缓存、状态更新等,因此需要仔细设计前端组件的接口和数据结构,保证其与后端接口的衔接良好。
MVC框架需要完成的主要任务:
总之,MVC框架需要完成的工作非常多,包括但不限于路由管理、参数验证、业务逻辑处理、数据访问、视图渲染、异常处理、性能优化、安全防护等方面的任务。因此,在设计和开发MVC框架时,需要综合考虑各个方面的需求和问题,并充分测试和评估系统的性能和安全性。
Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。
Spring MVC是基于MVC设计模式的轻量级Web框架,具有以下特点:
总之,Spring MVC是一个功能强大、易学易用、灵活可扩展的轻量级Web框架,可以满足不同规模和需求的Web应用开发。
Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。
Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类) 。
image.png
Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
资源操作:使用POST、DELETE、PUT、GET,使用不同方法对资源进行操作。
所有的地址栏请求默认都会是 HTTP GET 类型的。
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
@RequestMapping("/hello")
public String hello(String name){
System.out.println(name);
return "hello";
}
//@RequestParam("username") : username提交的域的名称 .
@RequestMapping("/hello")
public String hello(@RequestParam("username") String name){
System.out.println(name);
return "hello";
}
@RequestMapping("/user")
public String user(User user){
System.out.println(user);
return "hello";
}
CREATE DATABASE `ssm`;
USE `ssm`;
drop table if exixts `books`;
create table `books` (
`bookID` int(10) not null auto_increment comment `书id`,
`bookName` varchar(100) not null comment `书名`,
`bookCounts` int(11) not null comment `数量`,
`detail` varchar(200) not null comment `描述`,
key `bookID` (`bookID`)
) engine = INNODB default charset=utf8
lombok插件!
package com.da.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
}
package com.da.dao;
import com.da.pojo.Books;
import java.util.List;
public interface BookMapper {
//增加一个Book
int addBook(Books book);
//根据id删除一个Book
int deleteBookById(int id);
//更新Book
int updateBook(Books books);
//根据id查询,返回一个Book
Books queryBookById(int id);
//查询全部Book,返回list集合
List<Books> queryAllBook();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.da.dao.BookMapper">
<!--增加一个Book-->
<insert id="addBook" parameterType="Books">
insert into ssm.books(bookName,bookCounts,detail)
values (#{bookName}, #{bookCounts}, #{detail})
</insert>
<!--根据id删除一个Book-->
<delete id="deleteBookById" parameterType="int">
delete from ssm.books where bookID=#{bookID}
</delete>
<!--更新Book-->
<update id="updateBook" parameterType="Books">
update ssm.books
set bookName = #{bookName},bookCounts = #{bookCounts},detail = #{detail}
where bookID = #{bookID}
</update>
<!--根据id查询,返回一个Book-->
<select id="queryBookById" resultType="Books">
select * from ssm.books
where bookID = #{bookID}
</select>
<!--查询全部Book-->
<select id="queryAllBook" resultType="Books">
SELECT * from ssm.books
</select>
</mapper>
package com.da.service;
import com.da.pojo.Books;
import java.util.List;
public interface BookService {
//增加一个Book
int addBook(Books book);
//根据id删除一个Book
int deleteBookById(int id);
//更新Book
int updateBook(Books books);
//根据id查询,返回一个Book
Books queryBookById(int id);
//查询全部Book,返回list集合
List<Books> queryAllBook();
}
springmvc
controller
- BookController
dao
- BookDao
- BookMapper.xml
- pojo
- Books
- service
- BookService
- BookServiceImpl
fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。实现json的转换方法很多,最后的实现结果都是一样的。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.60</version>
</dependency>
对表单中的 enctype 属性做个详细的说明:
<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="file"/>
<input type="submit">
</form>
仓库地址:https://github.com/webVueBlog/JavaGuideInterview