SpringBoot(四)SpringBoot搭建简单服务端

本文介绍了如何使用SpringBoot结合MySQL和JPA来搭建一个服务端,实现新用户注册功能。从导入依赖、创建DAO和JpaRepository接口、定义返回对象、编写Controller到连接数据库和运行测试,详细阐述了整个过程,并提出了可能遇到的问题及解决方案。
摘要由CSDN通过智能技术生成

    通过之前的几篇文章相信大家已经对SpringBoot项目开发有了一个基本的了解。本篇,介绍下如何使用SpringBoot搭建一个简单的服务端,实现一个新用户注册的场景,供前端和移动端去使用。本篇需要你对SpringBoot的starter,mysql,jpa等有一些基本的了解。不过即使你没有任何的基础,直接跟着我的步骤来也是ok的。

目录

一、导入starter和mysql

二、创建Dao类

三、创建JpaRepository

四、创建返回对象类RegisterResult

五、实现Controller

六、创建数据库和表

七、SpringBoot连接mysql数据库

八、运行项目并测试

九、可能遇到的问题


一、导入starter和mysql

    上篇介绍过spring-boot-starter-web,既然是服务端,我们依然需要导入它,在这里不再赘述。然后,导入mysql,因为我们接受到新用户的注册信息后,需要持久化到数据库,在这里我们使用mysql。此外,java程序需要跟mysql数据库交互,大学课程上我们是使用JDBC,大家应该都很熟悉。但是,在这里我们使用JPA(一种ORM规范,用来解决面向对象和关系数据库不匹配问题),导入spring-boot-starter-data-jpa。

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

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>

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

二、创建Dao类

    Dao做java后端的同学肯定都很熟悉,Android也有一个非常优秀的ORM框架GreenDao。上面也提到过,ORM是为了解决对象和关系数据库的映射问题,因此需要注意:Dao类的表名和字段名需要跟后面在mysql创建的表名和字段名一致。

@Entity
@Table(name="user_info")
public class UserDao {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer userId;
    @Column(name = "user_name")
    private String userName;
    @Column(name = "user_password")
    private String userPassword;
    @Column(name = "user_phone")
    private String userPhone;
    @Column(name = "user_token")
    private String userToken;
    @Column(name = "user_register_time")
    private String userRegisterTime;
    @Column(name = "user_last_login_time")
    private String userLastLoginTime;

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserPassword() {
        return userPassword;
    }

    public void setUserPassword(String userPassword) {
        this.userPassword = userPassword;
    }

    public String getUserPhone() {
        return userPhone;
    }

    public void setUserPhone(String userPhone) {
        this.userPhone = userPhone;
    }

    public String getUserToken() {
        return userToken;
    }

    public void setUserToken(String userToken) {
        this.userToken = userToken;
    }

    public String getUserRegisterTime() {
        return userRegisterTime;
    }

    public void setUserRegisterTime(String userRegisterTime) {
        this.userRegisterTime = userRegisterTime;
    }

    public String getUserLastLoginTime() {
        return userLastLoginTime;
    }

    public void setUserLastLoginTime(String userLastLoginTime) {
        this.userLastLoginTime = userLastLoginTime;
    }
}

三、创建JpaRepository

    使用JPA,我们只需要定义一个接口就可以轻松地操作数据库,不用写SQL,这个接口继承JpaRepository接口。JpaRepository接口已经提供了几乎非常全面的增删改查方法,自定义的Repository主要是去实现自定义的一些增删改查方法,比如如下示例中的通过用户名和token去查询:

@Repository
public interface UserRepository extends JpaRepository<UserDao,Integer> {

    public UserDao findByUserName(String userName); //通过UserName查询

    public UserDao findByUserToken(String token);//通过UserToken查询
}

四、创建返回对象类RegisterResult

    客户端访问服务端,服务端需要返回数据。如下示例中,code可以表示状态码(例如200),status表示注册成功或失败(例如fail),msg则是附加的信息(例如因用户名重复注册失败)。因为是个demo,暂时我们就这么些。

public class RegisterResult {
    private int code;
    private String status;
    private String msg;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

五、实现Controller

    请求API的实现在controller中,我实现了简单的注册逻辑,附带基本的校验。注册成功后,会把新用户的信息写入mysql数据库:

@RestController
public class RegisterController {
    @Autowired
    private UserRepository userRepository;

