springboot学习日记(五):初学springboot

本文介绍了SpringBoot的入门案例,包括创建项目、设置热更新、静态资源管理、转发机制、Thymeleaf模板引擎的使用以及异常处理。通过实例展示了如何在SpringBoot项目中组织结构和实现基本功能。

目录

一、入门案例(返回JSON数据)

1.创建springboot项目

2.新建controller、dao、pojo、service文件夹,并在pojo文件夹下新建Person实体类

3.在controller文件夹下新建TestController类

4.点击慢方法运行,也可以点击右上角绿色三角形图标直接运行,而不再需要使用Tomcat运行;Spring Boot默认使用8080端口号,所以我们在浏览器输入localhost:8080/getperson就可以访问到数据啦

二、热更新

1.在settings中

2.在Edit Configurations中

三、静态资源访问和变更端口号、路径名称

1.变更端口号

2.变更路径名称

​编辑

3.引入数据集(图片音频视频什么的)

​编辑

四、用转发的方式进行图片、视频及音频访问

修改TestController类,  访问http://localhost:8080/getimg

转发传值:浏览器不能解析转发的jsp,可以转发(访问)文本文件, 也可以转发html文件

五、thymeleaf

要使用需要在pom.xml中导入thymeleaf依赖包:

六、案例练习(利用表单请求、显示列表)

1.创建四个html文件:test.html、login.html、fail.html、success.html , 填入代码:

2.在TestController类中添加代码

3.运行项目

七、统一异常拦截

1、新建包utils,创建MyControllerAdvice类

2.创建error.html

3.随便制造个错误,则页面会跳转到error.html


Spring框架非常优秀,但问题在于"配置过多",造成开发效率低、部署流程复杂以及集成难度大等问题。为解决上述问题,Spring Boot应运而生。

一、入门案例(返回JSON数据)

1.创建springboot项目

还可以直接去Spring官网下载Spring Boot初始化包

2.新建controller、dao、pojo、service文件夹,并在pojo文件夹下新建Person实体类

package com.lbcjxx.springboot.pojo;


import lombok.Data;
//Data自动生成set+get+toString
@Data
public class Person {
    private int id;
    private int age;
    private String name;

}

3.在controller文件夹下新建TestController类

 @ResponseBody  //返回对象转成JSON字符串  提供给Android ios小程序

package com.lbcjxx.springboot.controller;

import com.lbcjxx.springboot.pojo.Person;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    //    以Json方式返回 SpingBoot默认已经支持json返回
    //    SpringBoot项目内嵌Tomcat
    @RequestMapping("getperson")
    @ResponseBody
    public Person getperson(){
        Person person=new Person();
        person.setId(1);
        person.setAge(20);
        person.setName("testname123");
        return person;
    }
}


4.点击慢方法运行,也可以点击右上角绿色三角形图标直接运行,而不再需要使用Tomcat运行;Spring Boot默认使用8080端口号,所以我们在浏览器输入localhost:8080/getperson就可以访问到数据啦

二、热更新

热更新的好处就在于修改代码后不需要再重启项目,会自动的刷新,简化了繁琐的操作流程。

1.在settings中

2.在Edit Configurations中

三、静态资源访问和变更端口号、路径名称

都在改配置文件中添加代码:

1.变更端口号

#更改端口号
server.port=8086

2.变更路径名称

#变更路径
server.servlet.context-path=/springboot

3.引入数据集(图片音频视频什么的)

#引入数据集(图片音频视频什么的)-->静态资源访问
spring.web.resources.static-locations=classpath:/img

在resource中新建img,并放入一张照片

恢复原来的进行接下来的案例

四、用转发的方式进行图片、视频及音频访问

修改TestController类,  访问http://localhost:8080/getimg

转发传值:浏览器不能解析转发的jsp,可以转发(访问)文本文件, 也可以转发html文件

五、thymeleaf

在jsp中使用el表达式,但是html不认识el表达式,所以我们使用thymeleaf

