SpringBoot结合jpa,监听器、thymeleaf实现监听网站的访问量

1、导入依赖、进行相关配置

添加jpa、thymeleaf、jdbc和java-connector的相关依赖。
(这里没有添加版本号是因为加了spring-boot-starter-parent,可以省略一些常用依赖的版本号)

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

application.properties

### mysql连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mydb2019?serverTimezone=UTC
spring.datasource.username=xxxx
spring.datasource.password=xxxxxxx
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


### thymeleaf模板配置
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

2、创建监听表

监听表要实现的功能很简单,只是记录访问次数。
在这里插入图片描述

3、编写实体类

实体类对应监听表。具体如下:

Listener类:

/*
* ye
* 监听表
* 2020.10.15
*
* */

import javax.persistence.*;

@Entity
@Table(name = "listener")
public class Listener {

    @Id
    private String id;
    private Integer quantity;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    @Override
    public String toString() {
        return "Listener{" +
                "id=" + id +
                ", quantity=" + quantity +
                '}';
    }
}

4、编写业务层接口

业务层实现基本的数据表操作即可

import com.example.demojpa.model.Listener;
import java.util.List;

/*
* ye
* 2020.10.15
* 业务层接口
* */
public interface ListenerService {
    List<Listener> findAll();
    Listener findById(String id);
    Listener save(Listener listener);
    void delete(String id);
}

5、编写业务层接口实现类

实现业务层接口

import com.example.demojpa.model.Listener;
import com.example.demojpa.repository.ListenerRepository;
import com.example.demojpa.service.ListenerService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
/*
 * ye
 * 2020.10.15
 * 业务层接口实现类
 * */

@Service
public class ListenerServiceImpl implements ListenerService {

    @Resource
    private ListenerRepository listenerRepository;

    @Override
    public List<Listener> findAll() {
        return listenerRepository.findAll();
    }

    @Override
    public Listener findById(String id) {
        return listenerRepository.findById(id).orElse(null);
    }

    @Override
    public Listener save(Listener listener) {
        return listenerRepository.save(listener);
    }

    @Override
    public void delete(String id) {
        listenerRepository.deleteById(id);
    }

6、编写监听器

编写监听器,监听请求

import com.example.demojpa.model.Listener;
import com.example.demojpa.service.ListenerService;

import javax.annotation.Resource;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;

/*
* ye
* 2020.10.15
* 监听器
* */

@WebListener
public class PhoneListener implements ServletRequestListener {
    @Resource
    private ListenerService listenerService;

    @Override
    public  void requestDestroyed(ServletRequestEvent servletRequestEvent){
        System.out.println("```````````````````请求listener销毁");
    }
    @Override
    public void requestInitialized(ServletRequestEvent servletRequestEvent){
        System.out.println("```````````````````````````````请求listener创建啊");
        Listener listener = listenerService.findById("1");
        //每次访问数量加1,并保存到数据表
        listener.setQuantity(listener.getQuantity() + 1);
        listenerService.save(listener);
    }


}

7、编写控制器

控制器实现对视图的控制

import com.example.demojpa.model.Listener;
import com.example.demojpa.service.ListenerService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
/*
* ye
* 2020.10.15
* 控制层
* */

@Controller
public class IndexController {
    @Resource
    private ListenerService listenerService;

    @RequestMapping("/count")
    public String count(Model model){
        Listener listener = listenerService.findById("1");
        String msg = "这是第"+listener.getQuantity()+"次访问网站!";
        model.addAttribute("count",msg);
        return "count";
    }
}

8、编写HTML文件,展示内容

count.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<html lang="en">
<head>
    <title>count</title>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
</head>
<body>
<div style="text-align: center">
    <h1 th:text="${count}"></h1>
</div>
</body>
</html>

9、测试

输入访问地址

在这里插入图片描述
点击刷新

在这里插入图片描述

当然,你输入任何 http://localhost:8080/ 的端口它都能够监听的。

测试成功!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值