java web实习报告Word文件下载.docx
- 文档编号:22718161
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:32
- 大小:25.04KB
java web实习报告Word文件下载.docx
《java web实习报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《java web实习报告Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
int
tempid
integer.parseint(id);
try
this.con.createstatement();
stmt.execute("
delete
from
shop_info
where
product_id="
+
tempid);
}
catch
(exception
e)
e.printstacktrace();
finally
close(this.con,
stmt,
null);
}}
总而言之,这次实训对我的救济很大,我工作会很有从中学到了什么是团队协作,正所谓连合便是气力,不仅如此,我还学到了许多的专业知识,积聚了一些履历。
我想,对于我以后的工作会很有救济,希望还能有更多像这样的机会让我可以熬炼我本身。
web邮件学习commons-fileupload-1.1
1.ar
上传文件总结:
1、
验证是否要处理的是上传文件
servletfileupload.ismultipartcontent(request)
2、
创建diskfileitemfactory
对象并对其初始化设置
diskfileitemfactory
factory
new
diskfileitemfactory();
factory.setsizethreshold(20
*
1024);
factory.setrepository(factory.getrepository());
3、
创建servletfileupload
对象并设置其编码方式
servletfileupload
upload
servletfileupload(factory);
upload.setheaderencoding("
gbk"
);
4、
开始获取上传文件的集合:
formlists
upload.parserequest(request);
5、
设置上传文件允许的大小
size
2
1024
1024;
6、
循环遍历formlists集合来根据其元素的类型(普通表单域还是文件域)进行赋值还是上传功能
iterator
iter
formlists.iterator();
while
(iter.hasnext())
fileitem
formitem
(fileitem)
iter.next();
7、
是文件域则执行上传:
具体做法:
(1)、获取文件路径全名:
string
name
formitem.getname();
(2)、判断文件名后缀是否符合要求:
!
name.endswith("
mp3"
)
(3)、判断文件大小是否符合要求formitem.getsize()
>
if/else(4)、都符合要求则上传:
第一步:
判断文件的名称不能为空(formitem.getname())、大小不能为0
(formitem.getsize()),如果不符合要求则continue执行下一循环
第
二步:
获取文件的单纯文件名称:
name.substring(name.lastindexof("
\"
1,
name.length());
三步:
设置保存到的服务器地址:
filedir
("
file/"
"
单纯名称;
file
savefile
file(服务器地址);
四步:
上传:
formitem.write(savefile);
、
是普通表单域则将表单项的值赋值给相干工具变量,如javabean(每一次循环将该次对应的表单项的值付
给适当的变量对象)
string
formname
formitem.getfieldname();
获取普通表单项的名称
con
formitem.getstring("
用formname.equals(““)来判断下载文件具体方法:
获取服务器下载地址并将此地址字符串进行编码:
path=request.getparameter("
path"
创建下载目录:
file
file(path);
获取普通表单项的值并编码
path=new
string(path.getbytes("
iso-8859-1"
));
创建文件字节输入流
inputstream
in
fileinputstream(file);
创建输出流对象
outputstream
os
response.getoutputstream();
设置该输出流的应大头、编码等配置
response.addheader("
content-disposition"
attachment;
filename="
string(file.getname().getbytes("
),"
content-length"
file.length()
"
response.setcharacterencoding("
开始下载:
data
0;
((data
in.read())
!
=
-1)
os.write(data);
关闭输入输出流
os.close();
in.close();
邮件接收的方法:
dao:
创建邮件接收类:
store
思路:
创建properties类并添加属性->
创建session对象->
创建store对象并连接到服务器和编写关闭方法
获取全部已读邮件的名称集合的方法
返回string
获取全部已读或未读邮件的内容的方法返回list(包含邮件信息和附件状态,但不包含具体附件内容)
获取store对象->
获取pop3folder对象->
打开pop3folder邮件夹->
创建fetchprofile预提取对象并对其添加两个常用属性->
定义message[]对象数组并设为null->
获取全部已读邮件的uid字符串->
若字符串不为空则->
转换为数组并进行排序->
根据要求的已读或者未读条件来获取全部已读或未读邮件信息给message[]
(folder.search)->
后退三步-若字符串为空则->
获取全部未读邮件信息message[]---?
开始提取上述邮件数组中每一个邮件的详细信息->
循环遍历message[]数组->
定义mimemessage对象并赋值为数组元素->
获取邮件id、发件人、邮件时间->
根据编码类型获取邮件主题->
由自定义方法获取此邮件的附件对象(string[])->
message[i].getflags().getsystemflags().tostring();
->
如果判断返回的邮件有附件,则获取附件设置为1,否则设置为0(来控制页面中的附件图标的显示)->
将此邮件信息对象添加到list中。
向数据库中添加已读邮件的标记的方法:
iduid
address
获取指定邮件中附件的方法:
此方法中重点是对邮件内容的编码处置惩罚,故这里重点介绍主要功能语法:
(1)定义该邮件名称对应的所有附件连接字符串为超链接(附件之间用空格隔开)(string,由多个”附件序号=&
附件名称=&
邮件序号”组成),定义邮件名称字符串(已知条件)
(2)
multipart
(multipart)
part.getcontent();
得到该邮件全部的内容聚集,然后对其遍历以获取每一个multipart中每一个bodypart->
判断此bodypart是否为附件,若是附件则获取该附件的名称
并添加到
(1)中的毗连字符串中,连接字符串中附件序号为遍历变量j
最后:
counts
multipart.getcount();
bodypart对象的个数
//返回mimemultipart对象中保存的//关闭流
response.setcontenttype("
application/octet-stream"
for
(int
i
<
counts;
i++)
{}
getmailattach(multipart.getbodypart(i),
emailv);
并返回string[]
obj
邮件主题内容,
filename1
};
对输入的utf7编码的内容进行转码的方法
servlet:
下载附件servlet:
设置response.setcontenttype("
text/html;
charset=gbk"
)、
request.setcharacterencoding("
)->
创建httpsession对象->
创建servletoutputstream对象->
获取页面传递变量:
附件序号、附件名称;
获取session变量"
message"
将附件名称进行编码处理:
filename=new
string(filename.getbytes(),"
response.setheader("
"
+filename)->
由”message”获取multipart对象->
由multipart对象获取bodypart对象->
由bodypart对象获取inputstream对象->
开始下载:
c=0;
while((c=is.read())!
=-1){out.write(c);
}
收取邮件servlet(邮件的全部具体信息):
邮箱登陆的验证方法:
获取表单传递值的host
username
pwd->
用dao
(1)中的方法进行用户验证如果正确->
用session.setattribute的方法保存登陆的用户信息(以上三个)->
store.close();
获取当前分页页面中已读或未读的全部邮件的集合(包含邮件信息和附件状态,但不包含具体附件内容)
创建httpsession对象,并获session变量host
pwd和request变量"
flag"
和"
page"
request.setattribute("
flag)->
根据request变量”page”来判断是否已经开始分页浏览->
若没有则先执行dao(3)方法获取已读或未读的全部邮件聚集,然后执行自定义分页类中的初始化方法获取上述集合中的
第一页中的邮件聚集,并request.getsession().setattribute("
pagination"
分页类的实例化);
若已经开始分页,则将当前页page赋值为已经存在的session类型的分页类对象中的getpage方法中返回的page,并且执行自定义分页类中的类似初始化方法的获取当前页面集合的方法(具体看程序)
查看邮件详细信息:
(获取指定邮件的信息)
同dao(3)中的方法相似
不同之处是:
dao(3)查询的是全部已读或未读
而本案查询的是指定的邮件id
tools:
本案中主要为分页类的编写:
初始化获取
第一页的集合
获取已分页的当前页面的集合
获取全部记录数
获取最大页数
获取当前页数
获取分页导航
web总结java
总
1.sp运行原理
(1)用户通过客户端浏览器向服务器发送哀求。
(2)jsp文件将jsp引擎编译成java的class文件,即servlet。
(3)将产生的servlet加载到内存实行。
(4)servlet的运行结果以html(或xml)形式通过web服务器返回客户端的浏览器
2.eb项目设计
(1)公开目录
(2)web_inf目录(3)class目
3.sp的基本语法
(1)脚本元素:
声明、脚本段、表达式。
(2)脚本段:
<
%%>
(3)声明:
%!
%>
不会产生任何输出内容→声明全局变量。
(4)表达式:
%=
%>
(5)el表达式:
${
(6)指令元素:
%
@
不在客户端可见
(7)page指令、include指令、taglib指令
page指令:
language属性、contenttype(text/html)、text/plain
application/msword、application/x-msexecl、pageencoding、info、import属性.
include指令:
在jsp页面中静态包含一个文件
@include
file="
taglib指令:
%@taglib
uri="
标记库的uri地址"
prefix="
前缀名"
指令元素翻译阶段实行,动作元素实行阶段被实行。
jsp:
include>
用于包含其他文件能够是静态文件,也能够是动态文件。
?
/jsp:
包含动态文件时
用<
param>
传
(建一值)
考点:
4.令与动作的区别(include)
1.行时间不同
指令<
%@
include
是偏译时包含静态文件
动作<
include
page="
>
是运行时包含的文件
2.入内容不同
%@include
relatirveuri"
引入静态文本(html.jsp)。
jsp:
relativeuri"
flash="
true"
/>
引入执行页面或severlet的应答文本
5.sp内置对象
out,request,response,session,application,page,pagecontext,exception,config
request客户端向服务端发送哀求。
response用于服务器端封装jsp处理哀求后孕育发生的效果。
response对象的send
redirect(url)要领相当于两次哀求。
而<
forward>
在网址不变情况下内部跳转差别页面,但依旧属于同一次请求
6.ession和cookie的区别
1.放地点不同
session存放在服务器端,cookie存放在客户端的硬盘里
2.活时间
session随用户访问服务器而孕育发生,随客户下线或超时而消失
3.全性
session存放在服务器端,不克不及被修改,且随客户端浏览器的封闭而消散,安全性较好。
cookie存放在客户端,安全性较差
7.据库
java.sql.driver
java.sql.drivermanager——加载驱动程序
java.sql.connetion——表现数据库毗连工具,对数据库一切操作都在这个基础上
java.sql.statement——执行sql语句和返回结果
java.sql.resultset——结果集用来暂时存放数据库查询操作结
8.写程序的步骤
1.载驱动程序
class.forname("
com.mysql.jdbc.driver"
2.义所需连接数据库的地址
mysqlurl="
jdbc.mysql:
//host:
port/dbname"
3.立与数据库的连接
connection
conn=drivermannager.get
connection(url,"
登录数据库用户名"
密码"
4.明并执行sql语句
5.理返回的结果
6.闭对象
driverstr="
connstr="
jdbc:
mysql:
//localhost:
3306/book"
;
class
forname(driver
str)
conn=drivermanager.getconnection(connstr."
root"
."
123"
第4步:
建立语句对象
stmt=conn.createstatement()
第5步:
声明并执行sql语句
sql="
select*from
book"
resultset
rs=stmt.executequery(
sql);
第6步:
statement接口的3个方法:
1、resultset
executequery(string
sql)
2、int
execute
update(string
3、boolean
execute(string
resultset的方法:
1、boolean
next()
2、get
xxx()第7歩:
rs.close()stmt.close()con.close()
注:
关闭资源的顺序与打开资源次序恰好相反。
第8步:
异常处理
try{.........}catch(sqlexecption
ex){.........}9.java
bean
组件(可重用)
组件:
是一个独立的模块,外界可以不相识内部怎样实现,只需通过其提供的接口对组件举行访问即可,组件可重用。
特点:
1、实现代码重复使用;
2、易编写,易维护,易使用。
10.java
bean类的编码约定
1、类实现了java.io.serializable接口
2、必须放在某个package(包)中
3、类中要是有构造方法,那么这个要领是共有的,并且无参数
4、所有属性都是私有的(private修饰)
5、get
xxx:
用来获取属性,此方法是共有的
6、set
用来设置属性,此方法是共有的
7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”
8、类中的普通方法不得当上面的定名规矩,但这个方法必是public的。
3个标记:
usebean>
网页中创建javabean实例
setproperty>
用于为bean中的属性赋值
getproperty>
用于获取bean中属性的值<
id=”javabean实例名”class=”javabean对应的类名”
设置<
的属性
获取javabean实例指令的属性值,并将这个值转换成字符串显示到jsp页面。
11.servlet的生命周期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java web实习报告 web 实习 报告