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

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

一. 创建 SpringBoot 项目

  1. 选择 Default 进行在线安装
    在这里插入图片描述

  2. Project Metadata 设置项目坐标及项目名称
    坐标Group ID是项目组织唯一的标识符,实际对应项目中的package包。
    坐标Artifact ID是项目的唯一的标识符,实际对应项目的project name名称,Artifact不可包含大写字母。
    设置项目坐标及项目名称

  3. Dependencies 初始化依赖
    此处选择web
    初始化依赖

  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.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </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.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </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.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </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();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值