一、什么是框架
框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。
项目里有一部分代码:和业务无关,而又不得不写的代码==>框架
项目里剩下的部分代码:实现业务功能需要的逻辑代码
简而言之,框架是一个应用系统的半成品,开发人员在框架的基础上,根据业务需求开发功能。即:别人搭台,你唱戏。
二、为什么要学框架
- 学习框架相当于从 " 小作坊 " 到 " 工厂 " 的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是高效。
- 框架更加易用、简单且高效。
三、框架优点展示**(SpringBoot VS Servlet)**
使用 Spring Boot 项目演示框架相比于 Servlet 所具备的以下优点:
- 无需配置 Tomcat ,点击 " 运行 " 按钮就可以运行项目, Spring Boot 内置了 Web 容器(可直接运行)。
- 快速添加外部 jar 包。
- 快速发布项目(使用 java -jar 方式就可以发布)。
- 对象自动装配。
- ......
使用 SpringBoot 和 Servlet 对比 ,演示一个用户添加的案例,展示以上优点。
3.1 Servlet****项目开发
3.1.1****创建项目
3.1.2****添加引用
打开 https://mvnrepository.com 搜索 servlet 添加框架应用到 pom.xml 中,如下图所示:
PS:其中还需要注意使用的版本号
在项目中右键添加"源代码"文件夹,如下图所示:
3.1.3****添加业务代码
配置路由文件 web.xml :
XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app>
添加实体类:
java
public class User {
private Integer id;
private String name;
private Integer age;
private String password;
// 其他属性...
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return String.format("{id:%d,name:%s,age:%d,password:%s}",
id,name,age,password);
}
}
添加控制器:
java
import java.io.IOException;
public class UserServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws
javax.servlet.ServletException, IOException {
this.doGet(request,response);
}
protected void doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws
javax.servlet.ServletException, IOException {
User user = new User();
user.setId(Integer.parseInt(request.getParameter("id")));
user.setName(request.getParameter("name"));
user.setAge(Integer.parseInt(request.getParameter("age")));
user.setPassword(request.getParameter("password"));
// 获取其他字段.....
System.out.println(user.toString());
response.setContentType("text/html");
response.getWriter().println(user.toString());
}
}
3.1.4运行项目(配置tomcat)
3.1.5 Servlet 痛点分析
- 添加外部 jar 不方便,容易出错,比如添加了一个不匹配的外部 jar 版本;
- 运行和调试的时候需要配置 tomcat 不方便;
- 发布不方便, servlet 项目必须依靠外置的 tomcat (外置的 web 容器)运行。
- 路由配置不方便,一个访问地址对应一个 Servlet 类。
而以上痛点问题,都可以通过 JavaEE 进阶框架解决,接下来我们一起来看。
3.2 SpringBoot****项目开发
3.2.1****创建并添加引用
选择 SpringBoot 版本和添加外部引用:
3.2.2****添加代码并运行程序
用户实体:
java
import lombok.Data;
@Data
public class User {
private Integer id;
private String name;
private Integer age;
private String password;
}
添加控制器:
java
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/user")
@RestController
public class UserController {
@RequestMapping("/add")
public String add(User user){
return user.toString();
}
}
点击调试按钮即可运行项目:
访问地址: http://localhost:8080/user/add?id=1\&age=18\&name=java\&password=123
即可运行项目,如下图所示
3.2.3****发布程序
使用 jar -jar xxx.jar 直接发布程序:
3.2.4 SpringBoot VS Servlet
SpringBoot 相比于 Servlet 的优点总结:
- 添加外部 jar 更容易,不易出错(版本问题无需关注);
- 调试项目更加方便,无需配置 Tomcat ;
- 发布项目更加方便,无需配置 Tomcat ;
- 添加路由更加方便,无需每个访问地址都添加一个类。
现在我们已经知道了框架的优点了,哪怎么去学呢?
**四、**怎么学框架?
- 先从基础框架 Spring 开始(工具箱)
- Spring Boot 快速开发 Spring 脚手架
- MyBatis 快速操作数据库
- 其他:日志、事务、拦截器....
框架学习中需要注意什么呢?
四、框架学习中的难点
- 配置比较多。
- 需要大量的外部 jar 包,在下载时容易出错。
- 会涉及简单的软件工程的设计思想(分层思想:前、后端的分层思想,及后端工程的分层思想)。
- 知识点相对来说比之前的知识更加的分散,要仔细学习才能搞懂各个知识点的逻辑关系。
- 要记的东西很多,所以要大量地重复练习才能记住,比如各种注解。