java文件上传
2021/9/23 20:12:58
本文主要是介绍java文件上传,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
说明:当我们注册时,我们在前端填写表单,表单提交给后端的Servlet,这个Servlet就向我们填写的邮箱发送邮件。
JAR包:
mail-1.4.7.jar
activation-1.1.1.jar
前端代码:
1.提交页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <form action="${pageContext.request.contextPath}/RegisterServlet.do" method="post"> 用户名:<input type="text" name="username"><br/> 密码:<input type="password" name="password"><br/> 邮箱:<input type="text" name="email"><br/> <input type="submit" value="注册"> </form> </body> </html>
2.成功提示
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${message} </body> </html>
3.注册Servlet
<servlet> <servlet-name>RServlet</servlet-name> <servlet-class>com.duzk.servlet.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RServlet</servlet-name> <url-pattern>/RegisterServlet.do</url-pattern> </servlet-mapping>
后端代码:
1.Servlet
package com.duzk.servlet; import com.duzk.pojo.User; import com.duzk.utils.Sendmail; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1、接收用户填写的表单数据 String username = request.getParameter("username"); String password = request.getParameter("password"); String email = request.getParameter("email"); // System.out.println(username+password+email); User user = new User(username, password, email); Sendmail sendmail = new Sendmail(user);//获取子线程对象 new Thread(sendmail).start();//启动子线程 //3、视图跳转 request.setAttribute("message","注册成功!我们已经向您的邮箱发送了邮件,请您及时进行查收。由于网络原因,您收到邮件的时间存在延迟,敬请谅解~"); request.getRequestDispatcher("info.jsp").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
2.多线程工具
package com.duzk.utils; import com.duzk.pojo.User; import com.sun.mail.util.MailSSLSocketFactory; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.security.GeneralSecurityException; import java.util.Properties; //网站3秒原则:用户体验 //多线程实现用户体验:(异步处理) public class Sendmail extends Thread { private String from = "1257338492@qq.com";//我们用来向客户发送邮件的邮箱 private String username = "1257338492@qq.com";//用于登陆SMTP服务器的用户名 private String password = "wvwdybuezdaehibd";//授权码 private User user; public Sendmail(User user) { this.user = user;//用于获取用户邮箱地址 } @Override public void run() { try { Properties prop = new Properties(); prop.setProperty("mail.host", "smtp.qq.com"); //设置QQ邮件服务器 prop.setProperty("mail.transport.protocol", "smtp"); // 邮件发送协议 prop.setProperty("mail.smtp.auth", "true"); // 需要验证用户名密码 // 关于QQ邮箱,还要设置SSL加密,加上以下代码即可 MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); prop.put("mail.smtp.ssl.enable", "true"); prop.put("mail.smtp.ssl.socketFactory", sf); //使用JavaMail发送邮件的5个步骤 //1、创建定义整个应用程序所需的环境信息的 Session 对象 //使用QQ邮箱的时候才需要,其他邮箱不需要这一段代码 Session session = Session.getDefaultInstance(prop, new Authenticator() {//获取和SMTP服务器的连接对象 public PasswordAuthentication getPasswordAuthentication() { //发件人邮件用户名、授权码 return new PasswordAuthentication(username, password); } }); //开启Session的debug模式,这样就可以查看到程序发送Email的运行状态 session.setDebug(true); //2、通过session得到transport对象 Transport ts = session.getTransport();//通过这一次和SMTP服务器的连接对象获取发送邮件的传输对象 //3、使用邮箱的用户名和授权码连上SMTP邮件服务器,即登陆 ts.connect("smtp.qq.com", username, password); //4、创建邮件对象MimeMessage——点击网页上的写信 //创建一个邮件对象 MimeMessage message = new MimeMessage(session); //指明邮件的发件人——在网页上填写发件人 message.setFrom(new InternetAddress(username));//设置发件人 //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发——在网页上填写收件人 message.setRecipient(Message.RecipientType.TO, new InternetAddress(user.getEmail()));//设置收件人 //邮件的标题——在网页上填写邮件标题 message.setSubject("欢迎注册thhh!");//设置邮件主题 //邮件的文本内容——在网页上填写邮件内容 message.setContent("<p><h2>恭喜注册成功!</h2></p>您的用户名为:<h4>"+user.getUsername()+"</h4>请妥善保管您的密码,如有问题请及时联系网站客服,再次欢迎您的加入!!", "text/html;charset=UTF-8");//设置邮件的具体内容 //5、发送邮件——在网页上点击发送按钮 ts.sendMessage(message, message.getAllRecipients()); //6、关闭连接对象,即关闭服务器上的连接资源 ts.close(); } catch (MessagingException e) { e.printStackTrace(); } catch (GeneralSecurityException e) { e.printStackTrace(); } } }
3.实体类
package com.duzk.pojo; import java.io.Serializable; public class User implements Serializable { private String username; private String password; private String email; public User() { } public User(String username, String password, String email) { this.username = username; this.password = password; this.email = email; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + '}'; } }
报错:提示500状态码,缺少JAR包
解答:可以将JAR放在TOMACT的LIB文件夹下,在进行运行。
这篇关于java文件上传的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南
- 2024-09-30Dnd-Kit学习:新手快速入门指南