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.页面在项目中, 使用同步操作, 页面跳转在后台
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/192911.html