博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot4-整合JPA+thymeleaf+email(发送QQ邮箱)
阅读量:3961 次
发布时间:2019-05-24

本文共 9684 字,大约阅读时间需要 32 分钟。

目录

1.项目目录

在这里插入图片描述

2.pom.xml

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.0.3.RELEASE
com.wo
springboot-jpa-thymeleaf-email
0.0.1-SNAPSHOT
springboot-jpa-thymeleaf-email
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-mail
org.springframework.boot
spring-boot-maven-plugin

3.application.yml

server:  port: 8088spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    username: root    password: 123456    url: jdbc:mysql://127.0.0.1:3306/qf?useUnicode=true&characterEncoding=utf8&useSSL=false  jpa:    database: mysql    show-sql: true    generate-ddl: true  mail:    host: smtp.qq.com    username: 自己的邮箱    password: 提供的发送密码    properties:            smtp:              auth: true              starttls:                enable: true                required: true    default-encoding: utf-8

4.pojo

@Data@Entity@Table(name = "admin")public class Admin {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; private String password; private String email;}
@Datapublic class AdminReq {
private String email; private String code; private String name; private String password;}

5.dao

public interface AdminRespository extends JpaRepository
{
}

6service及serviceimpl

List
findAll(); Admin findById(int id); void update(Admin admin); void delete(int id); //发送邮箱 String sendEmail(String mail, HttpServletRequest request); //注册 String regist(AdminReq adminReq,HttpServletRequest request);
@Servicepublic class AdminServiceImpl implements AdminService{
@Autowired AdminRespository adminRespository; //邮箱发送 @Autowired JavaMailSender javaMailSender; //获取配置中的邮箱发送者 @Value("${spring.mail.username}") private String from; @Override public List
findAll() {
return adminRespository.findAll(); } @Override public Admin findById(int id) {
Optional
byId = adminRespository.findById(id); if(byId.isPresent()){
Admin admin = byId.get(); return admin; } return null; } @Override public void update(Admin admin) {
adminRespository.saveAndFlush(admin); } @Override public void delete(int id) {
adminRespository.deleteById(id); } //发送验证码 @Override public String sendEmail(String mail, HttpServletRequest request) {
SimpleMailMessage simpleMailMessage=new SimpleMailMessage(); //发送者 simpleMailMessage.setFrom(from); //接收者 simpleMailMessage.setTo(mail); //主题 simpleMailMessage.setSubject("注册验证"); //正文 int num=(int) ((Math.random() * 9 + 1) * 100000); String code=Integer.toString(num); System.out.println("****************验证码是"+num); simpleMailMessage.setText(code); //发送 javaMailSender.send(simpleMailMessage); //获取session,将验证码存入session HttpSession session=request.getSession(); session.setAttribute(mail,code); return "success"; } //注册 @Override public String regist(AdminReq adminReq, HttpServletRequest request) {
String mail=adminReq.getEmail(); String code=adminReq.getCode(); //冲session获取到发送的验证码进行对比 HttpSession session=request.getSession(); String attribute = (String) session.getAttribute(mail); if (code.equals(attribute)) {
//用户输入的验证码跟我们发的验证码一致 //将数据存到数据库中 Admin admin=new Admin(); //将第一个对象的值复制给第二个对象中 BeanUtils.copyProperties(adminReq,admin); adminRespository.saveAndFlush(admin); return "success"; } return "fail"; }}

7.controller

@Controllerpublic class AdminController {
@Autowired AdminService adminService; @RequestMapping("/") public ModelAndView fingAll(){
List
adminList = adminService.findAll(); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("list",adminList); modelAndView.setViewName("index"); return modelAndView; } @RequestMapping("/findById") public ModelAndView findById(@RequestParam("id") Integer id){
Admin admin = adminService.findById(id); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("admin",admin); modelAndView.setViewName("update"); return modelAndView; } @RequestMapping("/insertAndUpdate") public String insertAndUpdate(Admin admin){
adminService.update(admin); return "redirect:/"; } @RequestMapping("/goUpdate") public String goUpdate(Model model){
model.addAttribute("admin",new Admin()); return "update"; } @RequestMapping("/deleteById") public String deleteById(@RequestParam("id") int id){
adminService.delete(id); return "redirect:/"; } //发送邮箱 @RequestMapping("/sendMail") @ResponseBody public String sendMail(@RequestParam("mail") String mail, HttpServletRequest request){
return adminService.sendEmail(mail,request); } //注册页面 @RequestMapping("/go") public String goRegist(){
return "regist"; } //注册 @RequestMapping("/regist") public String regist(AdminReq adminReq,HttpServletRequest request){
String regist = adminService.regist(adminReq, request); if(regist.equals("success")){
return "success"; } return "redirect:/regist"; }}