访问浏览器,html支持thymeleaf,而不认识el表达式

要使用需要在pom.xml中导入thymeleaf依赖包:

<!--        thymeleaf-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

六、案例练习(利用表单请求、显示列表)

1.创建四个html文件:test.html、login.html、fail.html、success.html , 填入代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登录失败</title>
</head>
<body>
<h1>
  登录失败
</h1>
<a th:href="@{/login}">返回登录</a>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登录页面</title>
</head>
<body>
<h1>登录页面</h1>
<a th:href="@{/getpng}">test页面</a>
<form th:action="@{/logincommit}" method="post">
  <div>用户名:<input name="username"></div>
  <div>密码:<input name="password"></div>
  <div><input type="submit" value="提交"></div>
</form>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登陆成功</title>
</head>
<body>
登陆成功
</body>
</html>


<!DOCTYPE html>
<!--标签代码提示-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>test页面</title>
</head>
<body>
<h1>test</h1>
<a th:href="@{/login}">登录页面</a>
<img th:src="@{zp1.jpg}" width="200" height="100"/>
<!--<a th:href="@{/login}">登录页面</a>-->
<!--<img th:src="@{2.jpg}" width="200" height="100"/>-->
<!--html不认识el表达式-->
<!--html+thymeleaf-->
<!--<div>${name}</div>-->
<div th:text="${name}"></div>
<table border="1">
    <tr>
        <td>用户id</td>
        <td>用户年龄</td>
        <td>用户姓名</td>
    </tr>
    <tr th:each="person:${personList}">
        <td th:text="${person.id}">用户id</td>
        <td th:text="${person.age}">用户年龄</td>
        <td th:text="${person.name}">用户姓名</td>
    </tr>
</table>
</body>
</html>


2.在TestController类中添加代码

package com.lbcjxx.springboot.controller;

import com.lbcjxx.springboot.pojo.Person;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

@Controller
public class TestController {
    //    以Json方式返回 SpingBoot默认已经支持json返回
    //    SpringBoot项目内嵌Tomcat
    @RequestMapping("getperson")
    @ResponseBody
    public Person getperson(){
        Person person=new Person();
        person.setId(1);
        person.setAge(20);
        person.setName("testname123");
        return person;
    }

    @RequestMapping("getimg")
    public String getimg(Model model){
//         不能解析转发的jsp
//        return "2.jpg";
//        return "index.jsp";
        return "zp1.jpg";
    }

    @RequestMapping("test")
    public String test(Model model){
//         不能解析转发的jsp
//        return "2.jpg";
//        return "index.jsp";
//        return "1.txt";
        model.addAttribute("name","testName");
        List<Person> personList=new ArrayList<>();
        for(int i=0;i<10;i++){
            Person person=new Person();
            person.setId(i);
            person.setAge(20+i);
            person.setName("testName"+i);
            personList.add(person);
        }
        model.addAttribute("personList",personList);
        return "test.html";
    }

    @RequestMapping("login")
    public String login(){
        return "login.html";
    }

    @RequestMapping("logincommit")
    public String logincommit(Model model,String username,String password){
        //todo user表select * from .. where ...
        //1 ->成功 0->失败 2->注册(bug)
        if(username.equals("admin")&&password.equals("123456")){
            return "success.html";
        }
        return "fail.html";
    }

}


3.运行项目

七、统一异常拦截

1、新建包utils,创建MyControllerAdvice类

package com.lbcjxx.springboot.utils;


import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

@ControllerAdvice
public class MyControllerAdvice {
    //    程序抛出Exception异常 会被该方法拦截
    @ExceptionHandler(value = Exception.class)
    public String error(Exception e){
        return "error.html";
    }
}


2.创建error.html

3.随便制造个错误,则页面会跳转到error.html

上课内容总结 及 参考实践该博客:

【精选】SpringBoot开发之Spring Boot入门_头歌springboot_不服输的小乌龟的博客-优快云博客

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值