1. 搭建开发环境

Apache Maven

  • 可以帮助我们构建项目、管理项目中的jar包
  • Maven仓库:存放构件的位置
    • 构件:创建项目时依赖的资源jar包.
    • 本地仓库:默认是 ~/.m2/repository
    • 远程仓库:中央仓库(官网)、镜像仓库(第三方网站)、私服仓库(公司自己搭建)
  • 示例:安装、配置、常用命令
  • 下载 : http://maven.apache.org
  • 解压,配置conf文件夹下,settings.xml.修改为阿里云镜像仓库.标签下修改网址.
  • 将bin文件路径配置到环境变量
  • 常用命令: 创建,编译(生成target文件夹),清除,测试.

    IntelliJ IDEA

  • 目前最流行的Java集成开发工具

  • 示例:安装、配置、创建项目
  • 下载: http://www.jetbrains.com/idea
  • Eclipse创建的项目需要导入(import),IDEA的直接open就可以.
  • Settings的Editor下设置maven及其配置文件.
  • 创建maven模板项目.
  • 重新编译 Ctrl+F9

    Spring Initializr

  • 把包进行整合按功能划分归类.

  • 创建 Spring Boot 项目的引导工具
  • 示例:创建“牛客社区”项目
  • springboot内嵌了Tomcat.

    Spring Boot 入门示例

  • Spring Boot 核心作用

  • 起步依赖、自动配置、端点监控
  • 示例:一个简单的处理客户端请求案例
    • application.properties文件进行配置

ServerProperties server.port=8080 服务器端口 server.servlet.context-path=/community 项目访问路径

2. Spring入门

Spring全家桶

  • Spring Framework
  • Spring Boot
  • Spring Cloud (微服务,大项目拆分成若干子项目)
  • Spring Cloud Data Flow(数据集成)
  • 官网: https://spring.io

    Spring Framework

  • Spring Core

  • IoC、AOP (管理对象的思想,spring管理的对象叫做Bean.)
  • Spring Data Access
    • Transactions(事务)、Spring MyBatis
  • Web Servlet
    • Spring MVC
  • Integration(集成)

    • Email、Scheduling(定时任务)、AMQP(消息队列)、Security(安全控制)

      Spring IoC

  • Inversion of Control

    • 控制反转,是一种面向对象编程的设计思想。
  • Dependency Injection
  • 依赖注入,是IoC思想的实现方式。
  • IoC Container
  • IoC容器,是实现依赖注入的关键,本质上是一个工厂。
  • 容器管理Bean的前提:提供Bean的类型,通过配置文件配置Bean之间的关系.
  • 降低Bean之间的耦合度

    代码部分

  • 主动获取:

    1. @SpringBootApplication
    2. public class CommunityApplication {
    3. public static void main(String[] args) {
    4. SpringApplication.run(CommunityApplication.class, args);
    5. }
    6. }

    配置类,启动时自动扫描,扫描配置类所在的包以及子包下的Bean.
    @Component @Repository @Service @Controller
    测试代码要以其为配置类,需加上注解:

    1. @ContextConfiguration(classes = CommunityApplication.class)

    想要使用spring容器需要实现接口,ApplicationContextAware,实现接口中set方法.传入参数applicationContext(spring容器),他是一个接口,继承自BeanFactory.
    获取Bean:applicationContext.getBean(test.class);

    1. public class CommunityApplicationTests implements ApplicationContextAware {
    2. private ApplicationContext applicationContext;
    3. @Override
    4. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
    5. this.applicationContext = applicationContext;
    6. }
    7. }

    给Bean自定义名字:@Component(“名字”)
    初始化方法
    @PostConstruct,在构造器之后调用.
    @PreDestroy销毁对象之前调用.
    @Scope()指定单例多例
    @Configuration配置类,用以装载使用第三方类.

  • 自动注入:

    • @Autowired

3. Spring MVC入门

HTTP

  • HyperText Transfer Protocol
  • 用于传输HTML等内容的应用层协议
  • 规定了浏览器和服务器之间如何通信,以及通信时的数据格式。
  • 学习网站:https://developer.mozilla.org/zh-CN

浏览器服务器通信步骤:

  1. 打开一个TCP连接
  2. 发生一个HTTP报文
  3. 读取服务器返回的报文信息
  4. 关闭连接或为后续请求重用连接
  • 按下F12进入调试,在Network下看请求响应(Header和Response)

    Spring MVC

  • 三层架构

    • 表现层(mvc)、业务层、数据访问层
  • MVC(设计模式)
  • Model:模型层
  • View:视图层
  • Controller:控制层
  • 核心组件
    • 前端控制器:DispatcherServlet

浏览器访问服务器,首先访问的时Controller控制层,Controller调用业务层处理,处理完后将得到的数据封装到Model,传给视图层。
01 初识Spring Boot,开发社区首页 - 图1

