基于SSM的邮箱客户端的设计与实现

news2024/11/27 1:00:26

目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1 选题及意义 1
1.2 邮箱发展现状 1
1.2.1开源邮件系统 2
1.2.2国外商业邮件系统 2
1.2.3国内商业邮件系统 2
1.3研究内容 4
第2章 相关技术的理论概述 5
2.1 JSP+Servlet技术优势 5
2.2Mysql数据库的介绍 6
2.3 tomcat服务器介绍 6
2.4 ajax和json 7
2.5 spring+springmvc+mybatis框架的优势分析 8
2.6 B/S架构 9
第3章 需求分析与概要设计 10
3.1 需求分析 10
3.2 概要设计 10
3.2.1 邮箱客户端基本功能 11
3.2.2 电子邮件传输过程 11
3.2.3 邮箱客户端设计概要 12
第4章 邮箱客户端的设计和实现 14
4.1 详细设计 14
4.1.1 JDK的安装 14
4.1.2 环境变量配置 17
4.1.3 Eclipse Mars的安装配置 20
4.1.4 详细设计说明 24
4.2 安装程序的设计和制作 46
4.2.1 应用程序的设计和制作 46
4.2.2 安装应用程序 50
结 论 56
致 谢 57
参考文献 58
第3章 需求分析与概要设计
3.1 需求分析
实时通信的电话有两个严重缺点:第一,电话通信的主叫和被叫双方必须同时在场;第二,一些不是十分紧迫的电话也常常不必要地打断人们的工作或休息。
电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件将邮件发送到ISP的邮件服务器,并放在其中的收信人邮箱(mail box)中,收信人可随时上网到ISP的邮件服务器进行读取。上述的性质相当于利用因特网为用户建立了存放邮件的信箱,因此e-mail有时也称为“电子信箱”。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。据有的公司报道,使用电子邮件后可提高劳动生产率30%以上。现在电子邮件不仅可传递文字信息,而且还可附上声音和图像。
本设计是邮箱客户端的设计与实现,是一个实现电子邮件收、发功能的应用程序,可直接安装于PC机上执行,无需进行任何配置,只要在相应位置输入用户名和密码,即可享受电子通信的便捷,功能与OutLook Express、FoxMail等专业邮箱客户端相仿。之所以使用Java语言开发,是因为其跨平台性及面向对象设计等优点,便于开发及使用。
3.2 概要设计
电子邮件的主要组成构件如图3-1所示:
在这里插入图片描述
图3-1 电子邮件主要组成构件
用户代理就是用户与电子邮件系统的接口,大多情况下就是在用户PC机中运行的程序,也就是本设计的邮箱客户端。
3.2.1 邮箱客户端基本功能
(1) 撰写,给用户提供很方便地编辑信件的环境。例如,应让用户能共创建便于使用的通讯录(有常用的人名和地址)。回信时不仅能方便地从来信中提取出对方地址,并自动地将此地址写入到邮件中合适的位置,而且还能方便地对来信提出的问题进行答复(系统自动将来信复制一份在用户撰写回信的窗口中,因而用户不需要再输入来信中的问题)
(2)显示,能方便地在计算机屏幕上显示出来信(包括来信附上的声音和图像)。
(3)处理,处理包括发送邮件和接收邮件。收信人应能根据情况按不同方式对来信进行处理。例如,阅读后删除、存盘、打印、转发等,以及自建目录对来信进行分类保存。有时还可在读取信件之前先查看一下邮件的发信人和长度,对于不愿收的信件可直接在邮箱中删除。
3.2.2 电子邮件传输过程
邮件服务器是电子邮件系统的核心构件,因特网上所有的ISP都有邮件服务器。邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户服务器方式工作。邮件服务器需要使用两个不同的协议。一个协议用于发送邮件,即SMTP协议,而另一个协议用于接收邮件,即邮局协议POP(Post Office Protocol)。
下面是一封电子邮件的发送和接收工程(结合图5-1)。
(1)发信人调用用户代理编辑要发送的邮件,用户代理用SMTP将邮件传送给发送端服务器;
(2)发送端邮件服务器把邮件收入邮件缓存队列中,等待发送;
(3)运行在发送端邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起TCP连接的建立;
(4)当TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件,如果有多个邮件在邮件缓存中,则SMTP客户一一把它们发送到远程的SMTP服务器,当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接;
(5)运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收信人的用户邮箱中,等待收信人在他方便时进行读取;
(6)收信人在打算收信时,调用用户代理,使用POP3 (或IMAP)协议把自己的邮件从接收端邮件服务器的用户邮件箱中取回(如果邮箱中有来信的话)。

