SpringBoot-03-三种开发方式

0.前言

常用的三种开发方式

第一种:

  • 页面在项目中, 使用异步操作, 页面跳转在前端

第二种:

  • 页面不在项目中, 使用异步操作, 页面跳转在前端

第三种:

  • 页面在项目中, 使用同步操作, 页面跳转在后台

1.页面在项目中, 使用异步操作, 页面跳转在前端

1.1.页面跳转到指定页面方案(默认是index.html)

1.1.1.配置文件

1.1.2.写Controller重定向

1.1.3.修改配置文件

1.2.如何发送邮件

* SSM, 邮箱如何发送
* 1.注册邮箱
* 2.登录设置smtp pop3服务器
* 3.获取授权码
* 4.添加Spring-context-support+javax-email
* 5.向容器中注入一个JavaMailSender内容
*
* SpringBoot, 邮箱如何发送
* 1.添加邮箱起步依赖
* 2.在配置文件中配置用户名,授权码,smtp服务器地址

 

@RestController
public class PageJumpController {
    @Autowired
    private JavaMailSender javaMailSender;

    @GetMapping("getEmailCode")
    public String getEmailCode(String email) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<xxxxxxxx@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random()*(9999-1000+1)+1000);
        simpleMailMessage.setText("你的验证码为: "+code);
        javaMailSender.send(simpleMailMessage);
        return "ok";
    }
}

1.3.如何配置Redis

* SSM,配置
* 1.导包
*      1.SpringDataRedis
*      2.Jedis
*      3.导入slf4j
* 2.配置
*      1.配置Redis连接工厂
*      2.配置RedisTemplate或者String RedisTemplate
* SpringBoot,配置
*      1.查询起步依赖
*      2.@Autowired
*        private StringRedisTemplate stringRedisTemplate;
*      3.stringRedisTemplate.opsForValue().set(email,code+"",120, TimeUnit.MINUTES);

package com.sm.cn.webController;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

@RestController
public class PageJumpController {
    /*发送邮件*/
    @Autowired
    private JavaMailSender javaMailSender;
    /*配置Redis*/
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @GetMapping("getEmailCode")
    public int getEmailCode(String email) {
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<XXXXXX@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random() * (9999 - 1000 + 1) + 1000);
        simpleMailMessage.setText("你的验证码为: " + code);
        /*存入Redis,参数1.Key;2.value;3.多少时间有效;4.时间单位*/
        /*kye前面加"code:"+,可获得层级效果*/
        stringRedisTemplate.opsForValue().set("code:"+email,code+"",120, TimeUnit.MINUTES);
        javaMailSender.send(simpleMailMessage);
        return code;
    }


}

Redis中的层级效果 

1.3.如何配置异步任务 解决耗时操作

异步任务:
*  SSM,可以使用Spring的异步任务:
*      1.开启 @EnableAsync
*      2.直接使用 @Async
*      注意:在SSM中,默认没有连接池,如果想要有连接池,需要向容器中添加Spring的连接池
*
* SpringBoot:
*      1.默认有8个连接池

修改线程池大小 ,配置文件方式

修改线程池大小 ,主配置文件@Bean方式

@Component
public class EmailService {
    /*发送邮件*/
    @Autowired
    private JavaMailSender javaMailSender;
    /*配置Redis*/
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Async
    public void SendMail(String email){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom("Test验证码<h15@163.com>");
        simpleMailMessage.setTo(email);
        simpleMailMessage.setSubject("邮箱验证码");
        int code = (int) (Math.random() * (9999 - 1000 + 1) + 1000);
        simpleMailMessage.setText("你的验证码为: " + code);
        /*存入Redis,参数1.Key;2.value;3.多少时间有效;4.时间单位*/
        /*kye前面加"code:"+,可获得层级效果*/
        stringRedisTemplate.opsForValue().set("code:"+email,code+"",120, TimeUnit.MINUTES);
        javaMailSender.send(simpleMailMessage);
    }
}

异步任务不能再主类中使用, 不能有返回值, 所以进行抽取

2.页面不在项目中, 使用异步操作, 页面跳转在前端

2.1.前后端分离解决跨域问题

2.1.1.CrossConfig.java

/**
 * 解决跨域问题
 */
@Configuration
public class CrossConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET","HEAD","POST","PUT","DELETE","OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

2.1.2.MySpringBootController.java

//@CrossOrigin注解,解决跨域问题
@CrossOrigin(origins = {"http://localhost:8080", "null"})
@SpringBootApplication
@MapperScan(basePackages = "com.sm.cn.mapper")
@EnableTransactionManagement//开启事务
@EnableAsync
public class MySpringBootController {
    public static void main(String[] args) {
        SpringApplication.run(MySpringBootController.class);
    }
}

 3.页面在项目中, 使用同步操作, 页面跳转在后台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值