8.邮箱测试(简单邮箱,HTML邮箱,带文件邮箱)

@RunWith(SpringRunner.class)@SpringBootTestpublic class mailTest {
@Autowired JavaMailSender javaMailSender; //获取配置中的邮箱发送者 @Value("${spring.mail.username}") private String from; @Test public void testSend(){
//声明 SimpleMailMessage simpleMailMessage=new SimpleMailMessage(); //发送者 simpleMailMessage.setFrom(from); //接收者 simpleMailMessage.setTo("******@qq.com"); //主题 simpleMailMessage.setSubject("注册验证"); //正文 simpleMailMessage.setText("123456"); //发送 javaMailSender.send(simpleMailMessage); } @Test public void testHtmlSend() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //声明simplemailMessage MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); //发送者 mimeMessageHelper.setFrom(from); //接收者 mimeMessageHelper.setTo("*******@qq.com"); //内容主体 StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("这是html邮件"); mimeMessageHelper.setText(stringBuffer.toString(),true); //主题 mimeMessageHelper.setSubject("测试"); //发送 javaMailSender.send(mimeMessage); } @Test public void testFileSend() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage(); //声明simplemailMessage MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); //发送者 mimeMessageHelper.setFrom(from); //接收者 mimeMessageHelper.setTo("*****@qq.com"); //内容主体 StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("这是html邮件"); mimeMessageHelper.setText(stringBuffer.toString(),true); //放置附件 FileSystemResource fileSystemResource = new FileSystemResource(new File("E://1.jpg")); mimeMessageHelper.addAttachment("lxl.jpg",fileSystemResource); //主题 mimeMessageHelper.setSubject("测试"); //发送 javaMailSender.send(mimeMessage); }}

9.页面(thymeleaf静态化模板)

9.1index.xml

    
Title

thymeleaf的首页面

增加
序号 ID name password email 操作
修改| |删除

9.2update.html

    
name:
password:
email:

9.3注册页面

    
Title
用户邮箱:
验证码:
姓名:
密码:

转载地址:http://ccezi.baihongyu.com/

你可能感兴趣的文章
从入门到深入Fiddler (一)
查看>>
从入门到深入Fiddler (二)
查看>>
Win7+php7+apache2.4
查看>>
QTP基本使用——associate actions
查看>>
charAt()方法和charCodeAt()方法—— 从字符串中选取一个字符.
查看>>
(1)Pascal 程序结构和基本语句
查看>>
LoadRunner之——脚本分析
查看>>
Advanced searching - fields reference
查看>>
Advanced searching - operators reference
查看>>
LoadRunner之——Java vuser
查看>>
LoadRunner之——场景创建、设置、运行
查看>>
QTP基本使用——Recovery Scenarios
查看>>
Ruby 的优缺点
查看>>
Ruby 教程(一)
查看>>
Ruby 教程(二)
查看>>
Android——简介
查看>>
Ruby 教程(三)
查看>>
Ruby 教程(四)
查看>>
GHOST后只剩下一个分区后的解决方法
查看>>
局部变量、全局变量、对象变量、类变量
查看>>