实验十四:邮件发送[实验题目]1使用HttpConnection接口及HTTP协议的get或者post方法进行数据的接收与发送。具体要求是在手机MIDlet程序中发送一个字符串,在服务器端接收并保存成文件。2编写手机MIDlet程序通过无线网络发送邮件[类图结构][程序代码]ClientMIDlet.javaimportjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjavax.microedition.io.Connector;importjavax.microedition.io.HttpConnection;importjavax.microedition.lcdui.Display;importjavax.microedition.lcdui.Form;importjavax.microedition.midlet.MIDlet;importjavax.microedition.midlet.MIDletStateChangeException;publicclassClientMIDletextendsMIDlet{Displaydisplay=Display.getDisplay(this);Formform=newForm(dd);protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{//TODOAuto-generatedmethodstub}protectedvoidpauseApp(){//TODOAuto-generatedmethodstub}protectedvoidstartApp()throwsMIDletStateChangeException{//TODOAuto-generatedmethodstubHttpConnectionhc;try{hc=(HttpConnection)Connector.open();hc.setRequestMethod(HttpConnection.POST);DataOutputStreamdos=hc.openDataOutputStream();dos.writeUTF(fine);dos.flush();dos.close();DataInputStreamdis=hc.openDataInputStream();Stringstr=dis.readUTF();form.append(str);dis.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}display.setCurrent(form);}}ServerHttpServlet.javaimportjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassServerHttpServletextendsHttpServlet{@OverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//TODOAuto-generatedmethodstubSystem.out.println(aaaaaaaaaaaaaaaaa);DataInputStreamdis=newDataInputStream(req.getInputStream());Stringstr=dis.readUTF();dis.close();DataOutputStreamdos=newDataOutputStream(resp.getOutputStream());dos.writeUTF(str+okkkkkkkkkkk);dos.flush();dos.close();super.doPost(req,resp);}}[预测结果][实验调试]1出错信息:要为ServerHttpServlet.java新建一个工程,在里面添加上tomcat的库。2出错信息:保证服务器是开启的,每次修改代码后要重新开启。[总结思考]1总结本次的实验是邮件的发送与接受,基于HTTP协议的网络开发技术,我们需要掌握客户端和服务端的编程以及环境配置,并且这次的实验我们接触到了一个新的知识GCF通用连接框架,通过访问本机访问,我们这次的实验是比较基础的实验,简单利用手机去访问,可以利用客户端和服务端连接去发送和接受邮件。2思考:1用DOS/DIS和用OS/IS在写出和得到数据流在使用上有什么不同?答:使用DOS/DIS流,传递和接收整数,小数,字符串等;使用IS的read方法,一个字节一个字节地读入,使用IS的read(byte[]b)方法,来读传递来字节数组,使用IS的read(byte[]b,intoffset,intlen)方法,来读传递来的字节数组。2servlet如何配置?答:A:将servlet放到classes里B:将用到的一些包放到lib里C:对web.xml进行必要的配置3如何添加额外的包?答:Javaproject里建完工程名后next里找到libraries里找到对应的包所在的文件夹添加。4javamail是什么,如何使用?答:JavaMail是提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。使用:道具对象JavaMail需要创建一个格式为mail.smtp.host的属性用来发送信息。Propertiesprops=newProperties();props.put(mail.smtp.host,smtp.126.com);对话对象所有的基于JavaMail的程序都至少需要一个或全部的对话目标。SessionsendMailSession;sendMailSession=Session.getInstance(props,null);信息对象信息对象将把你所发送的邮件真实的反映出来。MessagenewMessage=newMimeMessage(sendMailSession);接下来设置发送信箱,接收信箱,主题,内容等传输对象邮件的传输只有送出或受到两种状态。JavaMail将这两种不同状态描述为传输和储存。传输将送出邮件,而储存将收取邮件。Transporttransport;transport=sendMailSession.getTransport(smtp);5无线通信,多线程放在哪里?为什么?答:无线通信中,多线程放在客户端程序中,因为用户界面线程通常用来处理用户的输入并响应各种事件和消息,而客户端就是需要完成这种功能。