实 习 报 告 本Word下载.docx

上传人:b****5 文档编号:21445583 上传时间:2023-01-30 格式:DOCX 页数:24 大小:577.72KB
下载 相关 举报
实 习 报 告 本Word下载.docx_第1页
第1页 / 共24页
实 习 报 告 本Word下载.docx_第2页
第2页 / 共24页
实 习 报 告 本Word下载.docx_第3页
第3页 / 共24页
实 习 报 告 本Word下载.docx_第4页
第4页 / 共24页
实 习 报 告 本Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

实 习 报 告 本Word下载.docx

《实 习 报 告 本Word下载.docx》由会员分享,可在线阅读,更多相关《实 习 报 告 本Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

实 习 报 告 本Word下载.docx

3收邮件

3

收取邮件

此功能为用户接收邮件,当用户登录进入系统时,若为系统用户则直接从本系统中收取未读邮件,显示在收件箱中,若为网络用户则从网络服务器获取未读邮件,显示在收件箱中。

鼠标点击

当用户选择收件箱功能时,在相应服务器中查询数据库中所有position为0(即在收件箱中)的邮件,显示在邮件列表中,未读邮件显示状态isRead(0);

当用户选择发件箱功能时,则去服务器数据库中查询所有position为1的邮件显示在其页面,状态isRead

(1);

当用户选择草稿箱功能时,则去服务器数据库中查询所有position为2的邮件显示在其页面;

当用户选择垃圾箱功能时,则去服务器数据库中查询所有position为3的邮件显示在其页面。

显示所有邮件列表

④显示邮件内容

4

查看邮件功能

当我们选中某个邮件的时候,会获取到邮件id和用户id,如果是本地用户的话,则根据id在MailDAO中调用queryLocalById(id)取出邮件的信息,显示在singleMail.jsp中。

点击主题超链接

根据接收到的用户名来判断是网络用户还是本地用户,再根据id调用DAO中的方法,取到邮件的详细信息,显示在页面中

邮件的详细信息

5回复/转发/删除功能

5

回复转发删除功能

当我们在收件箱、发件箱、草稿箱、垃圾箱中点击回复按钮时,会在数据库中查到该邮件信息,会跳转到回复页面,并且显示所有信息;

当点击转发时,在数据库中查到该邮件信息,会跳转到转发页面,显示除了收件人之外的所有信息;

当点击永久删除的时,会将该邮件从数据库中完全删除,如果点击的是删除,则只会将该文件移动到垃圾箱

单击回复转发或者删除

当我们点击的是回复的时候,会在回复页面显示收件人地址,主题,正文信息,如果点击的是转发,则会在转发页面显示主题,正文信息;

收件人地址,主题,正文信息,提示信息

6写邮件

6

发邮件功能

当我们点击写邮件的时候,在writeMail.jsp页面中输入收件人,正文,主题,选择是否添加附件;

当点击发送的时候,接受输入的邮件信息,并保存在数据库中,提示是否成功的信息

收件人,主题,正文

在页面中输入收件人,主题,正文信息,点击发送,保存到数据库中,如果发送成功,则提示你的邮件已发送,如果发送失败,则提示你的邮件发送失败。

提示信息

7密码修改

7

修改密码功能

当我们在菜单栏中点击密码修改按钮的时候,输入旧密码,如果输入的旧密码和你从数据库中取到的密码一样,则输入新密码和确认密码,当两次输入的密码一致的时候,会将修改后的密码保存到数据库中。

旧密码,新密码,确认密码

从数据库中取到该用户的密码和输入的旧密码进行比对,如果一致则输入新密码,确认密码,判断新密码和确认密码是否相同,如果相同则提示修改成功,否则提示修改密码失败。

8地址簿管理

8

地址簿管理

