当前位置:文档之家› _JavaEE实训

_JavaEE实训

_JavaEE实训
_JavaEE实训

JA V AWEB 版本音乐网站

一、实习目的

1)了解及学习HTML标准化语言同时学会使用tomcat6.0.

2)学会MySql数据库的安装并进行数据库,表以及其他的操作.

3)学会在MyEclipse8.5环境中完成Java Project的创建以及具体实现.

4)重点是使用Servlet以及JSP进行项目的设计.

5)了解JDBC以及连接的代码书写、JSP、同时学会JavaScript脚本的实现.

二、实训环境

开发环境:window xp 、jdk 6.0 、tomcat6.0

数据库: mysql5.5

开发工具:MyEclipse8.5 EidtPlus Navicat

使用技术: JDBC、DBCP、Servlet、JSP 、EL表达式JavaScript、Ajax

实训周期:两周

三、实习内容及要求

本次实习主要实现一个简单的音乐网站,其主要包括六大模块:

●网站登录:用户名,密码,登录,登录失败显示信息,登录成功跳转音乐列

表界面。

●网站注册:用户名,密码,邮箱,性别,验证码。

●网站音乐上传:可以上传mp3的格式的音乐,并对其他格式的文件进行限制.

●音乐下载:可以下载mp3的格式的音乐,但其他的格式比如.exe不能下载。

●音乐列表的显示:序号,歌曲名,歌手名,大小,试听,下载。

●音乐的试听:进入下载界面后可以对上传音乐进行播放试听.

四、实习内容及结果

1.实验时序图

2.程序代码

(1).连接数据库

package org.softeem.fileload;

import java.sql.*;

public class DBUtils {

private static final String USER="root";//数据库的账号

private static final String PASSWORD="123321";//密码

向下复制 ctrl+shift+下

private static final String URL="jdbc:mysql://localhost:3306/netmusic";//连接数据库的详细的地址private static final String DRIVERCLASS="com.mysql.jdbc.Driver";//mysql数据驱动类的全路径

//注册驱动

static{

try {

Class.forName(DRIVERCLASS);//alt+shift+z

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

//建立连接

public static Connection getConnection() throws SQLException{

return DriverManager.getConnection(URL,USER,PASSWORD);

}

//关闭连接

public static void close(Connection conn) throws SQLException{

if(conn!=null){

conn.close();

}

}

}

(2).下载功能

package org.softeem.fileload;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class DownLoad extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

HttpSession session=request.getSession();

if(session.getAttribute("account")==null){

Connection conn=null;

try {

conn=DBUtils.getConnection();//得到数据连接

Statement stat=conn.createStatement();//创建Statement对象

String sql="select * from t_song";//查询歌曲表中的所有歌曲的sql

ResultSet rs=stat.executeQuery(sql);//得到数据库返回的表中数据结果

List songList=new ArrayList();

while(rs.next()){//开一个while循环判断还有没有数据了

Song song=new Song();

song.setId(rs.getInt("id"));

song.setName( rs.getString("name"));

song.setSize(rs.getString("size"));

song.setSongger(rs.getString("songger"));

songList.add(song);

}

request.setAttribute("msg", "游客你好对不你需要登录好可以下载本网站的音乐");

;

request.setAttribute("songList", songList);//把歌曲数据撞到request对象中

request.getRequestDispatcher("../musicList.jsp")//跳转到歌曲列表页面中

.forward(request, response);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try{

conn.close();

}catch(SQLException se){

se.printStackTrace();

}

}

}else{

String songName=request.getParameter("name");//得到歌曲的名字

System.out.println(songName);

response.setCharacterEncoding("UTF-8");

String fname = new String(songName.getBytes("gbk"), "ISO8859-1");

System.out.println(fname);

response.setHeader("Content-Disposition", "attachment; filename=\"" + fname + "\".mp3");//服务器告诉浏览器以附件的形式打开该文件(下载)

FileInputStream fis=new

FileInputStream("C:/Tomcat6.0/webapps/load/music/"+songName+".mp3");/ /ctrl +shift +o

BufferedInputStream bis=new

BufferedInputStream(fis);//使用BufferedInputStream 提高文件的读取的效率

OutputStream os=response.getOutputStream();//创建一个基

于服务器响应的文件输出流

BufferedOutputStream bos=new BufferedOutputStream(os);//使用BufferedOutputStream 提高文件写的效率

int temp=0;//定义个临时变量把每次读取到字节装到该临时变量中

while((temp=bis.read())!=-1){//开一个while循环一个一个的读取字节如果读取到文件的末尾temp的值=-1

bos.write(temp);

}

bis.close();//流是一种资源使用完毕以后需要关闭关闭输入

bos.close();//关闭输出流

}

}

}