package com.service.admin;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.Model;
import com.dao.AdminDao;
import com.po.Auser;
@Service("adminService")
@Transactional
public class AdminServiceImpl implements AdminService{
	@Autowired
	private AdminDao adminDao;
	@Override
	public String login(Auser auser, Model model, HttpSession session) {
		if(adminDao.login(auser) != null && adminDao.login(auser).size() > 0) {
			session.setAttribute("auser", auser);
			return "admin/main";
		}
		model.addAttribute("msg", "用户名或密码错误;或被锁定!");
		return "admin/login";
	}

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mmdetection3d nuScenes (持续更新)

Mmdetection3d集成了大量3D深度学习算法,其中很大一部分可以在智能驾驶nuScenes数据集上运行。在算法应用nuScenes数据之前,mmdetection3d提供了相应的预处理程序。关于nuScenes的详细介绍请参考本博客之前的文章nuScenes数据集详细介绍_Coding的叶子的博…

react+node.js+mysql 前后端分离项目 宝塔面板 部署到腾讯云服务器

目录一. 前端项目部署1.登录宝塔面板并安装环境依赖2. 打包上传,部署前端项目3.端口放行二. 后端项目部署1.上传后端项目2. PM2中添加项目三. mysql1.宝塔面板 添加数据库2.导入sql文件一. 前端项目部署 1.登录宝塔面板并安装环境依赖 命令行第一行输入刚才复制的内…

你是否还记得有一款游戏叫做“魔塔”?

目录 前言 正文 游戏介绍: 游戏开发制作流程 1.收集素材 2.创建攻击函数 2.1 定义两个对象(主角和怪物) 2.2 函数输出为【0】表示打不过,胜利输出受损生命值,设置 cancel 可以撤销本次战斗即回到之前状态 2.…

pinia安装使用

pinia中文文档 目录 一.pinia简介 二. pinia安装 三.pinia使用 1.main.js中创建pinia实例 2.创建store状态库 定义state state的读写 state响应式解构 state的修改 Getters的使用 Pinia中Store的互相调用 一.pinia简介 Pinia是vue生态里Vuex的替代者,一个…

MySQL笔记【面试】

MySQL笔记【面试】前言推荐MySQL笔记最后前言 以下内容源自A minor 仅供学习交流使用 推荐 MySQL MySQL笔记 【MySQL】基础使用(一):支持的数据类型 【MySQL】基础使用(二):常用 SQL 语句大全 【MyS…

推荐系统-概述:基本架构

提纲 过去八九年在广告、生活服务、电商等领域从事大数据及推荐系统相关工作,近来打算对过去的工作做一个系统性的梳理。一方面帮自己查缺补漏、进行更深入的学习;另一方面也希望能通过博客结交同好,增进交流。 这一博客系列以介绍推荐系统为…

Arduino开发实例-旋转编码器RGB-LED调光

旋转编码器RGB-LED调光 在本文中,将使用 Arduino 和旋转编码器进行 RGB LED 颜色控制。 我们将旋转旋转编码器来分配值。 红色、绿色和蓝色将合并以显示基于该值的全新颜色。 在这里,使用具有红色、绿色和蓝色的单 RGB 颜色 LED,也可以使用长 RGB LED 灯条。 此外,还可以使…

「Redis」02 Redis中的数据类型(含Redis6.0:Bitmaps、HyperLogLog、Geospatial)

笔记整理自【尚硅谷】Redis 6 入门到精通 超详细 教程 Redis——Redis中的数据类型 0. 键 (key) 操作 keys *:查看当前库所有 keyexists key:判断某个 key 是否存在type key:查看你的 key 是什么类型del key :删除指定的 key 数…

[附源码]Python计算机毕业设计Django工程施工多层级管理架构

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

VMware的安装、配置及其Linux的安装、简单配置

安装VMware 1、找到下载好的安装包,双击 2、点击下一步 3、勾选 我接受许可协议中的条款 4、选择合适的路径安装 5、取消勾选项,如图所示 6、下一步 7、安装 8、等待(等待半分钟左右) 8、点击许可证 9、复制下面其中的密码 key…

centos7磁盘扩容(虚拟机Mac m1)

为了安装HDP3.1.4(Ambari2.7.4)弄了三台虚拟机,但安装完mysql和操作完前期准备后,上传ambari,HDP,HDP-UTILS安装包时,磁盘居然不够了,又是一顿折腾...... 第一种在原来磁盘上扩大存储 1.虚拟机磁盘大小设…

借助云的力量,重塑企业的现在和未来——亚马逊云科技re:Invent

在2022亚马逊云科技re:Invent全球大会的第二天,亚马逊云科技首席执行官Adam Selipsky发表了“如何借助云的力量,在未知领域抓住机遇并茁壮成长”的主题演讲。在两个小时的演讲中,Adam重点围绕数据、安全、计算性能和行业应用等4个主题发布了多…

Python基础——分支与循环

Python基础——分支与循环条件表达式if-else1.运算结果2.语法3.举例1.用分支语句实现求绝对值2.多分枝语句4.常用的比较符号5.常用的条件符合符号注意:条件表达式if-else 1.运算结果 布尔型 ture1 false0 2.语法 python 用缩进区分功能块所以缩进是不可一丢掉的…

C++ bool类型变量cin输入true,输出结果却是false?是因为cin输入的true会被当成字符串,所以bool变量原值不变吗?

首先,大家可能看过其他文章,他们给出的观点是这样的: 在C中bool类型的变量初始值为false,所以如果你不初始化,那么对变量使用cin>>赋值true和false的时候,编译器会把true和false当成是字符串&#x…

一键式 new 多个相同的实例(通过界面按钮 来控制 应用的创建、修改、删除,使用Docker Compose 编排应用所需环境)

一、简单介绍 需求:通过界面按钮 来控制 实例的创建、修改、删除。 由于Web应用采用多服务方式开发,每个服务都可以单独访问(单独占用一个端口)。以前部署服务器,采用的Nginx监听端口 转发。但是这样就会在new整个应…

25K 入职腾讯的那天,我哭了...

悲催的经历: 先说一下自己的个人情况,计算机专业,17 年本科毕业,一毕业就进入了“阿里”测试 岗(进去才知道是接了个阿里外包项目,可是刚毕业谁知道什么外包不外包的)。 更悲催的是:刚入职因为家里出现一…

pcl中MomentOfInertiaEstimation解析与实例

pcl中features模块又基于惯性矩和偏心率的描述子,也可以求取点云的AABB和OBB包围盒,在计算的过程中法线一些问题,特此记录。 针对惯性矩和偏心率这两个数据的应用场景还不明确,因此暂时不做讨论,主要讨论求取OBB时的代…

天宇优配|GDR海外发行热情高 资本市场互联互通提速

圆桌评论:“对话交易所——上海,为中欧互联互通提速” “2022上海全球资产管理高峰论坛”11月29日在上海举办。在题为“对话交易所——上海,为中欧互联互通提速”的圆桌评论环节,来自全球各大证券交易所、证券公司、上市公司的多…

python学习笔记(12)---(内置模块)

目录 第十章 内置模块 1.math模块 2.random模块 3.os模块和os.path模块 4.sys模块 5.UUID模块 6.时间日期模块 7.加密模块hashlib:接受传入内容,计算后得到hash值 第十章 内置模块 1.math模块 (1)查看方法:…

BERT-of-Theseus

最近了解到一种称为"BERT-of-Theseus"的BERT模型压缩方法,源自论文《BERT-of-Theseus: Compressing BERT by Progressive Module Replacing》。这是一种以"可替换性"为出发点所构建的模型压缩方案,相比常规的剪枝、蒸馏等手段&#…