当我们点击地址簿的时候,在FriendDAO中调用list方法,在friendBook.jsp页面显示所有的联系人信息,如果选择修改功能,则接受页面点击修改后传递过来的id,调用FriendDAO中query(id)方法,将DTO对象传递到修改页面friendModify.jsp,输入你要修改的数据,提交修改之后接受修改后的信息,将修改后的信息保存到数据库中,跳到提示页面;

如果是删除,则接受页面点击修改后传递过来的id,调用FriendDAO中delete(id)方法,跳到提示页面。

修改的信息

如果点击的是修改,则将修改后的数据保存到数据库中,跳转到提示页面;

如果点击的是删除,则直接跳转到提示页面

2.数据库设计

1数据项分析

用户表:

【表名:

users】

(uname,upass)

联系人表:

friend】

(fid,uname,fname,nickname,counts)

邮件信息表:

email】

(eid,uname,flag,e_name,e_receive,e_subject,e_date,e_attach,e_content)

邮件类别表:

category】

(uname,categoryid,categoryname)

1新邮件2已读邮件3草稿箱4垃圾邮件5已发邮件

2数据表设计

a.表名:

users

字段名

含义

类型和长度

约束

uname

用户名

varchar(32)

主键notnull

upass

用户密码

notnull

b表名:

friend

fid

好友id

int

主键,自动增长

uname

用户名

notnull

fname

好友名称

nickname

好友昵称

varchar(16)

counts

好友亲密度

notnulldefault1

c表名:

email

描述

eid

邮件id

int

flag

1新邮件

2已读邮件

3草稿箱

4垃圾邮件

5已发邮件

default5

e_name

发件人名称

e_receive

收件人名称

varchar(80)

e_subject

邮件主题

varchar(max)

notnulldefault'

'

e_date

收件日期

e_attach

附件

notnulldefault'

e_content

邮件内容

varchar(150)

d.表名:

category

categoryid

类别

check(categoryidnotin(0,1,2,3,4,5,6))

categoryname

类别名称

3表的创建的实现

第一步:

创建数据库:

qqEmail;

mysql>

createdatabaseqqEmail;

第二步:

创建users表

createtableusers(

unamevarchar(32)primarykeynotnull,

upassvarchar(32)notnull

);

查看表结构:

descusers;

Email表

3.模块及部分代码

(1)启动服务

自动设置服务器端套接字,启动服务后监听客户端的请求,同时显示连接状态

和接收请求的信息。