    @GetMapping("register")
    public RegisterResult register(String name, String phone, String password) {
        int code = 0;
        String status = "未知状态";
        String msg = "未知信息";
        String token = "";
        RegisterResult registerResult = new RegisterResult();
        if (TextUtils.isEmpty(name)) {
            status = "fail";
            msg = "用户名不能为空";
        } else if (TextUtils.isEmpty(phone)) {
            status = "fail";
            msg = "手机号不能为空";
        } else if (TextUtils.isEmpty(password)) {
            status = "fail";
            msg = "密码不能为空";
        } else if (userRepository.findByUserName(name) != null) {
            status = "fail";
            msg = "用户名已存在";
        } else {
            status = "success";
            msg = "注册成功";
            addUser(name, phone, password);
        }

        registerResult.setCode(code);
        registerResult.setStatus(status);
        registerResult.setMsg(msg);
        return registerResult;
    }

    /**
     * 添加用户
     *
     * @param name     name
     * @param password password
     * @param phone    phone
     */
    public void addUser(String name, String password, String phone) {
        UserDao userDao = new UserDao();
        userDao.setUserName(name);
        userDao.setUserPassword(password);
        userDao.setUserPhone(phone);
        Timestamp timestamp = new Timestamp(new Date().getTime());
        userDao.setUserRegisterTime(timestamp + "");
        userRepository.save(userDao);
    }
}

六、创建数据库和表

    在这里我使用mysql workbench建表,在此不详细介绍如何使用mysql workbench。特别需要注意的是,user_id设置主键,设置自增。如下:

七、SpringBoot连接mysql数据库

    在application.properties文件中,增加如下配置:

spring.datasource.url=jdbc:mysql://localhost:3306/android_server?&useSSL=false
spring.datasource.username=root
spring.datasource.password=888888
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

八、运行项目并测试

    运行项目,在浏览器中输入:​​​​​​​http://localhost:8080/register?name=zj&phone=1234567890&password=123456

 ​​​​​​​​​​​​​​​

     查看mysql数据库,看是否成功写到表里: 

 

九、可能遇到的问题

1、java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)。检查数据库用户名或密码是否拼写错误。

2、com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure。数据库端口号不对,mysql通常是3306。 

    简单总结一下,本篇介绍了如何通过ItelliJ社区版创建的SpringBoot项目搭配mysql和jpa搭建简单的服务端,去模拟实现新用户注册这样的场景。也整理了新手在开发和配置过程中可能遇到的一些问题,希望对大家有所帮助。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供相关的步骤和代码示例。 首先,我们需要在Spring Boot项目中添加以下依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> ``` 接着,我们需要创建一个WebService,可以在Spring Boot项目中创建一个新的类,例如: ```java import javax.jws.WebMethod; import javax.jws.WebService; @WebService public class MyWebService { @WebMethod public String sayHello(String name) { return "Hello, " + name + "!"; } } ``` 此时,我们已经创建了一个简单的WebService,其中包含一个`sayHello`方法,用于返回传入的参数加上一句问候语。 然后,我们需要在Spring Boot项目中添加一个配置类,用于配置WebService的相关信息,例如: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter; @Configuration public class WebServiceConfig { @Bean public SimpleJaxWsServiceExporter simpleJaxWsServiceExporter() { SimpleJaxWsServiceExporter exporter = new SimpleJaxWsServiceExporter(); exporter.setBaseAddress("http://localhost:8080/services/"); return exporter; } } ``` 在上述配置中,我们使用了`SimpleJaxWsServiceExporter`类,它可以自动将`@WebService`注解的类发布为WebService,并且可以使用`setBaseAddress`方法设置WebService的访问地址。 最后,我们可以使用Java客户端来访问我们创建的WebService,例如: ```java import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class MyWebServiceClient { public static void main(String[] args) throws Exception { URL url = new URL("http://localhost:8080/services/MyWebService?wsdl"); QName qname = new QName("http://webservice.springboot.example.com/", "MyWebServiceService"); Service service = Service.create(url, qname); MyWebService myWebService = service.getPort(MyWebService.class); String result = myWebService.sayHello("World"); System.out.println(result); } } ``` 在上述代码中,我们使用了Java标准库中的`javax.xml.ws.Service`类来访问我们创建的WebService,并且使用了`MyWebService`接口来调用`sayHello`方法。 以上就是使用Spring Boot和WebService搭建WebService服务端及使用Java客户端的简单示例,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个玩游戏的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值