# 基于JSP的网络硬盘
# 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所示
![](http://www.writebug.com/myres/static/uploads/2021/10/19/cfa43ba5e8226890a1f20e5fcc4cd103.writebug)
### 2.2.3 admin表的字段
管理员的注册信息存入admin表中,admin的主键是adminName,默认值为admin,键adminPassword默认值为admin888标准的字段说明如下:
- adminName 管理员账号
- adminPassword 管理员密码
### 2.2.4 admin的详细设计如图2-2所示
![](http://www.writebug.com/myres/static/uploads/2021/10/19/d7a05c311514516b10fe6948fbc9eab9.writebug)
# 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 JavaBean
本系统使用的Javabean的包名均为com.其中,BaseConn.java为链接数据库JDBC,CheckAdmin.java为检查管理员,CheckLogin.java为检查普通用户。
## 3.4 后台设计
后台主要为注册用户的相关操作,比如增加,删除,修改,搜索等
# 4 模型图
![](http://www.writebug.com/myres/static/uploads/2021/10/19/9c9d074e42c56b0601c25739514fcd27.writebug)
# 5 会员注册
要登录该网站就必须要有会员名,因此如果没有成为会员的用户必须注册会员。在填写注册信息的使用必须填写会员名,登录密码。
## 5.1 模型(Javabean)
描述注册信息的Javabean中要有会员的名称、密码、年龄、性别、邮箱、电话号码以及一个注册提示信息。
在CheckLogin.java对这些信息进行描述。具体代码如下:
```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表。
**注册页面的效果图**如下图所示:
![](http://www.writebug.com/myres/static/uploads/2021/10/19/e4c84e6915406795711e11d91668b9d7.writebug)
该页面提交给了register_post.jsp。
register_post.jsp代码如下所示:
```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("该用户名