JavaWeb开发常用功能.ppt
《JavaWeb开发常用功能.ppt》由会员分享,可在线阅读,更多相关《JavaWeb开发常用功能.ppt(54页珍藏版)》请在三一办公上搜索。
1、Java Wb开发技术教程,第13章 Java Web开发常用功能,主要内容,文件上传分页处理JavaMail树状菜单,文件上传,在Java的Web开发中没有对文件的上传进行封装,需要自己开发一个Servlet或者JavaBean处理上传或下载的任务。从HttpServletRequest中获得客户端请求的输入流。通过输入流中读取指定的文件,将文件保存在指定的位置。,文件上传,jspSmartUpload 组件是一个免费使用的文件上传组件,它的使用简单,功能齐备。通过该组件,可以获得上传文件的全部信息(包括文件名、大小、类型、扩展名、文件数据等),同时还可以对上传文件的大小、类型等方面进行限制
2、。在使用时需要把该组件的jar文件放到站点WEB-INF目录的lib中。,文件上传,jspSmartUpload组件中包括File、Files、Request、SmartUpload等类。File:包括上传文件的所有信息,如:上传的文件名、大小、扩展名、文件数据等。Files:所有上传文件的集合。从中可以获得上传文件的数目、大小等。Request:相当与JSP中的request对象,如果在上传的表单中还有其它的表单项的值,必须通过jspSmartUpload组件中的Request对象获取。SmartUpload:完成文件上传。,单元项目1-采用jspSmartUpload 组件上传文件,项目构
3、思:采用jspSmartUpload 组件将客户端的doc和txt文件上传到Web服务器。项目设计:创建一个JSP文件用于客户端的文件上传界面。将jspSmartUpload组件加入到项目中。创建一个Servlet用于处理上传的文件。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施:创建一个JSP文件upload.jsp:(主要代码如下)文件描述:文件名称:,注意:form表单中必须添加method=“post“与enctype=“multipart/form-data”属性。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施:将jsmartcom_z
4、h_CN.jar文件拷贝到项目目录的WEB-INF/lib下。在Servlet中处理上传文件。,单元项目1-采用jspSmartUpload 组件上传文件,项目实施:在Servlet中处理上传的文件主要代码:SmartUpload mySmartUpload=new SmartUpload();int count=0;/上传文件的数量try mySmartUpload.initialize(this.getServletConfig(),request,response);/限制每个上传文件的最大长度。mySmartUpload.setMaxFileSize(50*1024*1024);/设定
5、允许上传的文件(通过扩展名限制),仅允许doc,txt文件。mySmartUpload.setAllowedFilesList(doc,txt);mySmartUpload.upload();/获得上传的文件File myfile=mySmartUpload.getFiles().getFile(0);/获得上传文件的名字String fileName=myfile.getFileName();/保存文件的目录count=mySmartUpload.save(/upload);/获得文件的描述信息Request re=mySmartUpload.getRequest();String desc
6、=re.getParameter(desc);out.println(count+file uploaded.);out.println(file description:+desc);catch(Exception e)out.println(Unable to upload the file.);out.println(Error:+e.toString();,文件上传,jspSmartUpload组件使用灵活,适合较小文件的传输,如果传输数据较大,则采用commons-fileupload组件。commons-fileupload组件的下载地址为http:/。使用commons-file
7、upload组件的时候需要将其jar文件放到站点目录WEB-INF/lib下同时还有加入commons IO的jar包。其下载的地址是http:/commons.apache.org/downloads/download_io.cgi(commons-io-1.4.jar)。,文件上传,包中包括了在commons-fileupload组件所有的类。DiskFileItemFactory:代表本地的磁盘文件。FileItem:代表每组数据的接口。ServletFileUpload:获得上传文件。,单元项目2-采用commons-fileupload组件上传文件,项目构思:采用commons-fi
8、leupload组件将客户端的doc和txt文件上传到Web服务器。项目设计:创建一个JSP文件用于客户端的文件上传界面。将commons-fileupload组件加入到项目中。创建一个Servlet用于处理上传的文件。,单元项目2-采用commons-fileupload组件上传文件,项目实施:创建一个JSP文件fileupload.jsp。将和文件拷贝到项目目录的WEB-INF/lib下。,单元项目2-采用commons-fileupload组件上传文件,项目实施:创建一个Servlet实现文件上传。/实例化一个硬盘文件工厂,用来配置上传组件ServletFileUploadDiskFil
9、eItemFactory factory=new DiskFileItemFactory();factory.setSizeThreshold(4096);/设置缓冲区大小,这里是4kbServletFileUpload upload=new ServletFileUpload(factory);/用以上工厂实例化上传组件upload.setSizeMax(4194304);/设置最大文件尺寸,这里是4MBString uploadPath=this.getServletContext().getRealPath(/upload);/设置上传的地址List items=upload.parse
10、Request(request);/得到所有的上传文件Iterator it=items.iterator();while(it.hasNext()/逐条处理FileItem fi=(FileItem)it.next();/得到当前文件/检查当前项目是普通表单项目还是上传文件if(fi.isFormField()/如果是普通表单项目,显示表单内容。if(desc.equals(fi.getFieldName()out.println(file description:+fi.getString();else/获得上传的文件 String path=fi.getName();/得到文件的完整路径
11、 String filename=path.substring(path.lastIndexOf()+1);/得到去除路径的文件名 fi.write(new File(uploadPath,filename);/将文件保存在Web目录的upload文件夹中 out.println(filename+file uploaded.);,分页处理,在Web开发中,分页处理显示数据是最基本的功能。分页显示是将数据库中的数据依次部分地显示出来。通过分页处理可以提高页面访问速度,美化页面。在实际开发中有很多分页的解决方案,大致可以分为以下两种:利用结果集(ResultSet)来处理。采用SQL语句处理。,
12、分页处理,利用结果集(ResultSet)来处理。通过ResultSet的absolute()方法获得指定行位置的记录。当用户第一次请求数据查询时,就执行SQL语句查询,获得的ResultSet对象及其要使用的连接对象都保存到其对应的会话对象中。以后的分页查询都通过第一次执行SQL获得的ResultSet对象定位取得指定行位置的记录。最后在用户不再进行分页查询时或会话关闭时,释放数据库连接和ResultSet对象等数据库访问资源。这种方式对数据库的访问资源占用比较大,并且其利用率不是很高。优点是减少了数据库连接对象的多次分配获取,减少了对数据库的SQL查询执行。,分页处理,采用SQL语句处理。
13、在用户的分页查询请求中,每次可取得查询请求的行范围的参数。使用这些参数取得指定行范围的SQL查询语句,并执行SQL查询。把查询的结果返回给用户,最后释放数据库访问资源。采用这种方式需要每次请求时都要执行数据库的SQL查询语句;对数据库的访问资源使用完毕就立即释放,不占用数据库访问资源。其缺点是:对不同的数据库使用的查询语句是不同的。每次均执行数据库SQL查询操作。对数据库有一定的影响。,单元项目3-分页功能的实现,项目构思:采用MVC模式实现分页功能。将表中的数据按照分页的方式显示到页面。项目设计:根据MVC的分层原则,将分页显示的功能分为3个层次。模型层:用于代表数据表的数据Bean、用于在
14、页面传输数据的PageBean、用于获得分页数据的逻辑Bean。控制层:用Servlet完成分页控制操作。视图层:采用JSP页面显示分页数据。,单元项目3-分页功能的实现,项目实施:创建用于在页面中传输数据的PageBean。public class PageBean private int curPage;/当前页数private int totalPages;/总页数private int totalRows;/总行数private int pageSize;/每页显示行数private List data;/每页显示的数据省略get、set方法PageBean的主要功能是在视图和控制层之
15、间传输数据,里面封装了需要显示的分页信息和分页的数据。,单元项目3-分页功能的实现,项目实施:创建数据Bean:Emp。创建连接工具类:DBUtil。,单元项目3-分页功能的实现,项目实施:创建逻辑Bean EmpDAO,获得分页数据。List ary=new ArrayList();Connection conn=DBUtil.getConnection();PageBean bean=new PageBean();/创建PageBeanbean.setPageSize(2);/设置每页显示行数bean.setCurPage(page);/获得当前的页数bean.setTotalRows(g
16、etEmpRows();/获得总行数int offset=(bean.getCurPage()-1)*bean.getPageSize();/起始数据的行数int rows=bean.getPageSize();/要显示的记录数try tatement stmt=conn.createStatement();String sql=select*from emp limit+offset+,+rows;/利用MySQL的limit函数实现分页ResultSet rs=stmt.executeQuery(sql);while(rs.next()Emp emp=new Emp();emp.setId
17、(rs.getInt(id);emp.setAge(rs.getInt(age);emp.setName(rs.getString(name);emp.setSalary(rs.getFloat(salary);ary.add(emp);bean.setData(ary);/获得页面的数据rs.close();stmt.close();catch(SQLException e)e.printStackTrace();,单元项目3-分页功能的实现,项目实施:创建Servlet控制层,用EmpServlet完成分页的控制操作。String page=request.getParameter(pag
18、e);/获得要显示的页数int curPage=0;/当前的页数if(page=null|page.length()1)/没有获得page值的处理curPage=1;else curPage=Integer.parseInt(page);EmpDAO dao=new EmpDAO();/创建DAO对象PageBean pageBean=dao.getEmps(curPage);/返回PageBean/将PageBean放入到request中转发request.setAttribute(pageBean,pageBean);RequestDispatcher rs=request.getRequ
19、estDispatcher(emp.jsp);rs.forward(request,response);,单元项目3-分页功能的实现,项目实施:创建视图层emp.jsp。编号姓名工资年龄 每页$pageBean.pageSize行 共$pageBean.totalRows行 页数$pageBean.curPage/$pageBean.totalPages 首页 上一页 首页 上一页 下一页 尾页 下一页 尾页,JavaMail,Email是一种常用的互联网服务,它是通过计算机网络交换的电子媒体信件。Internet上的个人用户不能直接接收电子邮件,而是通过申请ISP邮件服务器的一个电子信箱,由
20、ISP邮件服务器负责电子邮件的接收。一旦有用户的电子邮件到来,ISP邮件服务器就将邮件移到用户的电子信箱内,并通知用户有新邮件。当发送一封电子邮件给另一个客户时,电子邮件首先从用户计算机发送到ISP邮件服务器,再到Internet,再到收件人的ISP邮件服务器,最后到收件人的个人计算机。电子邮件在发送与接收过程中都要遵循SMTP、POP3等协议,这些协议确保了电子邮件在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收Internet上的电子邮件。,JavaMail,Email的相关协议 简单传输协议(SMTP):简单传输协议SMTP(Simple Mail Tra
21、nsfer Protocol)是电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议,通信基于TCP协议端口25。邮箱协议(POP3):邮箱协议POP3是将个人计算机连接到Internet的邮件服务器和下载电子邮件的协议。它允许用户从服务器上把邮件存储到本地主机(即自己的计算机),同时删除保存在邮件服务器上的邮件,这个协议工作的TCP协议端口是110。网络消息访问协议(IMAP):IMAP(Internet消息访问协议)与POP3协议类似,也是提供面向用户的邮件收取服务。它使用TCP端口是143。这两个协议的不同是IMAP将很多客户端的功能转移到服务器端。MIME:MI
22、ME(因特网邮件扩展标准),本身不是邮件传输协议,但是对于传输内容的消息,附件以及其它内容定义了格式。例如:扩充了非文本邮件主体、邮件主体不再局限于ASCII字符,而是所有的字符等。,JavaMail,JavaMail是JavaEE中的标准API,在它的接口中封装了与邮件服务器访问的详细过程。采用JavaMail API可以在程序中以一种独立于平台和协议的方式发送和接受邮件。JavaMail还允许创建不同类型的邮件,比如普通的文本,或者带有附件的邮件,或者带有混合的二进制内容的邮件。JavaMail API主要包括四部分:Session、Message、Transport、和InternetA
23、ddress。,JavaMail,SessionSession类代表一个基本的邮件会话,其它的对象均依赖于Session。它是与一组用户邮件配置设置有关的方法提供者。通过配置这些属性完成客户机和服务器之间的交流。Session对象使用获得配置的信息,通过getDefaultInstance()方法创建邮件会话。例:Properties props=new Properties();props.put(mail.host,邮件服务器的名字);Session session=Session.getDefaultInstance(props,null);,JavaMail,Message Messa
24、ge类代表一个邮件消息,但这是一个抽象类,所以必须通过它的子类实现,通常采用,它代表了一个标准的MIME风格的邮件消息,通过一个接受Session对象的构造函数创建实例。例:MimeMessage message=new MimeMessage(session);Messag类的主要方法可以分为两部分。第一部分主要用于发送邮件,设置邮件的相关信息包括邮件的发送者、接受者、主题和发送时间等。第二部分用于接受邮件,用来获取邮件的相关信息。,JavaMail,Transport Transport是消息发送传输类,提供了两个静态的send()方法发送消息,第一种使用一个Message对象和Addre
25、ss数组做参数,它发送消息给所有Address类定义的收件人。第二种形式只有一个Message对象参数,但是必须预先定义收件人的地址。例:Transport.send(message);还可以通过一个邮件会话获得Transport类的实例,通过调用connect()的方法,发送邮件。例:Transport tran=session.getTransport(smtp);tran.connect(邮件服务器地址,用户名,密码);tran.send(msg);,JavaMail,InternetAddress InternetAddress代表用户的邮箱地址,它的父类是Address。可以通过传入
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaWeb 开发 常用 功能
链接地址:https://www.31ppt.com/p-6509583.html