[spring]spring boot项目实例

目录

1.概述

2.创建项目

3.配置pom.xml

4.配置application.properties

5.创建package

6.创建相关类

6.1在model包下创建UserBean

6.2在service包下创建UserService

6.3在serviceImpl包下创建UserServiceImpl

6.4在dao包下创建UserMapper

6.5在controller包下创建LoginController

6.6 在创建主程序

7.创建mapper文件

7.1创建存放mapper文件的目录

7.2创建mapper文件

7.3配置mapper路径

8.创建HTML页面

8.1创建login.html

8.2创建success.html

8.2创建error.html

9.创建数据库用户表

10.测试

10.1 直接在主类测试

10.2 编写测试类测试

11.问题处理

11.1 提示没有org.postgresql.Driver

11.2 页面提示Whitelabel Error Page


1.概述

本实例通过spring boot构建web项目,从用户登录的例子创建CMV层次的流程。

环境:

JDK:1.8

数据库:postgresql

spring boot:2.4.2

2.创建项目

参考《[spring]用IEDA创建spring-boot项目

3.配置pom.xml

文件位置:项目文件夹下

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.4.2</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.zzj.spring.boot</groupId>
   <artifactId>spring-boot-test02</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>springboottest02</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <!--解析html包-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <dependency>
         <groupId>org.postgresql</groupId>
         <artifactId>postgresql</artifactId>
         <version>42.2.18</version>

      </dependency>
        <!--MyBatis配置-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>
</project>

 

4.配置application.properties

文件位置:src/main/resources

 

spring.datasource.driver-class-name=org.postgresql.Driver
#配置数据库连接URL
spring.datasource.url=jdbc:postgresql://192.168.17.23:25308/zzjdb
#配置数据库额度用户名
spring.datasource.username=zzj
#配置数据库的密码
spring.datasource.password=Huawei@123
# 配置服务器的相关信息
# 配置服务器的端口
#server.port=8080

#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#spring.thymeleaf.mode=HTML5
#pring.thymeleaf.mode =LEGACYHTML5
#spring.thymeleaf.encoding=UTF-8
#pring.thymeleaf.content-type=text/html

