Web 服务器的网页版邮箱客户端系统

Web 服务器的网页版邮箱客户端系统 一, 项目选题 基于实现的一个 Web 服务器的网页版邮箱客户端系统 项目中的服务器为自己实现的 Web 服务器

本文包含相关资料包-----> 点击直达获取<-------

Web 服务器的网页版邮箱客户端系统

一、 项目选题

基于实现的一个 Web 服务器的网页版邮箱客户端系统

项目中的服务器为自己实现的 Web 服务器,对 http 访问进行响应

项目中的邮箱客户端是基于 socket 进行 smtp 和 pop3 邮箱连接的客户端实现

该项目将 Web 服务器和邮件客户端两个项目选题相结合

程序功能:

1.Web 服务器功能对响应的 HTTP 资源的请求和对于邮件 API 的访问给予响应

2.邮件能够实现查询邮件,查看邮件详细信息,删除邮件,发送邮件,邮件返回分页等功能

3,此项目在 163 邮箱和 QQ 邮箱测试成功

二、 开发环境和工具

系统环境 Windows10 1903
开发工具 Intellij Idea Ultimate 2019、WebStorm、Chrome
JDK 版本 12.0.2(如果在 jdk1.8 的情况下报错,请按照错误修改)

三、 项目使用说明手册

  1. 使用 idea 加载并打开工程
  2. 在 serverConfig.properties 文件中进行相关的配置文件的配置
  3. 浏览器输入 http://127.0.0.1/index.html 进入主页面(如果未修改配置文件信息),输入不存在的资源目录则进入错误页面
  4. 浏览器输入 http://127.0.0.1/mailAgentWeb/index.html 进入邮箱客户端 Web 主页面
  5. 在该页面可以实现邮件查询、邮件删除、邮件详细信息查看等功能,切换 tab 可以使用邮件发送功能

四、 系统结构

1. 项目目录结构

Src 目录下为 webserver 的实现,webServer 为 Web 服务器主程序,监听 8080 端口对 http 请求进行响应,webThread 为连接线程,当监听到 socket 连接时,创建一个 webThread 进行响应;WebServce 为一个抽象类,是所有的可以部署在这个 Web 服务器上的服务的主程序的父类,通过动态加载,将服务加载到服务器上进行运行;

Webpage 目录下的 index.html 是服务器的默认首页,服务器启动之后,访问 http://127.0.0.1/index.html 即可访问,mailAgentWeb 文件夹下是基于 Web 的邮件客户端的前端页面,主要使用 bootstrap 和 jQuery 进行编写,error.html 是访问到其他页面的错误页面的提示页面;以 Mail 开头的三个类是与邮件客户端的后端服务相关的类,负责对请求的响应作出回应,主要使用了 stmp 协议和 pop3 协议。

2. 系统执行过程

当 Web 服务器模块启动时,首先会寻找项目根目录文件夹下面的 serverConfig.properties 文件,将文件中对于服务器的相关的的配置项加载到一个 map 中,,当我们在进行相关的配置值的使用时,首先判断是否在配置文件已经覆盖,然后在进行默认值的加载配置。然后会遍历 webpage 目录中结尾为 service 的类,并通过 Class.forName()进行加载之后放到服务的列表中,然后通过循环调用所有的类的 start()函数启动服务线程,然后整个服务器启动完成。不仅可以实现对于 8080 端口的访问请求,而且可以根据 webPage 中的 Service 类中自定义的内容添加对应的服务模块进行服务的部署工作。

以 mailAgentService 为例,在服务器运行的时候该服务会被分配一个线程而启动,用于响应关于邮件方面的 http 请求,用户通过 Web 服务器的 http://127.0.0.1/mailAgentService/index.html 链接进入到邮箱服务的前端界面中,该前端界面是由自己实现的 Web 服务器进行驱动的,然后用户可以在前端界面上进行邮件的发送和查看操作,并将通过前端进行响应。

五、 系统内核心实现

1. 模块动态加载

