现在的位置: 首页 > 综合 > 正文

分享一下我自己大一时写的课程设计,JSP+javabean网络硬盘

2014年01月12日 ⁄ 综合 ⁄ 共 11324字 ⁄ 字号 评论关闭

RT,大一末的课程设计,给那些刚入门的同学看看,或许能为你们绕开弯路提供一点捷径

 

以下是我的文档,源码和数据库打包在了CSDN的下载里

 

下载链接:http://download.csdn.net/detail/hacke2/4744171

 

 

1.可行性分析

web开发技术是Internet应用的一个重要方而,而JSP又是web开发的最先进的技术,是当前web开发人员的首选技术。

随着网络技术的日益普及和信息化建设的重视,网络硬盘是一种新型安全的网络存储系统,已越来越受到.人们的重视和喜欢,主要适用个人文件存储,可以用作个人的一个网络U盘,网络硬盘是一块专属的存储空间,用户通过上网登录网站的方式,可以方便上传、卜载文件。只要能上网就可以用网络硬盘登录到服务器上进行个人文件的上传、删除等操作,随时随地存储自己的个人文件。

2.需求分析

2.1 系统模块设计

本系统做为一个较完整的网站,主要系统的主要模块如下:

·会员注册  新会员要登录该网站享有对自己的资源进行下载或者上传资料就必须的有自己的会员号码。会员在注册的时候需要填写会员名、登录密码、确认密码等信息。如果该会员已经存在与该系统的会员信息数据库中,则提示注册失败。

·会员登录  会员根据自己注册的会员号码和密码登录该系统。首次登陆会在TOMCAT目录里建一个以自己用户名命名的目录。

·修改密码  会员为了自己的信息的安全可以对自己的注册时候填写的密码进行修改。

·上传文件  上传自己的文件,大小格式均有限制。

·下载文件  下载你自己的文件

2.2 数据库设计

本系统使用MySQL数据库建立了一个userinfo数据库,表用来存储会员的信息,还有一个admin来存储管理员账号密码。

2.2.1 userinfo表的字段  

会员的注册信息存入userinfo表中,userinfo的主键是id,标准的字段说明如下:

·id 会员注册时自动增长的识别码

·userName 会员用户名

·userPassword 会员密码

2.2.2 userinfo的详细设计如图2-1所示

图 2-1

2.2.3 admin表的字段  

管理员的注册信息存入admin表中,admin的主键是adminName,默认值为admin,键adminPassword默认值为admin888标准的字段说明如下:

·adminName 管理员账号

·adminPassword 管理员密码

2.2.4 admin的详细设计如图2-2所示

图2-2

3.系统管理

3.1设计说明

本设计使用的JSP引擎是Tomcat6.0,使用IDE为 MyEclipse8.0。

连接数据库使用的建立连接桥来连接数据库,因此在设计系统之前在本地数据源新建mytest的系统数据源,方便实验Java连接数据库。

3.2 页面管理

本系统所有的JSP页面都保存在KO目录中。

用户可以通过在浏览器的地址栏中输入http://127.0.0.1:8080/KO/index.jsp来访问该主页。

3.3.3 JavaBean

本系统使用的Javabean的包名均为com.其中,BaseConn.java为链接数据库的JDBC,CheckAdmin.java为检查管理员,CheckLogin.java为检查普通用户

3.4后台设计

后台主要为注册用户的相关操作,比如增加,删除,修改,搜索等

4.模型图

5.会员注册

要登录该网站就必须要有会员名,因此如果没有成为会员的用户必须注册会员。在填写注册信息的使用必须填写会员名,登录密码。