#配置映射文件
mybatis.mapper-locations=classpath:mapper/*.xml
#配置实体类
#mybatis.type-aliases-package=com.zzj.spring.boot.model

 

5.创建package

创建5个包: controller、service、serviceImpl、dao、model

 

6.创建相关类

6.1在model包下创建UserBean

package com.zzj.spring.boot.model;
public class UserBean {

    private int id;

    private String name;

    private String password;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }
    public String getName() {

        return name;

    }

    public void setName(String name) {
        this.name = name;

    }

    public String getPassword() {
        return password;

    }

    public void setPassword(String password) {

        this.password = password;

    }

}

 

6.2在service包下创建UserService

package com.zzj.spring.boot.service;
import com.zzj.spring.boot.model.UserBean;
public interface UserService {
    UserBean loginIn(String name, String password);

}

6.3在serviceImpl包下创建UserServiceImpl

package com.zzj.spring.boot.serviceImpl;
import com.zzj.spring.boot.dao.UserMapper;
import com.zzj.spring.boot.service.UserService;
import com.zzj.spring.boot.model.UserBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Override
    public UserBean loginIn(String name, String password) {
        return userMapper.getInfo(name, password);
    }
}

6.4在dao包下创建UserMapper

package com.zzj.spring.boot.dao;
import com.zzj.spring.boot.model.UserBean;
public interface UserMapper {
    UserBean getInfo(String name, String password);
}

6.5在controller包下创建LoginController

package com.zzj.spring.boot.controller;
import com.zzj.spring.boot.model.UserBean;
import com.zzj.spring.boot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


@Controller
public class LoginController {

    @Autowired
    UserService userService;
    @RequestMapping("/login")
    public String index(){
        return "login";
    }

    @RequestMapping(value = "/loginIn",method = RequestMethod.POST)
    public String login(String name,String password) {
        UserBean userBean = userService.loginIn(name, password);
        if (userBean != null) {
            return "success";
        }
        else {
            return "error";
        }

    }
    }

6.6 在创建主程序

注意:主程序一定要在和controller包在同一个层级上,否则报错。

package com.zzj.spring.boot.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.mybatis.spring.annotation.MapperScan;

@SpringBootApplication

@MapperScan("com.zzj.spring.boot.dao")

public class Springboottest02Application {

   public static void main(String[] args) {

      SpringApplication.run(Springboottest02Application.class, args);

   }

}

 

7.创建mapper文件

Mapper文件作为dao包下的接口接口实现类,可以通过配置XML文件的方式实现底层数据库的解耦。一般上dao下的每个类对应一个mapper文件,每个类型的每个方法对应一个配置。

7.1创建存放mapper文件的目录

在src/main/resources下创建mapper文件夹

 

8.1创建login.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>hello</title>

</head>

<body>

<form role="form" action = "/loginIn" method="post">

    username:<input type="text" id="name" name = "name"> <br>

    passwd:<input type="password" id = "password" name = "password"> <br>

    <input type="submit" id = "login" value = "login">

</form>

</body>

</html>

 

8.2创建success.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>hello</title>

</head>

<body>

恭喜你,登录成功!!

</body>

</html>

8.2创建error.html

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>hello</title>

</head>

<body>

用户名或密码错误,请确实是否正确!!

</body>

</html>

 

9.创建数据库用户表

在postgrepsql数据库中执行:

create table zzjtest.testuser(

id int,

name varchar(50),

password varchar(50)

);

insert into zzjtest.testuser(id,name,password)values(1,'a','a');

insert into zzjtest.testuser(id,name,password)values(1,'b','b');

10.测试

10.1 直接在主类测试

启动Springboottest02Application

 
 
启动完成后,在浏览器输入localhost:8080 进行测试

10.2 编写测试类测试

 修改src/test/java/com.zzj.spring.boot.demo的Springboottest02ApplicationTests类

 

package com.zzj.spring.boot.demo;
import com.zzj.spring.boot.model.UserBean;
import com.zzj.spring.boot.service.UserService;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public  class Springboottest02ApplicationTests {
   @Autowired
   UserService userService;
   @Test
   public void contextLoads() {
      UserBean userBean = userService.loginIn("b", "b");
      System.out.println("username:"+userBean.getName()+";userpasswd:"+userBean.getPassword());
   }
   }

 

11.问题处理

11.1 提示没有org.postgresql.Driver

在pom.xml中添加

<repositories>

   <repository>

      <id>java.net</id>

      <url>http://download.java.net/maven/2</url>

   </repository>

</repositories>

11.2 页面提示Whitelabel Error Page

 

在pom.xml中添加

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

在application.properties 中添加

mybatis.mapper-locations=classpath:mapper/*.xml

 

 

项目示例基于spring boot 最新版本(2.1.9)实现,Spring BootSpring Cloud 学习示例,将持续更新…… 在基于Spring BootSpring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目需求的各种组件和积累各种解决方案。基于这样的背景下,我开源了本示例项目,方便大家快速上手Spring BootSpring Cloud 。 每个示例都带有详细的介绍文档、作者在使用过程中踩过的坑、解决方案及参考资料,方便快速上手为你提供学习捷径,少绕弯路,提高开发效率。 有需要写关于spring bootspring cloud示例,可以给我提issue哦 ## 项目介绍 spring boot demo 是一个Spring BootSpring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户密码设计)、actuator(服务监控)、cloud-config(配置中心)、cloud-gateway(服务网关)、email(邮件发送)、cloud-alibaba(微服务全家桶)等模块 ### 开发环境 - JDK1.8 + - Maven 3.5 + - IntelliJ IDEA ULTIMATE 2019.1 - MySql 5.7 + ### Spring Boot 模块 模块名称|主要内容 ---|--- helloworld|[spring mvc,Spring Boot项目创建,单元测试](https://github.com/smltq/spring-boot-demo/blob/master/helloworld/HELP.md) web|[ssh项目,spring mvc,过滤器,拦截器,监视器,thymeleaf,lombok,jquery,bootstrap,mysql](https://github.com/smltq/spring-boot-demo/blob/master/web/HELP.md) aop|[aop,正则,前置通知,后置通知,环绕通知](https://github.com/smltq/spring-boot-demo/blob/master/aop/HELP.md) data-redis|[lettuce,redis,session redis,YAML配置,连接池,对象存储](https://github.com/smltq/spring-boot-demo/blob/master/data-redis/HELP.md) quartz|[Spring Scheduler,Quartz,分布式调度,集群,mysql持久化等](https://github.com/smltq/spring-boot-demo/blob/master/quartz/HELP.md) shiro|[授权、认证、加解密、统一异常处理](https://github.com/smltq/spring-boot-demo/blob/master/shiro/HELP.md) sign|[防篡改、防重放、文档自动生成](https://github.com/smltq/spring-boot-demo/blob/master/sign/HELP.md) security|[授权、认证、加解密、mybatis plus使用](https://github.com/smltq/spring-boot-demo/blob/master/security/HELP.md) mybatis-plus-generator|[基于mybatisplus代码自动生成](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-plus-generator) mybatis-plus-crud|[基于mybatisplus实现数据库增、册、改、查](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-plus-crud) encoder|[主流加密算法介绍、用户加密算法推荐](https://github.com/smltq/spring-boot-demo/blob/master/encoder/HELP.md) actuator|[autuator介绍](https://github.com/smltq/spring-boot-demo/blob/master/actuator/README.md) admin|[可视化服务监控、使用](https://github.com/smltq/spring-boot-demo/blob/master/admin/README.md) security-oauth2-credentials|[oauth2实现密码模式、客户端模式](https://github.com/smltq/spring-boot-demo/blob/master/security-oauth2-credentials/README.md) security-oauth2-auth-code|[基于spring boot实现oauth2授权模式](https://github.com/smltq/spring-boot-demo/blob/master/security-oauth2-auth-code/README.md) mybatis-multi-datasource|[mybatis、数据库集群、读写分离、读库负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/mybatis-multi-datasource) template-thymeleaf|[thymeleaf实现应用国际化示例](https://github.com/smltq/spring-boot-demo/blob/master/template-thymeleaf) mq-redis|[redis之mq实现,发布订阅模式](https://github.com/smltq/spring-boot-demo/blob/master/mq-redis) email|[email实现邮件发送](https://github.com/smltq/spring-boot-demo/blob/master/email) jGit|[java调用git命令、jgit使用等](https://github.com/smltq/spring-boot-demo/blob/master/jGit) webmagic|[webmagic实现某电影网站爬虫示例](https://github.com/smltq/spring-boot-demo/blob/master/webmagic) netty|[基于BIO、NIO等tcp服务器搭建介绍](https://github.com/smltq/spring-boot-demo/blob/master/netty) ### Spring Cloud 模块 模块名称|主要内容 ---|--- cloud-oauth2-auth-code|[基于spring cloud实现oath2授权模式](https://github.com/smltq/spring-boot-demo/blob/master/cloud-oauth2-auth-code) cloud-gateway|[API主流网关、gateway快速上手](https://github.com/smltq/spring-boot-demo/blob/master/cloud-gateway) cloud-config|[配置中心(服务端、客户端)示例](https://github.com/smltq/spring-boot-demo/blob/master/cloud-config) cloud-feign|[Eureka服务注册中心、负载均衡、声明式服务调用](https://github.com/smltq/spring-boot-demo/blob/master/cloud-feign) cloud-hystrix|[Hystrix服务容错、异常处理、注册中心示例](https://github.com/smltq/spring-boot-demo/blob/master/cloud-hystrix) cloud-zuul|[zuul服务网关、过滤器、路由转发、服务降级、负载均衡](https://github.com/smltq/spring-boot-demo/blob/master/cloud-zuul) cloud-alibaba|[nacos服务中心、配置中心、限流等使用(系列示例整理中...)](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba) #### Spring Cloud Alibaba 模块 模块名称|主要内容 ---|--- nacos|[Spring Cloud Alibaba(一)如何使用nacos服务注册和发现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README1.md) config|[Spring Cloud Alibaba(二)配置中心多项目、多配置文件、分目录实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README2.md) Sentinel|[Spring Cloud Alibaba(三)Sentinel之熔断降级](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README3.md) Dubbo|[Spring Cloud Alibaba(四)Spring Cloud与Dubbo的融合](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README4.md) RocketMQ|[Spring Cloud Alibaba(五)RocketMQ 异步通信实现](https://github.com/smltq/spring-boot-demo/blob/master/cloud-alibaba/README5.md) ### 其它 模块名称|主要内容 ---|--- leetcode|[力扣题解目录](https://github.com/smltq/spring-boot-demo/blob/master/leetcode) ## Spring Boot 概述 Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。 Spring BootSpring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用只需要很少的Spring配置。 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Sprin
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值