1、photo 作者名:composer 歌曲:song 歌曲描述:memosubmit value= 上 载 /form/body/html通过浏览器传输时,所传输的数据的格式为:-7d8b07a02ceContent-Disposition: form-data;站三; filename=E:Tempfile1.txtContent-Type: text/plainAAAAAAAAAAAAAA李四Tempfile2.txtBBBBBBBBBBBBBB好感-7d8b07a02ce-浏览器会以特定的“节”标记来分割每一个数据区,本例的特定分割符为“-7d8b07a02ce”。并且对传输的任何数据,
2、浏览器均会以“回车换行”符结束。基于此,我们可以用如下的Servlet程序获取以上表单数据:package com.ttt.chapter8;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.ServletInputStream;import java.sql.*;/* * Servlet implementation class for Servlet: UpLoad * */ public class UpLoad extends javax.servlet.ht
3、tp.HttpServlet implements javax.servlet.Servlet /* * private static final long serialVersionUID = 1L; String singer; String composer; String song; byte buff = new byte1024; String sectionDelimeter; /* (non-Java-doc) * see javax.servlet.http.HttpServlet#HttpServlet() public UpLoad() super(); * see ja
4、vax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException / TODO Auto-generated method stub * see javax.servlet.http.HttpServlet#doPost(HttpServletRe
5、quest request, HttpServletResponse response) protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException int count; ServletInputStream sis = request.getInputStream(); /skip the beginning 3 lines, then get the 4th line which is singer /注意:用sis.
6、readLine(buff, 0, buff.length)读入的内容包含结尾的“回车换行”符 count = sis.readLine(buff, 0, buff.length); sectionDelimeter = new String(buff, 0, count-2); singer = new String(buff, 0, count-2); System.out.println(Singer= + singer); /skip the beginning 4 lines, then get the singer photo image stream int rc1; ByteA
7、rrayOutputStream photo = new ByteArrayOutputStream(); while(true) rc1 = sis.readLine(buff, 0, buff.length); if (rc1 = buff.length) photo.write(buff, 0, rc1); else String del = new String(buff, 0, rc1); if (del.indexOf(sectionDelimeter) != -1) break; else photo.write(buff, 0, rc1); Photo size= + phot
8、o.size(); /* FileOutputStream fos = new FileOutputStream(TempABC.jpg);Size=+photo.size(); fos.write(photo.toByteArray(); fos.flush(); fos.close(); */ /get composer /因为我们在前一个对图像媒体的读取中,已经读出了域分隔符,所以,此处只要读两个。 sis.readLine(buff, 0, buff.length); composer = new String(buff, 0, count-2);Composer= + compose
9、r); /get the song media String ss; ss = new String(buff, 0, count-2); String songName = ss.substring(ss.lastIndexOf()+1, ss.length()-1); int rc2; ByteArrayOutputStream song = new ByteArrayOutputStream(); rc2 = sis.readLine(buff, 0, buff.length); if (rc2 = buff.length) song.write(buff, 0, rc2); Strin
10、g del = new String(buff, 0, rc2); song.write(buff, 0, rc2);Song Name= + songName + Size = + song.size();TempABC.mp3+song.size(); fos.write(song.toByteArray(); /get the song memo String memo = new String(buff, 0, count-2);Memo = + memo); /insert the media into table int rest = 0; rest = insertIntoDat
11、abase(singer, photo, composer, song, memo, songName); response.setContentType(text/html PrintWriter pw = response.getWriter(); if (rest 0) pw.println(Success elseFailed private int insertIntoDatabase(String singer, ByteArrayOutputStream photo, String composer, ByteArrayOutputStream song, String memo
12、, String songName) Connection conn = null; int ca = 0; PreparedStatement pst = null; String connectionUrl = jdbc:sqlserver:/192.168.10.80:1433; + databaseName=Student;user=sa;password=12345 try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver conn = DriverManager.getConnection(connectionUr
13、l); pst = conn.prepareStatement(insert into Song (song_singer_name,song_singer_photo,song_composer,song_singer_song,song_memo,song_name) values(?, ?) pst.setString(1, singer); pst.setBytes(2, photo.toByteArray(); pst.setString(3, composer); pst.setBytes(4, song.toByteArray(); pst.setString(5, memo);
14、 pst.setString(6, songName); ca = pst.executeUpdate(); catch(Exception e) e.printStackTrace(); finally try pst.close(); conn.close(); catch(Exception e1); return ca; 现在已经将音乐数据存入了数据库,可以通过如下的页面和Servlet来播放:播放页面:!DOCTYPE html PUBLIC -/W3C/DTD XHTML 1.0 Transitional/EN http:/www.w3.org/TR/xhtml1/DTD/xhtm
15、l1-transitional.dtdhtml xmlns=/www.w3.org/1999/xhtmlmeta http-equiv=Content-Type content= charset=gb2312媒体播放测试-pobject id=MediaPlayer1 width=316 height=280 classid= CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6 codebase= align=baseline border=0 standby=Loading Microsoft Windows Media Player components.
16、 type=application/x-oleobjectparam name=URL./PlayMusicautoStarttrueinvokeURLsfalseplayCount100defaultFramedatawindowembed src=application/x-mplayer2pluginspage= showcontrols=1 showpositioncontrols= showaudiocontrols= showtracker= showdisplay= showstatusbar= autosize= showgotobar= showcaptioning= aut
17、ostart= autorewind= animationatstart= transparentatstart= allowscan= enablecontextmenu= clicktoplay= defaultframe= invokeurls=/embed/object/p-使用Realplayer播放媒体,可以播放几乎任何类型的媒体,包括mp3,RM等 -OBJECT ID=RVOCX CLASSID=clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA WIDTH=292 HEIGHT=294PARAM NAME=SRC VALUE=Media/猫和
18、老鼠.rmCONSOLEoneCONTROLSImageWindow,ControlPanelBACKGROUNDCOLORwhiteCENTERautostart351284audio/x-pn-realaudio-plugin/OBJECT-使用默认的Player播放媒体 -其中的“./PlayMusic”是一个Servlet,代码如下: PlayMusic public class PlayMusic extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet public PlayMusic() protected void
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2