(3),上传功能

package org.softeem.fileload;

import java.sql.*;

import java.io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import https://www.doczj.com/doc/1e18448459.html,mons.fileupload.FileItem;

import https://www.doczj.com/doc/1e18448459.html,mons.fileupload.FileUploadException;

import https://www.doczj.com/doc/1e18448459.html,mons.fileupload.disk.DiskFileItemFactory;

import https://www.doczj.com/doc/1e18448459.html,mons.fileupload.servlet.ServletFileUpload;

public class FileUpload extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

DiskFileItemFactory dif=new DiskFileItemFactory();

ServletFileUpload sfu=new ServletFileUpload(dif);

sfu.setHeaderEncoding("utf-8");//解决接受文件中文乱码问题

File file=null;

try {

List fileItemList=sfu.parseRequest(request);

for(FileItem fileitem:fileItemList){

if(fileitem.isFormField()){

}else{

//上传的歌曲要放到tomcat的发布的项目的制定的位置上

//C:\Program Files\Apache Software Foundation\Tomcat

6.0\webapps\load\music

String fileName=fileitem.getName();//得到文件名

String[] fs=fileName.split("\\\\");

fileName=fs[fs.length-1];//得到不带文件路径的文件名针对于IE浏览器

//真正在做企业开发的时候路径是不能这样写死的导致项目失去了扩展性增大了后期的维护难度

file=new

File("C://Tomcat6.0/webapps/load/music/"+fileName);

fileitem.write(file);

//文件上传成功

// 歌手的名字歌曲名文件的大小 mp3 wav 两种两种文件格式

// 两只蝴蝶.mp3

String songName=fileName.split("\\.")[0];

Long size=fileitem.getSize();//得到歌曲的大小B

double dSize=size/(1024D*1024D);

System.out.println("大小:"+dSize);

String songSize=String.valueOf(dSize);//把整型转换成字符串歌曲的大小

songSize=songSize.substring(0, 4);

System.out.println("大小:"+dSize);

String songger="";//歌手名稍后获取

Connection conn=null;

try{

conn=DBUtils.getConnection();//得到数据库的链接

Statement

stat=conn.createStatement();//Statement向数据发送并执行sql语句的对象

String sql="insert into

t_song(name,songger,size) " +

"

values('"+songName+"','"+songger+"','"+songSize+"')";

int flag=stat.executeUpdate(sql);

if(flag>0){

request.setAttribute("msg", "恭喜你上传音乐成功");

request.getRequestDispatcher("../index.jsp").forward(request, response);

}else{

//如果数据库保存音乐信息是失败了要把上传成功的音乐删除掉

if(file.exists()){

file.delete();

}

request.setAttribute("msg", "对不起上传音乐失败");

request.getRequestDispatcher("../index.jsp").forward(request, response);

}

}catch(SQLException se){

se.printStackTrace();

System.out.println("出错了~~~~~~~~~~~~~~~~~");

if(file.exists()){

file.delete();

}

request.setAttribute("msg", "对不起上传音乐失败");

request.getRequestDispatcher("../index.jsp").forward(request, response);

}finally{

DBUtils.close(conn);

}

}

}

} catch (FileUploadException e) {

if(file.exists()){//判断文件是否存在如果存在近if语句

file.delete();//删除存在的文件

}

request.setAttribute("msg","对不起伤处音乐失败");

request.getRequestDispatcher("../index.jsp").forward(request, response);

System.out.println("如果进到此处说明上传失败");

e.printStackTrace();

} catch (Exception e) {

if(file.exists()){//判断文件是否存在如果存在近if语句

file.delete();//删除存在的文件

}

request.setAttribute("msg", "对不起上传音乐失败");

request.getRequestDispatcher("../index.jsp").forward(request, response);

e.printStackTrace();

}

}

}

(4),登录功能

package org.softeem.fileload;

import java.sql.*;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class loginServlet extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String account=request.getParameter("account");

String password=request.getParameter("password");

Connection conn=null;