Thymeleaf

  • 模板引擎
    • 生成动态的HTML。
  • Thymeleaf
  • 倡导自然模板,即以HTML文件为模板。
  • 常用语法
    • 标准表达式、判断与循环、模板的布局。

      代码部分

      底层:
      1. @RequestMapping("/http")
      2. public void http(HttpServletRequest request, HttpServletResponse response) {
      3. // 获取请求数据
      4. System.out.println(request.getMethod());
      5. System.out.println(request.getServletPath());
      6. Enumeration<String> enumeration = request.getHeaderNames();
      7. while (enumeration.hasMoreElements()) {
      8. String name = enumeration.nextElement();
      9. String value = request.getHeader(name);
      10. System.out.println(name + ": " + value);
      11. }
      12. System.out.println(request.getParameter("code"));
      13. // 返回响应数据
      14. response.setContentType("text/html;charset=utf-8");
      15. try (
      16. PrintWriter writer = response.getWriter();
      17. ) {
      18. writer.write("<h1>xx网</h1>");
      19. } catch (IOException e) {
      20. e.printStackTrace();
      21. }
      22. }
      从路径中得到变量GET(两种方法):
      1. @RequestMapping(path = "/students", method = RequestMethod.GET)
      2. @ResponseBody
      3. public String getStudents(
      4. @RequestParam(name = "current", required = false, defaultValue = "1") int current,
      5. @RequestParam(name = "limit", required = false, defaultValue = "10") int limit) {
      6. System.out.println(current);
      7. System.out.println(limit);
      8. return "some students";
      9. }
      10. @RequestMapping(path = "/student/{id}", method = RequestMethod.GET)
      11. @ResponseBody
      12. public String getStudent(@PathVariable("id") int id) {
      13. System.out.println(id);
      14. return "a student";
      15. }
      POST请求:
      1. @RequestMapping(path = "/student", method = RequestMethod.POST)
      2. @ResponseBody
      3. public String saveStudent(String name, int age) {
      4. System.out.println(name);
      5. System.out.println(age);
      6. return "success";
      7. }
      响应HTML数据(使用ModelAndView或Model): ```java @RequestMapping(path = “/teacher”, method = RequestMethod.GET) public ModelAndView getTeacher() { ModelAndView mav = new ModelAndView(); mav.addObject(“name”, “张三”); mav.addObject(“age”, 30); mav.setViewName(“/demo/view”); return mav; }

@RequestMapping(path = “/school”, method = RequestMethod.GET) public String getSchool(Model model) { model.addAttribute(“name”, “北京大学”); model.addAttribute(“age”, 80); return “/demo/view”; }

  1. 响应JSON数据(异步请求):Java对象 -> JSON字符串 -> JS对象,使用@ResponseBody注解
  2. ```java
  3. @RequestMapping(path = "/emp", method = RequestMethod.GET)
  4. @ResponseBody
  5. public Map<String, Object> getEmp() {
  6. Map<String, Object> emp = new HashMap<>();
  7. emp.put("name", "张三");
  8. emp.put("age", 23);
  9. return emp;
  10. }
  11. //转换为json字符串 {"name":"张三","age":"23"}
  12. //也可以返回List<Map<String, Object>>,list集合。

4. MyBatis入门

安装数据库

  • 安装MySQL Server
  • 安装MySQL Workbench

    MyBatis

  • 核心组件

    • SqlSessionFactory:用于创建SqlSession的工厂类。
    • SqlSession:MyBatis的核心组件,用于向数据库执行SQL。
    • 主配置文件:XML配置文件,可以对MyBatis的底层行为做出详细的配置。
    • Mapper接口:就是DAO接口,在MyBatis中习惯性的称之为Mapper。
    • Mapper映射器:用于编写SQL,并将SQL和实体类映射的组件,采用XML、注解均可实现。
  • 示例
    • 使用MyBatis对用户表进行CRUD操作。
  • 在application.properties中配置数据库、Mybatis相关。

5. 开发社区首页

  • 开发流程
    • 1次请求的执行过程
  • 分步实现
  • 开发社区首页,显示前10个帖子
  • 开发分页组件,分页显示所有的帖子(Page类的实现)

01 初识Spring Boot,开发社区首页 - 图2

6. 项目调试技巧

  • 响应状态码的含义
  • 服务端断点调试技巧
  • 客户端断点调试技巧
  • 设置日志级别,并将日志输出到不同的终端

7. 版本控制

  • 认识Git
    • Git简介
    • Git的安装与配置
  • Git常用命令
    • 将代码提交至本地仓库
    • 将代码上传至远程仓库
  • IDEA集成Git
    • 在IDEA中配置并使用Git
      1. # 账号配置
      2. git config --list
      3. git config --global user.name "yourName"
      4. git config --global user.email "yourEmail"
      5. # 本地仓库
      6. git init
      7. git status -s
      8. git add *
      9. git commit -m '...'
      10. # 生成秘钥
      11. ssh-keygen -t rsa -C "yourEmail"
      12. # 推送已有项目
      13. git remote add origin
      14. https://git.nowcoder.com/334190970/Test.git
      15. git push -u origin master
      16. # 克隆已有仓库
      17. git clone https://git.nowcoder.com/334190970/Test.git