try { Class tempClass = Class.forName(item); service = (WebService) tempClass.newInstance(); System.out.println("[万恶之原]-服务----" + service.getClass().getName() + "----启动完毕!"); service.start(); } catch (Exception e) { System.out.println("[万恶之原]-加载----" + item + "----启动器时出现问题!"); }

2. 对 webpage 下的服务进行扫描

private static List<String> getFiles(String path) { List<String> list = new ArrayList<>(); File file = new File(path); String name = null; File[] files = file.listFiles(); for (int i = 0; i < Objects.requireNonNull(files).length; i++) { name = files[i].getPath().split("\\\\")[files[i].getPath().split("\\\\").length - 1]; if (name.split("[.]")[name.split("[.]").length - 1].equals("java")){ list.add(name.split("[.]")[0]); } } return list; }

3. 通过 retr 命令获取邮件,并且通过 JSON 格式返回到 Web 前端

jsonObject = new JSONObject(); List<Map<String,String>> mailList = new ArrayList<>(); int count = 0; try { dos.writeBytes("stat" + CRLF); count = count(); for (int i = 1; i <= count; i++) { Map<String,String> mailInfoList = new HashMap<>(); dos.writeBytes("retr " + i + CRLF); while (true) { String response = dis.readLine(); response = MimeUtility.decodeText(response); if(response.contains(":") && response.split(":").length > 1){ mailInfoList.put(response.split(":")[0],response.split(":")[1]); }else if (!response.contains(":") && !response.toLowerCase().equals(".") && !response.equals("")){ mailInfoList.put("Content",response); } if (response.toLowerCase().equals(".")) { break; } } mailList.add(mailInfoList); } jsonObject.put("data",mailList); return jsonObject.toString(); } catch (IOException e) { e.printStackTrace(); }

4. 配置文件的读取

class ReadConfigUtils { static Map<String,String> configList = new HashMap<>(); private static String ROOT = System.getProperty("user.dir"); static Map<String,String> getConfigList(String fileName){ if (fileName == null){ fileName = "serverConfig.properties"; } String configFilePath = ROOT + "/" + fileName; try { InputStream inputStream = new FileInputStream(new File(configFilePath)); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String line = null; while((line = br.readLine()) != null){ if(line.contains("=")) configList.put(line.split("=")[0],line.split("=")[1]); } return configList; } catch (IOException e) { e.printStackTrace(); } return configList; } }

六、 项目运行截图

1. 首页

2. 邮箱邮件查询

3. 邮件发送

4. 邮件详情

5. 配置文件设置

6. Web 服务器错误页

7. Web 服务器主页

8. 两个不同的邮箱进行测试

QQ 邮箱测试通过:

163 邮箱测试通过:

参考文献

  • 网络流量统计分析系统(吉林大学·石景龙)
  • Webframe应用服务器中Web容器的设计与实现(扬州大学·张锋)
  • 齐齐哈尔合众商务科技有限公司门户网站设计(吉林大学·孟云飞)
  • 思科亿网网上交易实现与安全研究(吉林大学·周威)
  • 统一用户管理系统开发与设计(南昌大学·郭妍)
  • 基于Web Service的旅游管理系统的设计与实现(北京邮电大学·李琳)
  • 中小企业web邮件系统的设计与实现(电子科技大学·马谦)
  • 基于.NET框架的企业应用集成研究和实现(浙江大学·蒋元星)
  • 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
  • 基于J2EE的网站内容管理系统的研究(中国地质大学(北京)·焦兴伟)
  • 基于SSH框架的博客用户分享平台的设计与实现(河北工业大学·刘磊)
  • 基于多Agent的B/S架构网络管理系统(北京邮电大学·蒋定孚)
  • 基于J2EE的网站内容管理系统的研究(中国地质大学(北京)·焦兴伟)
  • 基于Web服务的客户智能研究(浙江工商大学·王可)
  • 基于J2EE的网站内容管理系统的研究(中国地质大学(北京)·焦兴伟)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕设小屋 ,原文地址:https://bishedaima.com/yuanma/35847.html

相关推荐

发表回复

登录后才能评论