try{

conn=DBUtils.getConnection();

Statement stat=conn.createStatement();

String sql="select * from t_user where

account='"+account+"'and password='"+password+"'";

ResultSet rs=stat.executeQuery(sql);

HttpSession session=request.getSession(true);

if(rs.next()){

session.setAttribute("account", account);

request.getRequestDispatcher("../index.jsp").forward(request, response);

}else{

request.setAttribute("msg", "账号或密码不正确");

request.getRequestDispatcher("../login.jsp").forward(request, response);

}

}catch(SQLException e){

e.printStackTrace();

}finally{

try{

conn.close();

}catch(SQLException se){

se.printStackTrace();

}

}

}

}

(6)上传音乐列表

package org.softeem.fileload;

import java.sql.*;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.util.*;

public class MusicList extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse

response)

throws ServletException, IOException {

//该类的作用就是把t_song表中的所有的歌曲都现在歌曲列表页面中

Connection conn=null;

try {

conn=DBUtils.getConnection();//得到数据连接

Statement stat=conn.createStatement();//创建Statement对象

String sql="select * from t_song";//查询歌曲表中的所有歌曲的sql

ResultSet rs=stat.executeQuery(sql);//得到数据库返回的表中数据结果

List songList=new ArrayList();

while(rs.next()){//开一个while循环判断还有没有数据了

Song song=new Song();

song.setId(rs.getInt("id"));

song.setName( rs.getString("name"));

song.setSize(rs.getString("size"));

song.setSongger(rs.getString("songger"));

songList.add(song);

}

System.out.println(songList);

request.setAttribute("songList", songList);//把歌曲数据撞到request对象中

request.getRequestDispatcher("../musicList.jsp")//跳转到歌曲列表页面中

.forward(request, response);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try{

conn.close();

}catch(SQLException se){

se.printStackTrace();

}

}

}

}

(7)登录功能

package org.softeem.fileload;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.*;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class registaction extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String account=request.getParameter("account");

String password=request.getParameter("password");

try {

Connection conn=DBUtils.getConnection();

Statement stat=conn.createStatement();

ResultSet rs=stat.executeQuery("select * from t_user where account='"+account+"'");

if(rs.next()){

request.setAttribute("message","对不起该账号已存在请更换");

request.getRequestDispatcher("../regist.jsp").forward(request, response);

}else{

int rows=stat.executeUpdate("INSERT INTO t_user " +

"

(account,password)VALUES('"+account+"','"+password+"')");

if(rows>0){

request.setAttribute("message", "ok");

request.getRequestDispatcher("../login.jsp").forward(request,resp onse);

}

else {

request.setAttribute("message", "no");

request.getRequestDispatcher("../regist.jsp").forward(request,res

}

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

(8)歌曲列表

package org.softeem.fileload;

public class Song {

private int id;

private String songger;

private String name;

private String size;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getSongger() {

return songger;

}

public void setSongger(String songger) { this.songger = songger;

}

public String getName() {

return name;

}

public void setName(String name) {

https://www.doczj.com/doc/1e18448459.html, = name;

}

public String getSize() {

return size;

}

public void setSize(String size) {

this.size = size;

}

(10)下载页面

<%@page language="java"import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.get ServerPort()+path+"/";

%>

My JSP 'download.jsp' starting page

java.doc下载

(11)上传页面

<%@page language="java"import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.get ServerPort()+path+"/";

%>

My JSP 'index.jsp' starting page

文件上传




${msg}


上传说明



1.文件最大上传10M.

2.文件上传的格式为:.MP3

(13)登录页面

<%@page language="java"import="java.util.*" pageEncoding="utf-8"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.get ServerPort()+path+"/";

%>

登录

返回首页|帮助中心

如遇问题请拨打:010-111

账号:

密码:

用户注

(14)音乐列表页面

<%@page language="java"import="java.util.*" pageEncoding="utf-8"%>

<%@taglib prefix="c"uri="/WEB-INF/c.tld"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.get ServerPort()+path+"/";

%>

My JSP 'musicList.jsp' starting page

音乐上传

序号歌曲名歌手名大小试听下载
M">试听">下载

${msg}

(15)音乐播放

<%@page contentType="text/html"pageEncoding="utf-8"%>

音乐播放

<%String mName=request.getParameter("name");%>

(16)注册页面

<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.get ServerPort()+path+"/";

%>

注册页面