restful风格请求

一、REST

全称是: Resource Representational State Transfer。

通俗来讲就是:资源在网络中以某种表现形式进行状态转移。

是一种互联网应用程序的API理念:URL定位资源

rest应该具备以下条件:

1、使用客户/服务器模型(简称C/S结构,是一种网络架构,它把客户端 (Client) 与服务器(Server) 区分开来。 每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。)

例如前后端分离,页面和服务不在同一服务器上运行。

2、层次化的系统

例如一个父系统下有多个子模块,每个模块都是独立的服务。

3、无状态

服务端并不会保存有关客户的任何状态,也就是说要服务后端服务,就要带token过去。

4、可缓存

例如服务端通过token缓存已登录过的用户信息,客户端请求会带一个token过来,后台服务通过带过来的token在缓存中取出用户信息,提高效率。

5、统一的接口

例如,一个项目的所有模块都整合到一起,all-in-one,打成一个包,多个服务,整合到一个端口下。

二、Mybatis和Druid配置

①application.yml文件

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/hahuhu?serverTimezone=GMT&useSSL=false&characterEncoding=UTF-8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

    #Druid的参数配置
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
    #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

  thymeleaf:
    cache: false

  #开启hiddenmethod支持 put/delete请求
  mvc:
    hiddenmethod:
      filter:
        enabled: true

mybatis:
  mapper-locations: classpath:mybatis/mapper/*.xml
  config-location: classpath:mybatis/mybatis-config.xml

②添加config.DruidConfig.java类

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid(){
        return new DruidDataSource();
    }

    //配置druid监控中心
    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        Map<String,String> initParams = new HashMap<>();
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","admin");
        initParams.put("allow","");//默认允许所有人
        //initParams.put("tianma","192.168.3.13");//指定用户名+ip
        bean.setInitParameters(initParams);
        return bean;
    }

    //过滤器
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map<String,String> initParams = new HashMap<>();
        initParams.put("exclusions","*.js,*.css,/druid/*");
        bean.setInitParameters(initParams);
        bean.setUrlPatterns(Arrays.asList("/*"));
        return bean;
    }

}

③添加config.MybatisConfig.java(可以选择mybatis-config.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/><!--标准日志输出-->
        <setting name="mapUnderscoreToCamelCase" value="true"/><!--驼峰命名-->
    </settings>
    <typeAliases>
        <package name="com.dfrz.pojo"/><!--别名扩展-->
    </typeAliases>
</configuration>

④test类中检测数据库连接

三、创建Mapper、Mapper.xml、Controller进行测试

四、导入静态资源

五、配置访问首页

①配置MvcConfig

@Configuration
public class MvcConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        //默认访问login.html
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login.html").setViewName("login");
        //登录成功,重定向到index.xml,放置重复拉交
        registry.addViewController("/index.html").setViewName("index");
    }

    //拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //先设置全部拦截,在选择不包含的部分
        registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**")
                .excludePathPatterns("/login.html", "/", "/user/login", "/css/**", "/images/**", "/js/**", "/error");
    }
}

②配置登录拦截器LoginInterceptor

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("user");
        if(user==null){
            //未登录
            request.setAttribute("msg", "请先登录");
            request.getRequestDispatcher("/login/html").forward(request, response);
            return false;
        }else {
            return true;
        }
    }
}

小技巧

在application.properties中添加

#日志
logging.level.com.dfrz.mapper=debug
#禁用缓存模板
spring.thymeleaf.cache=false

或者在application.yml中添加

 thymeleaf:
    cache: false

六、controller的创建以及login.html文件编写

CRUD满足Rest风格

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早起不洗头

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

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

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

打赏作者

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

抵扣说明:

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

余额充值