Java小白入门 —— SpringBoot 项目创建

Java小白入门 —— SpringBoot 项目创建

一. 创建 SpringBoot 项目

  1. 选择 Default 进行在线安装
    Java小白入门 —— SpringBoot 项目创建_第1张图片

  2. Project Metadata 设置项目坐标及项目名称
    坐标Group ID是项目组织唯一的标识符,实际对应项目中的package包。
    坐标Artifact ID是项目的唯一的标识符,实际对应项目的project name名称,Artifact不可包含大写字母。
    Java小白入门 —— SpringBoot 项目创建_第2张图片

  3. Dependencies 初始化依赖
    此处选择web
    Java小白入门 —— SpringBoot 项目创建_第3张图片

  4. 等待依赖下完之后的项目目录
    Java小白入门 —— SpringBoot 项目创建_第4张图片

二. 编写 HelloWorld 服务

创建 controller.HelloController

/**
 * @author MuXin
 * @date 2020/11/2 14:04
 */
@RestController //修饰该Controller所有的方法返回JSON格式,直接可以编写Restful接口
@EnableAutoConfiguration //让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置
public class HelloController {

    @RequestMapping("/hello")
    public String sayHW() {
        return "Hello World";
    }
}

启动主程序,打开浏览器访问 http://localhost:8080/hello 即可查看调用结果

三. Web 开发

1. 静态资源访问

在进行 Web 端开发时,需要引用大量的js、css、图片等静态资源;
springboot 默认提供的静态资源目录位置需置于classpath下,目录名需符合如下规则:
/static
/public
/resources
/META-INF/resources

2. 全局捕获异常

@ExceptionHandler 表示拦截异常;
@ControllerAdvice 是 controller 的一个辅助类,最常用的就是作为全局异常处理的切面类;
@ControllerAdvice 可以指定扫描范围;
@ControllerAdvice 约定了几种可行的返回值,如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换

/**
 * @author MuXin
 * @date 2020/11/2 14:43
 */
@ControllerAdvice   //全局异常处理、全局数据绑定、全局数据预处理
public class GlobalExceptionHandler {
    
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Map<String, Object> exceptionHandler() {
        HashMap<String, Object> hm = new HashMap<>();
        hm.put("errorCode", "101");
        hm.put("errorMsg", "系统错误");
        return hm;
    }
    
}

3. 渲染 web 页面

Spring Boot提供了默认配置的模板引擎主要有以下几种:

Thymeleaf
FreeMarker
Velocity
Groovy
Mustache

Spring Boot建议使用这些模板引擎,避免使用JSP,若一定要使用JSP将无法实现Spring Boot的多种特性
当你使用上述模板引擎中的任何一个,它们默认的模板配置路径为:src/main/resources/templates。当然也可以修改这个路径,具体如何修改,可在后续各模板引擎的配置属性中查询并修改。

4. 使用 Freemarker 模板引擎渲染 web 视图

①. pom 依赖引入

	 	<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-freemarkerartifactId>
        dependency>

②. 后台代码

/**
 * @author MuXin
 * @date 2020/11/2 15:12
 */
@Controller
public class IndexControler {
    @RequestMapping("/index")
    public String index(ModelMap map) {
        map.put("name", "测试");
        return "index";
    }
}

③. 前台代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8"/>
    <title></title>
</head>
<body>
${name}
</body>
</html>

④. application.yml 文件配置

spring:
  freemarker:
    allow-request-override: false
    cache: true
    check-template-location: true
    charset: utf-8
    content-type: text/html
    expose-request-attributes: false
    expose-session-attributes: false
    expose-spring-macro-helpers: false
    suffix: .ftl
    template-loader-path: classpath:/templates/

四. 数据访问

1. springboot 整合 JDBCTemplate

①. 依赖引入

   		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>

②. application.yml 文件配置

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/sbdemo?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    username: root
    password: 123456

③. 后台代码

/**
 * @author MuXin
 * @date 2020/11/3 10:52
 */
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void createUser(String name, Integer age) {
        jdbcTemplate.update("insert into users values (?,?)", name, age);
    }

}

④. 前台代码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8"/>
    <title></title>
</head>
<body>
${name}
</body>
</html>

2. springboot 整合使用 mybatis

①. 依赖引入

 		<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>

②. Mapper代码

/**
 * @author MuXin
 * @date 2020/11/3 14:12
 */
@Mapper
@Repository
public interface UserMapper {
    @Select("select * from users where name =#{name}")
    User findByName(@Param("name") String name);

    @Insert("insert into users(name,age) values(#{name},#{age}")
    int insert(@Param("name") String name, @Param("age") Integer age);
}

3.springboot 整合使用 Spring JPA

①. 依赖引入

 		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-jpaartifactId>
        dependency>

②. 实体类

/**
 * @author MuXin
 * @date 2020/11/3 14:31
 */
@Entity(name = "users")
public class User {

    @Id
    @GeneratedValue
    private Integer id;

    @Column
    private String name;

    @Column
    private Integer age;

    public User() {
    }

    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;
    }
}

③. UserDao

/**
 * @author MuXin
 * @date 2020/11/3 14:50
 */
public interface UserDao extends JpaRepository<User,Integer> {

}

④. UserController

/**
 * @author MuXin
 * @date 2020/11/3 14:52
 */
@RestController
public class UserController {

    @Autowired
    private UserDao userDao;
    
    @RequestMapping("/user")
    public String user(Integer id) {
        Optional<User> user = userDao.findById(id);
        return user.get().getName();
    }
}

你可能感兴趣的:(java小白入门,java,spring,spring,boot)