javaweb邮件学习(五篇范文)[修改版]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一篇:java web邮件学习
commons-fileupload-1.1.1.jar 上传文件总结:
1、验证是否要处理的是上传文件
ServletFileUpload.isMultipartContent(request)
2、创建DiskFileItemFactory 对象并对其初始化设置
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(20 * 1024);
factory.setRepository(factory.getRepository());
3、创建ServletFileUpload 对象并设置其编码方式
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("gbk");
4、开始获取上传文件的集合:
formlists = upload.parseRequest(request);
5、设置上传文件允许的大小
int size = 2 * 1024 * 1024;
6、循环遍历formlists集合来根据其元素的类型(普通表单域还是文件域)进行赋值还是上传功能Iterator iter = formlists.iterator();
while (iter.hasNext()) {
FileItem formitem = (FileItem) iter.next();
7、是文件域则执行上传:
具体做法:(1)、获取文件路径全名:String name = formitem.getName();
(2)、判断文件名后缀是否符合要求:!name.endsWith("mp3")
(3)、判断文件大小是否符合要求formitem.getSize() > size
If/else(4)、都符合要求则上传:
第一步:判断文件的名称不能为空(formitem.getName())、大小不能为0
(formitem.getSize()),如果不符合要求则continue执行下一循环
第二步:获取文件的单纯文件名称:name.substring(stIndexOf("\\")
+ 1, name.length());
第三步:设置保存到的服务器地址:fileDir ("file/") + "\\" + 单纯名称;File saveFile = new File(服务器地址);
第四步:上传:formitem.write(saveFile);
、是普通表单域则将表单项的值赋值给相关对象变量,如JavaBean(每一次循环将该次对应的表单项的值付
给适当的变量对象)
String formname = formitem.getFieldName(); 获取普通表单项的名称
String con = formitem.getString("gbk");
用formname.equals(““)来判断
下载文件具体方法:
1、获取服务器下载地址并将此地址字符串进行编码:
String path=request.getParameter("path");
2、创建下载目录:
File file = new File(path);获取普通表单项的值并编码path=new String(path.getBytes("iso-8859-1"));
3、创建文件字节输入流
InputStream in = new FileInputStream(file);
4、创建输出流对象
OutputStream os = response.getOutputStream();
5、设置该输出流的应大头、编码等配置
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(file.getName().getBytes("gbk"),"iso-8859-1"));
response.addHeader("Content-Length", file.length() + ""); response.setCharacterEncoding("gbk");
6、开始下载:
int data = 0;
while ((data = in.read()) != -1)
{ os.write(data); }
7、关闭输入输出流
os.close();
in.close();
邮件接收的方法:
DAO:
1、创建邮件接收类:Store
思路:创建Properties类并添加属性->创建Session对象->创建store对象并连接到服务器和编写关闭方法
2、获取全部已读邮件的名称集合的方法返回String
3、获取全部已读或未读邮件的内容的方法返回List(包含邮件信息和附件状态,但不包含具体附件内容) 思路:获取Store对象->获取POP3Folder对象->打开POP3Folder邮件夹->创建FetchProfile预提取对象
并对其添加两个常用属性->定义Message[]对象数组并设为null->获取全部已读邮件的uid字符串->若字符串不为空则->转换为数组并进行排序->根据要求的已读或者未读条件来获取全部已读或未读邮件信息给Message[] (folder.search)->后退三步-若字符串为空则->获取全部未读邮件信息Message[]---开始提取上述邮件数组中每一个邮件的详细信息->循环遍历Message[]数组->定义MimeMessage对象并赋值为数组元素->获取邮件ID、发件人、邮件时间->根据编码类型获取邮件主题->由自定义方法获取此邮件的附件对象
(String[])->message[i].getFlags().getSystemFlags().toString();->如果判断返回的邮件有附件,则获取附件设置为1,否则设置为0(来控制页面中的附件图标的显示)->将此邮件信息对象添加到List中。

4、向数据库中添加已读邮件的标记的方法:iduid address
5、获取指定邮件中附件的方法:此方法中重点是对邮件内容的编码处理,故这里重点介绍主要功能
语法:思路:(1)定义该邮件名称对应的所有附件连接字符串为超链接(附件之间用空格隔开)(String,由多个”附件序号=&附件名称=&邮件序号”组成),定义邮件名称字符串(已知条件)
(2) Multipart multipart = (Multipart) part.getContent();得到该邮件所有的内容集合,然后对其遍历以获取
每一个multipart中每一个BodyPart->判断此BodyPart是否为附件,若是附件则获取该附件的名称并添加到(1)中的连接字符串中,连接字符串中附件序号为遍历变量j
最后:int counts = multipart.getCount();
BodyPart对象的个数//返回MimeMultipart对象中保存的//关闭流
response.setContentType("application/octet-stream");
for (int i = 0; i < counts; i++) {} getMailAttach(multipart.getBodyPart(i), emailv);
并返回String[] obj = { 邮件主题内容, fileName1 };
6、对输入的UTF7编码的内容进行转码的方法
Servlet:
下载附件servlet:
思路:设置response.setContentType("text/html;charset=GBK")、
request.setCharacterEncoding("GBK")->创建HttpSession对象->创建ServletOutputStream对象->获取页面传递变量:附件序号、附件名称;获取session变量"message"->将附件名称进行编码处理:filename=new
String(filename.getBytes(),"ISO-8859-1")->response.setHeader("Content-Disposition","attachment;filename= "+filename)->由”message”获取Multipart对象->由Multipart对象获取BodyPart对象->由BodyPart对象获取InputStream对象->开始下载:
int c=0;
while((c=is.read())!=-1){out.write(c);}
收取邮件servlet(邮件的全部具体信息):
1、邮箱登陆的验证方法:
思路:获取表单传递值的host username pwd->用DAO(1)中的方法进行用户验证如果正确->创建HttpSession对象->用session.setAttribute的方法保存登陆的用户信息(以上三个)->
store.close();
2、获取当前分页页面中已读或未读的全部邮件的集合(包含邮件信息和附件状态,但不包含具体附件内容) 思路:创建HttpSession对象,并获session变量host username pwd和request变量"flag"和"Page"-> request.setAttribute("flag", flag)->根据request变量”page”来判断是否已经开始分页浏览->若没有则先执行DAO(3)方法获取已读或未读的全部邮件集合,然后执行自定义分页类中的初始化方法获取上述集合中的第一页中的邮件集合,并request.getSession().setAttribute("pagination", 分页类的实例化);->若已经开始分页,则将当前页page赋值为已经存在的session类型的分页类对象中的getPage方法中返回的page,并且执行自
定义分页类中的类似初始化方法的获取当前页面集合的方法(具体看程序)
3、查看邮件详细信息:(获取指定邮件的信息)
思路:同DAO(3)中的方法相似不同之处是:DAO(3)查询的是全部已读或未读而本案查询的是指定的邮件ID TOOLS:
本案中主要为分页类的编写:
1、初始化获取第一页的集合
2、获取已分页的当前页面的集合
3、获取全部记录数
4、获取最大页数
5、获取当前页数
6、获取分页导航
第二篇:JAVA_WEB
班级:11网络1班学号:201114620124
姓名:夏侯旻
welcome.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<script language="javascript">
function showInfo()
{
var xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");xmlHttp.open("GET","info.jsp",true);
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
infoDiv.innerHTML=xmlHttp.responseText;} }
xmlHttp.send();
}
</script>
欢迎来到本系统。

相关文档
最新文档