publicclassUsersDAO{

//连接对象

privatestaticConnectionconn=null;

//定义创建语句对象:

向数据库发送sql语句用的

privateStatementstmt;

privatePreparedStatementps;

//定义结果集对象

privateResultSetrs;

//向数据库添加数据

//<

访问控制修饰符>

<

返回类型>

方法名([参数列表]){}

publicbooleanaddUser(UsersDTOuser){

booleanflag=false;

try{

//第一步:

获取连接对象

conn=DBManager.getConn();

//第二步:

写sql语句

Stringsql="

insertintousers(uname,upass)values(?

?

)"

;

//第三步:

获取预处理命令对象

ps=conn.prepareStatement(sql);

//第四步:

给问号设值

ps.setString(1,user.getUname());

ps.setString(2,user.getUpass());

//第五步:

执行sql语句

flag=!

ps.execute();

}catch(SQLExceptione){

e.printStackTrace();

}

returnflag;

}

publicbooleanupdateUser(UsersDTOuser,StringnewPass){

booleanflag=false;

conn=DBManager.getConn();

Stringsql="

updateuserssetupass=?

whereuname=?

andupass=?

"

ps=conn.prepareStatement(sql);

//给问号设值

ps.setString(1,newPass);

ps.setString(2,user.getUname());

ps.setString(3,user.getUpass());

flag=!

//删除用户

publicbooleandeleteUser(){

获取到连接对象

//第二步:

获取到创建语句对象

stmt=conn.createStatement();

写sql

deletefromuserswhereuname='

haha@'

andupass='

456'

//第四步:

stmt.execute(sql);

//根据条件查询用户(实现登录的功能)

publicbooleanisLogin(UsersDTOuser){

selectcount(*)fromuserswhereuname=?

rs=ps.executeQuery();

intcount=0;

while(rs.next()){

count=rs.getInt

(1);

}

if(count>

0){

flag=true;

}

//查询所有

publicvoidgetAllUsers(){

//获取连接对象

//创建语句对象Statement

//写sql语句

select*fromusers"

rs=stmt.executeQuery(sql);

//用rs.next()判断是否

//取光标指向这一行的值

//可以根据列的索引获取值,第一列的值的索引1,第二列的值的索引是

//还可以根据列的字段名获取值

Stringuname=rs.getString("

uname"

);

Stringupass=rs.getString("

upass"

System.out.println(uname+"

-----------"

+upass);

}

//根据条件查询用户

publicbooleanisRegister(Stringuname){

"

ps.setString(1,uname);

}

(2)登录注册功能:

1)首先访问登录页面,登录页面提供用户名和密码的输入框,输入用户名和密码,点击“登录”按钮,如果用户名和密码正确,则进入系统的首页;

如果用户名和密码错误,则返回到登录页面,并进行提示。

2)在访问页面上提供“注册”按钮,如果没有用户名和密码,则点击“注册”,进入到注册页面,在注册页面正确填写信息之后,点击“提交注册”,则将用户信息保存。

如果注册成功,进入提示页面提示“注册成功”,否则提示“注册失败”。

publicclassLoginServletextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

//表单提交使用post方法

//用一个request对象中的getParameter("

)的方法获取到页面输入的值

//获取到用户输入的uname的值

Stringuname=request.getParameter("

username"

//获取到用户输入的upass的值

Stringupass=request.getParameter("

password"

//获取到用户输入的验证码

Stringcode=request.getParameter("

checkCode"

//这个是后台自动生成的验证码

StringcheckCode=(String)request.getSession().getAttribute(

"

code"

//判断用户输入的验证码和自动生成验证码是否相同

if(code.equalsIgnoreCase(checkCode)){

//调用DAO中是否可以登录的方法

//创建DAO对象

UsersDAOuDAO=newUsersDAO();

UsersDTOuser=newUsersDTO();

user.setUname(uname);

user.setUpass(upass);

booleanflag=uDAO.isLogin(user);

if(flag){

//可以登录,跳转到主页面email_main.jsp

request.getSession().setAttribute("

user.getUname());

request.getRequestDispatcher("

email_main.jsp"

).forward(request,

response);

}else{

//登录失败,跳转到login.jsp

//给他提示用户名或密码错误

request.setAttribute("

UErr"

"

用户名或密码错误"

login.jsp"

}else{

//验证码错误,给页面提示信息

request.setAttribute("

"

验证码输入错误"

request.getRequestDispatcher("

.forward(request,response);

(3)邮件发送

publicclassSendMailServletextendsHttpServlet{

//接受页面传来的参数值

//因为我们写邮件的时候用到了上传图片或者文件,所以在这里不能一般的方式来接收参数

//必须用到SmartUpload类来解析

//第一:

创建解析工具

SmartUploadsu=newSmartUpload();

//第二:

通过工具对request中的数据进行初始化操作

su.initialize(getServletConfig(),request,response);

//第三:

设置文件的限制信息(设置上传文件的格式)

su.setAllowedFilesList("

jpg,jpeg,bmp,gif,png,zip,txt"

//第四:

设置文件上传的大小

su.setMaxFileSize(1024*1024*2);

//开始接受客户端上传

su.upload();

Requestreq=su.getRequest();

//接受收件人

Stringreceiver=req.getParameter("

receiver"

//主题

Stringsubject=req.getParameter("

subject"

//正文

Stringcontent=req.getParameter("

content"

//uname

Stringuname=(String)re

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1