5.1 模型(Javabean

描述注册信息的Javabean中要有会员的名称、密码、年龄、性别、邮箱、电话号码以及一个注册提示信息。

在CheckLogin.java对这些信息进行描述。具体代码如下:

package com;

import java.sql.*;

public class CheckLogin {

/**

 * 检测用户登录信息

 * @param String userName

 *                   用户登录的用户名

 * @param String userPassword

 *                   用户登录的密码                  

 * @return String

 *         返回一个字符串:如果用户名已经在数据库存在并且用户输入的密码也正确

                                返回字符串 SUCCESS_LOGIN

 *                         如果用户名已经在数据库存在但是输入的密码不正确

                               返回字符串 WRONG_PASSWROD

 *                         如果用户名不存在返回字符串 NONE_USER 

 * */

public String checklogin(String userName,String userPassword) 

throws SQLException,ClassNotFoundException

{

BaseConn conn = null;

try

{

conn = new BaseConn();

//创建一个用预处理的SQL语句

String sql = "select * from userinfo where userName=?";

//创建一个预处理SQL对象

PreparedStatement ps = conn.preparedStatement(sql);

ps.setString(1,userName);

//从数据库中查询该用户名是否在数据库存在

ResultSet rs = conn.executeQuery();

if(rs.next())

{

if(rs.getString("userPassword").equals(userPassword))

{

return "SUCCESS_LOGIN";

}

else

return "WRONG_PASSWORD";

}

else

return "NONE_USER";

}catch(SQLException ex)

{

ex.printStackTrace();

throw ex;

}catch(ClassNotFoundException ex)

{

ex.printStackTrace();

throw ex;

}

finally

{

conn.closeDB(); //关闭数据库连接,释放JDBC资源

}

}

/**

 * 如果是新用户时,将用户登录用户名和密码保存到数据库中

 * */

public boolean saveToDataBase(String userName,String userPassword)

throws SQLException,ClassNotFoundException

{

BaseConn conn = null;

        try

        {

        conn = new BaseConn();

        String sql = "insert into userinfo(userName,userPassword) values(?,?)";

        PreparedStatement ps = conn.preparedStatement(sql);

        ps.setString(1,userName);

        ps.setString(2,userPassword);

        conn.executeUpdate();

        return true;

        }catch(SQLException ex)

        {

        ex.printStackTrace();

        throw ex;

        }catch(ClassNotFoundException ex)

        {

        ex.printStackTrace();

        throw ex;

        }finally

        {

        conn.closeDB(); //关闭数据库连接,释放JDBC资源

        }

   }

}

5.2 视图(JSP页面)

本模块有两个视图,register.jsp与register_post.jsp.一个提供用户填写注册信息,一个提交用户提供注册信息,把会员填写的基本信息写入userinfo表。 注册页面的效果图如图5-1所示

图 5-1

该页面提交给了register_post.jsp

register_post.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<%@page import="com.CheckLogin"%>

<jsp:useBean id="check" class="com.CheckLogin"/>

<html>

  <head>

       <title>注册吧^_^</title>

 <link rel="stylesheet" type="text/css" href="styles.css">

  </head>

<style>

 <body>

<%       request.setCharacterEncoding("gbk");

    

    //获取用户昵称

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

    

    //获取用户密码

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

    

    //将获取到的用户登录信息与数据库中保存的用户信息进行比较

    String loginMsg = check.checklogin(userName,userPassword);

    if(loginMsg.equals("SUCCESS_LOGIN"))

    {

      out.println("该用户已经存在,请重新选择用户名");      

    }

    else if(loginMsg.equals("WRONG_PASSWORD"))

    {

      out.println("该用户已经存在,请重新选择用户名");

    }

    else if(loginMsg.equals("NONE_USER"))

    {

            boolean sf = check.saveToDataBase(userName,userPassword);

            if(sf)

            {      

            out.println("注册成功");

       %>

        <br>

             <a href="login.jsp">返回登录</a>

       <%

            }

    }

    else

    {

        out.println("该用户名已经存在,请选择另一个用户名注册");

    }    

  %>

  </body>

</html>

6.会员登录

用户在此页面输入自己的用户名、密码登录该网站,由于本设计只设计了会员管理系统,模块之中只有个人中心是有效模块。会员进行个人中心能进行相关操作。

6.1 模型(Javabean

此意注册为同一Javabean,CheckLogin.java

6.2 视图(JSP视图)

本模块有两个个视图:login.jsp提供给用户填写登录信息,checkLogin.jsp是在验证并提交用户填写的登录信息,在主页面提供给会员该网站的全部功能。

登录页面的效果图如图6-1所示

图 6-1

其中,checkLogin.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<jsp:useBean id="check" class="com.CheckLogin"/>

<%    request.setCharacterEncoding("GBK");

  //获取用户昵称

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

    //获取用户密码

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

    //将获取到的用户登录信息与数据库中保存的用户信息进行比较

    String loginMsg = check.checklogin(userName,userPassword);

    if(loginMsg.equals("SUCCESS_LOGIN")) {    

session.setAttribute("user",userName);//建立session对象以便以后对登陆作验证

    response.sendRedirect("welcome.jsp");      

    }

    else if(loginMsg.equals("WRONG_PASSWORD"))

    {

      out.println("你输入的用户名或密码错误,请检正后重新输入");

    }

    else if(loginMsg.equals("NONE_USER"))

    {

        out.println("用户名不存在!!!");

    }    

  %>

<html><<head><link rel="stylesheet" type="text/css" href="styles.css"></head><body><a href=login.jsp>返回</a></body></html>

7.主页面

设为主页面为welcome.jsp

登陆后的显示为图7.1

具体代码如下:

welcome.jsp

<%@ page language="java" contentType="text/html; charset=gbk"

pageEncoding="GB18030" import="java.sql.*,java.util.*,java.io.*"%>

<%@include file="conn.jsp"%>

<%@include file="config.jsp"%>

<%

//当用户登入此页时,到根目录box目录新建一个以此用户名为命名的目录

String Save_Location=getServletContext().getRealPath("/")+"box//";

    try{

if (!(new java.io.File(Save_Location).isDirectory())) {//如果文件夹不存在

new java.io.File(Save_Location).mkdir();      //不存在 文件夹,则建立此文件夹

new java.io.File((Save_Location)+id+"//").mkdir();    //创建文件夹,命名为当前用户的名字

    }

else  {//存在excel文件夹,则直接建立此文件夹    

new java.io.File((Save_Location)+id+"//").mkdir();      //创建文件夹,命名为当前用户的名字

}

}catch(Exception e){

e.printStackTrace();        //创建文件夹失败   

out.print("error");

return;

    }

    File userBox=new File((Save_Location)+id+"//");

    File userBoxfile[]=userBox.listFiles();

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>欢迎使用网络硬盘</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<link rel="stylesheet" type="text/css" href="styles.css">

</head>

<body>

<br />

<table width="809" height="204" border="1" align="center">

<tr>

<td height="26" align="left">

<font color="red">欢迎

<%=session.getAttribute("user")%>的到来!</font><font color="#0000ff">                                        </font>         <a href="update.jsp?userName=<%=session.getAttribute("user")%>">修改密码</a> <a href="logout.jsp">退出登录</a>

<br>

    </td>

    </tr>

<tr>

<td height="58" align="left" valign="top"><a href="box_upload.jsp"><img src="images/box-upload.jpg" width="131" height="45"></a>

<% for(int i=0;i<userBoxfile.length;i++){%>

  <tr><td height="22">

<p><font color="#FF00FF"><%=userBoxfile[i].getName()%></font></p></td><td height="25">

<span style="font-size: 9pt">

 <a href="box_download.jsp?filename=<%=userBoxfile[i].getName()%>" target=_top>

<font color="#0A9EE4">下载</font></a></span></td>

<td height="25"><span style="font-size: 9pt">

<a href="box_del.jsp?action=confirm&filename=<%=userBoxfile[i].getName()%>" target=_top>

<font color="#0A9EE4">删除</font></a></span>

</td>

  </tr>

<%%>

</td>

</tr>

<tr align="center">

<td height="26" align="center">  <font color="#c0c0c0">

 

    版本信息:重庆理工大学软件工程课程设计软件二班王兴龙</font></td>

  </tr>

    </table>

</body>

</html>

8.上传功能

8.1上传功能运用jspSmartUpload.jar组件,方便,灵活

上传页面用box_upload_do.jsp

具体代码如下:

<%@ page contentType="text/html; charset=gbk" language="java"

import="java.util.*,com.jspsmart.upload.SmartUpload" errorPage=""%>

<%@ include file="conn.jsp"%>

<%@ include file="config.jsp"%>

<%

// 新建一个SmartUpload对象

SmartUpload su = new SmartUpload();

// 上传初始化

su.initialize(pageContext);

// 设定上传限制

// 1.限制每个上传文件的最大长度。

su.setMaxFileSize(5000000);

// 2.限制总上传数据的长度。

su.setTotalMaxFileSize(150000000);

// 3.设定允许上传的文件(通过扩展名限制)。

su.setAllowedFilesList("rar,zip,txt.mp3,jpg,gif,ppt,doc,xls,bmp,wav,mid,dat,ppt");

// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。

// su.setDeniedFilesList("exe,bat,jsp,htm,html,asp,php,com");

// 上传文件

su.upload();

// 将上传文件全部保存到指定目录

String cqutroot = dirPath.replace('\\''/');

su.save(cqutroot + "box/" + id);

out.print("<script>");

out.print("alert('文件上传成功!');");

out.print("location.href='welcome.jsp';");

out.print("</script>");

%>

上传页面为upload.jsp效果为图8.1

8.1

该页面为POST方式,提交到了box_upload_do.jsp,代码如下:

<%@ page contentType="text/html; charset=gbk" language="java"

import="java.util.*,com.jspsmart.upload.SmartUpload" errorPage=""%>

<%@ include file="conn.jsp"%>

<%@ include file="config.jsp"%>

<%

// 新建一个SmartUpload对象

SmartUpload su = new SmartUpload();

// 上传初始化

su.initialize(pageContext);

// 设定上传限制

// 1.限制每个上传文件的最大长度。

su.setMaxFileSize(5000000);

// 2.限制总上传数据的长度。

su.setTotalMaxFileSize(150000000);

// 3.设定允许上传的文件(通过扩展名限制)。

su.setAllowedFilesList("rar,zip");

// 4.设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html扩展名的文件和没有扩展名的文件。

su.setDeniedFilesList("exe,bat,jsp,htm,html,asp,php,com");

// 上传文件

su.upload();

// 将上传文件全部保存到指定目录

String cqutroot = dirPath.replace('\\''/');

su.save(cqutroot + "box/" + id);

out.print("<script>");

out.print("alert('文件上传成功!');");

out.print("location.href='welcome.jsp';");

out.print("</script>");

%>

9.下载文件

9.1 jspSmartUpload.jar下载对中文支持不是很好,所以我用I/O

box_download.jsp,具体代码如下:

<%@ page language="java" contentType="text/html; charset=gbk" import="com.jspsmart.upload.*,java.sql.*,java.io.*" %>

<%@ include file="config.jsp"%>

<%@ include file="conn.jsp"%>

<%

  java.io.BufferedInputStream bis=null;

  java.io.BufferedOutputStream  bos=null;

try{

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

             filename=new String(filename.getBytes("iso8859-1"),"gb2312");

 response.setContentType("application/x-msdownload");

 response.setHeader("Content-disposition","attachment; filename="+new String(filename.getBytes("gb2312"),"iso8859-1"));

 bis =new java.io.BufferedInputStream(new java.io.FileInputStream(config.getServletContext().getRealPath("box/"+id+"/" + filename)));

 bos=new java.io.BufferedOutputStream(response.getOutputStream()); 

 byte[] buff = new byte[2048];

 int bytesRead;

 while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {

  bos.write(buff,0,bytesRead);

 }

}

catch(Exception e){

 e.printStackTrace();

}

finally {

 if (bis != null)bis.close();

 if (bos != null)bos.close();

}

%> 

10.删除文件

用户上传错误时需删除文件。

box_del.jsp,具体代码如下

<%@ page language="java" contentType="text/html; charset=gbk"

pageEncoding="GB18030" import="java.sql.*,java.util.*,java.io.*"%>

<%@ include file="config.jsp"%>

<%@ include file

抱歉!评论已关闭.