码迷,mamicode.com
首页 > 编程语言 > 详细

关于基础的上传下载和JAVA邮件的发送等一些小问题

时间:2015-12-23 15:46:21      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:

这个是一个上传的小实例

首先是完成一个小小的jsp页面

表单是包含一个用户名字段,以及一个文件字段   注意的要点就是   enctype="multipart/form-data"

Servlet保存上传的文件到uploads目录,显示用户名,文件名,文件大小,文件类型。

这个是第一步

<form action="${pageContext.request.contextPath}/FileUploadServlet"        method="post" 
      enctype="multipart/form-data">
    用户名:<input type="text" name="username" /> </br>
    文件:<input type="file" name="fileOne" /> </br>
    <input type="submit" value="提交" />
</form>

这个是第二步

public void doPost(HttpServletRequest request , HttpServletResponse response  )throws ServletException ,IOException{
//通过response打印,所以需要设置他的编码
response.setContentType("text/html","charset=utf-8");
//创建工厂
DiskFileItemFactory dfif = new DiskFileItemFactory();
//使用工厂解析器解析对象
ServletFileUpload fileUpload = new ServletFileUpload(dfif);
try{
//使用解析器对象解析request,得到FileItem列表
List<FileItem> list = fileUpload.parseRequest(request);
//遍历所有表单
for(FileItem fileItem : list){
//如果当前表单项为普通表单
if(fileItem.isFormFiled()){
String fieldname = fileItem.getFiledName();
if(fieldname.equal("username")){
//打印当前表单内容,就是用户在username表单项中输入的内容
response.getWrite().print("用户名"+fileItem.getString()+"</br>");

}
}else{
//如果当前表单项不是普通表单项,说明是文件字段
String name = fileItem.getName(); //获取上传文件的名称
if(name ==null || name.isEmpty()){
continue ;
}
//获取真实路径,对应${项目目录}/upload,当然这个目录必须存在
String savePath = this.getServletContext().getRealPath("/upload");
//通过upload目录和文件名称来常见File对象
File file = new File(savePath , name);
//把文件上传保存到指定位置
file.write(file);
//打印上传文件名称
response.getWriter().print("上传的文件名"+ fileItem.getName + "</br>");
//打印上传文件大小
response.getWriter().print("上传的文件大小"+fileItem.getSize()+"</br>");
//打印上传文件的类型
respinse.getWriter().print("上传的文件类型"+fileItem.getContentType()+"</br>");
}

}catch(Exception e){

throw new ServletException(e)

}

}

  

 

 

 

  

  

 

//注意一下要点

/*
如果没有把用户上传的文件存放到 WEB-INF目录下,那么用户就可以通过浏览器直接访问,有危险
通常我们会在web-INF目录下创建一个upload目录存放上传文件,而在servlet中找到这个目录
需要使用servletContext的getRealPath(String)方法;

例如我在项目lol中有这条语句:
ServletContext servletContext = request.getSession().getServletContext();
String savePath = this.servletContext.getRealPath("/web-inf/uploads");
其中这个savePath的路径就是:
F:\tomcat6_1\webapps\lol\WEB-INF\uploads


但是IE6会返回上传路径的完整路径,不过无论是否是完整路径,我们都会截取最后一个\\
String name = fileFileItem.getName();
int lastname = name.lastIndexOf("\\");
if(lastIndex != -1){
name = name.subString(lastIndex + 1);
}
response.getWriter.print(name);
*/

但是IE6会返回上传路径的完整路径,不过无论是否是完整路径,我们都会截取最后一个\\
String name = fileFileItem.getName();
int lastname = name.lastIndexOf("\\");
if(lastIndex != -1){
name = name.subString(lastIndex + 1);
}
response.getWriter.print(name);

 ==========================================================================

下面是关于java邮箱发送的一些要点

javaMail中主要的类有三个
javax.mail.session;
javax.mail.internet.MimeMessage;
javax.mail.Transport;

session:表示会话,就是客户端和邮件服务器之间的会话,想获得会话需要给出账号和密码;
当然还要给出服务器名称,邮件服务中的session对象,就相当于会话需要给出的connection对象;

MimeMessage:表示邮件类,是Message的子类,包含邮件的主题,内容,收件人,地址,发件人等,
还可以设置抄送和暗送,甚至可以设置附件

Transport:用来发送邮件,他是发送器
*/

//第一步是获得session
Session session = Session.getInstance(Properties prop ,Authenticator auth) ;
// prop需要指定的两个键值,一个是指定服务器主机名,另一个是需要认证的
Properties prop = new Properties();
prop.setProperty("mail.host","smtp.163.com"); //设置服务器主机名
prop.setProperty("mail.smtp.auth","true") ; //设置需要认证

//其中 Authenticator是一个接口表示认证器,就是校验客户端身份,
//我们需要自己来实现这个接口,实现这个接口需要使用账户和密码
Authenticator auth = new Authenticator(){
public PasswordAuthentication getPasswordAuthentication(){
new PasswordAuthentication("","") ; //设置用户名和密码
}
}

//通过上面的准备,现在就可以获取Session对象了
Session session = Session.getInstance(prop,auth);


// 第二部就是创建MimeMessage 对象,创建MimeMessage对象需要Session对象来创建
MimeMessage msg = new MimeMessage(session);
然后需要设置发信人地址,收信人地址、主题以及邮件正文


//第三部就是发送邮件
Transport.send(msg);


//javaMail 发送带有附件的邮件
/*
一封邮件可以包含正问呢,附件N个,如果想发送带有附件邮件,需要设置邮件内容 MimeMultiPart
*/
MimeMulitpart parts = new MimeMulitpart(); //多个部件对象,可以理解为部件的集合

MimeBodyPart part1 = new MimeBodyPart();//创建一个部件
part1.setCotnent(“这是正文部分”, “text/html;charset=utf-8”);//给部件设置内容
parts.addBodyPart(part1);//把部件添加到部件集中。

下面我们创建一个附件:
MimeBodyPart part2 = new MimeBodyPart();//创建一个部件
part2.attachFile(“F:\\a.jpg”);//设置附件
part2.setFileName(“hello.jpg”);//设置附件名称
parts.addBodyPart(part2);//把附件添加到部件集中

注意,如果在设置文件名称时,文件名称中包含了中文的话,那么需要使用MimeUitlity类来给中文编码:
part2.setFileName(MimeUitlity.encodeText(“美女.jpg”));

关于基础的上传下载和JAVA邮件的发送等一些小问题

标签:

原文地址:http://www.cnblogs.com/ltplol/p/5067480.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!