java web实习报告范文
目录
正文
第一篇:java web 开发技术实验报告模版
项目综合实践报告 题目:html+css 旅游门户网站设计
班级:计算机2014(1)姓名:丁一学号:954211完成日期:2014.9.14
一、分析设计
用文字、图表等说明设计思路及设计结果。
二、主要源代码
html
css
三、效果图
屏幕抓图
四、调试过程
(调试过程中碰到的问题及解决方法)
五、实验结论
1、实验结果图
2、实验心得体会
第二篇:java web课程设计实训报告
java web课程设计实训报告
我们进行了为期一周的java web的课程实训。在这次实训中,我觉得我学到了很多东西。这次,老师给我们安排了一个项目,是关于商店购物的。首先,我们划分了几个小组,每组4-6人,每个人有每个人的工作,每个人的工作完成后整合到一起,这个项目就完成了。我在我们小组的工作是写一段删除商品的java代码。因为我的基础比较差,所以我分担的工作比较少,下面是我做的一段代码:
public void deleteproduct(string id) {
statement stmt = null;
connecttodb();
int tempid =
integer.parseint(id);
try {
stmt =
this.con.createstatement();
stmt.execute("delete from
shop_info where product_id=" + tempid);
} catch (exception e) {
e.printstacktrace();
} finally {
close(this.con, stmt, null); }}
总而言之,这次实训对我的帮助很大,我工作会很有从中学到了什么是团队协作,正所谓团结就是力量,不仅如此,我还学到了很多的专业知识,积累了一些经验。我想,对于我以后的工作会很有帮助,希望还能有更多像这样的机会让我能够锻炼我自己。
第三篇:java web邮件学习
commons-fileupload-1.1.1.jar 上传文件总结:
1、 验证是否要处理的是上传文件
servletfileupload.ismultipartcontent(request)
2、 创建diskfileitemfactory 对象并对其初始化设置
diskfileitemfactory factory = new diskfileitemfactory();
factory.setsizethreshold(20 * 1024);
factory.setrepository(factory.getrepository());
3、 创建servletfileupload 对象并设置其编码方式
servletfileupload upload = new servletfileupload(factory);
upload.setheaderencoding("gbk");
4、 开始获取上传文件的集合:
formlists = upload.parserequest(request);
5、 设置上传文件允许的大小
int 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() > size
if/else(4)、都符合要求则上传:
第一步:判断文件的名称不能为空(formitem.getname())、大小不能为0
(formitem.getsize()),如果不符合要求则continue执行下一循环
第 二步: 获取文件的单纯文件名称: name.substring(name.lastindexof("\")
+ 1, name.length());
第 三步: 设置保存到的服务器地址:filedir ("file/") + "\" + 单纯名称;file savefile = new file(服务器地址);
第 四步: 上传: formitem.write(savefile);
、 是普通表单域则将表单项的值赋值给相关对象变量,如(更多内容请访问好范 文网:wWW.HAowORd.Com)javabean(每一次循环将该次对应的表单项的值付
给适当的变量对象)
string formname = formitem.getfieldname(); 获取普通表单项的名称
string con = formitem.getstring("gbk");
用formname.equals(““)来判断
下载文件具体方法:
1、 获取服务器下载地址并将此地址字符串进行编码:
string path=request.getparameter("path");
2、 创建下载目录:
file file = new file(path);获取普通表单项的值并编码 path=new string(path.getbytes("iso-8859-1"));
3、 创建文件字节输入流
inputstream in = new fileinputstream(file);
4、 创建输出流对象
outputstream os = response.getoutputstream();
5、 设置该输出流的应大头、编码等配置
response.addheader("content-disposition", "attachment;filename="
+ new string(file.getname().getbytes("gbk"),"iso-8859-1"));
response.addheader("content-length", file.length() + ""); response.setcharacterencoding("gbk");
6、 开始下载:
int data = 0;
while ((data = in.read()) != -1)
{ os.write(data); }
7、 关闭输入输出流
os.close();
in.close();
邮件接收的方法:
dao:
1、 创建邮件接收类:store
思路:创建properties类并添加属性->创建session对象->创建store对象并连接到服务器和编写关闭方法
2、 获取全部已读邮件的名称集合的方法 返回string
3、 获取全部已读或未读邮件的内容的方法返回list(包含邮件信息和附件状态,但不包含具体附件内容) 思路: 获取store对象->获取pop3folder对象->打开pop3folder邮件夹->创建fetchprofile预提取对象并对其添加两个常用属性->定义message[]对象数组并设为null->获取全部已读邮件的uid字符串->若字符串不为空则->转换为数组并进行排序->根据要求的已读或者未读条件来获取全部已读或未读邮件信息给message[] (folder.search)->后退三步-若字符串为空则->获取全部未读邮件信息message[]---?开始提取上述邮件数组中每一个邮件的详细信息->循环遍历message[]数组->定义mimemessage对象并赋值为数组元素->获取邮件id、发件人、邮件时间->根据编码类型获取邮件主题->由自定义方法获取此邮件的附件对象(string[])->message[i].getflags().getsystemflags().tostring();->如果判断返回的邮件有附件,则获取附件设置为1,否则设置为0(来控制页面中的附件图标的显示)->将此邮件信息对象添加到list中。
4、 向数据库中添加已读邮件的标记的方法:iduid address
5、 获取指定邮件中附件的方法:此方法中重点是对邮件内容的编码处理,故这里重点介绍主要功能语法: 思路:(1)定义该邮件名称对应的所有附件连接字符串为超链接(附件之间用空格隔开)(string,由多个”附件序号=&附件名称=&邮件序号”组成),定义邮件名称字符串(已知条件)
(2) multipart multipart = (multipart) part.getcontent();得到该邮件所有的内容集合,然后对其遍历以获取每一个multipart中每一个bodypart->判断此bodypart是否为附件,若是附件则获取该附件的名称 并添加到(1)中的连接字符串中,连接字符串中附件序号为遍历变量j
最后: int counts = multipart.getcount();
bodypart对象的个数 //返回mimemultipart对象中保存的//关闭流 response.setcontenttype("application/octet-stream");
for (int i = 0; i < counts; i++) {} getmailattach(multipart.getbodypart(i), emailv);
并返回string[] obj = { 邮件主题内容, filename1 };
6、 对输入的utf7编码的内容进行转码的方法
servlet:
下载附件servlet:
思路:设置response.setcontenttype("text/html;charset=gbk")、
request.setcharacterencoding("gbk")->创建httpsession对象->创建servletoutputstream对象->获取页面传递变量:附件序号、附件名称;获取session变量"message"->将附件名称进行编码处理:filename=new
string(filename.getbytes(),"iso-8859-1")->response.setheader("content-disposition","attachment;filename="+filename)->由”message”获取multipart对象->由multipart对象获取bodypart对象->由bodypart对象获取inputstream对象->开始下载:
int c=0;
while((c=is.read())!=-1){out.write(c);}
收取邮件servlet(邮件的全部具体信息):
1、 邮箱登陆的验证方法:
思路:获取表单传递值的host username pwd->用dao(1)中的方法进行用户验证如果正确->创建httpsession对象->用session.setattribute的方法保存登陆的用户信息(以上三个)->
store.close();
2、 获取当前分页页面中已读或未读的全部邮件的集合(包含邮件信息和附件状态,但不包含具体附件内容) 思路:创建httpsession对象,并获session变量host username pwd和request变量"flag"和"page"-> request.setattribute("flag", flag)->根据request变量”page”来判断是否已经开始分页浏览->若没有则先执行dao(3)方法获取已读或未读的全部邮件集合,然后执行自定义分页类中的初始化方法获取上述集合中的第一页中的邮件集合,并request.getsession().setattribute("pagination", 分页类的实例化);->若已经开始分页,则将当前页page赋值为已经存在的session类型的分页类对象中的getpage方法中返回的page,并且执行自定义分页类中的类似初始化方法的获取当前页面集合的方法(具体看程序)
3、 查看邮件详细信息:(获取指定邮件的信息)
思路:同dao(3)中的方法相似 不同之处是:dao(3)查询的是全部已读或未读 而本案查询的是指定的邮件id tools:
本案中主要为分页类的编写:
1、 初始化获取第一页的集合
2、 获取已分页的当前页面的集合
3、 获取全部记录数
4、 获取最大页数
5、 获取当前页数
6、 获取分页导航
第四篇:java web总结
java web 总结
1.jsp运行原理
(1)用户通过客户端浏览器向服务器发送请求。
(2)jsp文件将jsp引擎编译成java的class文件,即servlet。
(3)将产生的servlet加载到内存执行。
(4)servlet的运行结果以html(或xml)形式通过web服务器返回客户端的浏览器。
2.web项目设计
(1)公开目录(2)web_inf目录(3)class目录
3.jsp的基本语法
(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:include>?</jsp:include>包含动态文件时
用<jsp:param>传 (建一值)
考点:
4.指令与动作的区别(include)
1.执行时间不同
指令<%@ include file=" "%>是偏译时包含静态文件
动作<jsp:include page=" ">?</jsp:include>是运行时包含的文件
2.引入内容不同
指令<%@include file="relatirveuri"%>引入静态文本(html.jsp)。
动作<jsp:include page="relativeuri" flash="true"/>引入执行页面或severlet的应答文本。
5.jsp内置对象
out,request,response,session,application,page,pagecontext,exception,config
request客户端向服务端发送请求。
response用于服务器端封装jsp处理请求后产生的结果。
response对象的send redirect(url)方法相当于两次请求。
而<jsp:forward>在网址不变情况下内部跳转不同页面,但依旧属于同一次请求
6.session和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.定义所需连接数据库的地址
string mysqlurl="jdbc.mysql://host:port/dbname"
3.建立与数据库的连接
connection conn=drivermannager.get connection(url,"登录数据库用户名","
密码")
4.声明并执行sql语句
5.处理返回的结果
6.关闭对象
string driverstr="com.mysql.jdbc.driver"
string connstr="jdbc:mysql://localhost:3306/book";
class forname(driver str)
connection conn=drivermanager.getconnection(connstr."root"."123") 第4步:建立语句对象
statement stmt=conn.createstatement()
第5步:声明并执行sql语句
string sql="select*from book";
resultset rs=stmt.executequery( sql);
第6步:
statement接口的3个方法:1、resultset executequery(string sql)
2、int execute update(string sql)
3、boolean execute(string sql)
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 xxx:用来设置属性,此方法是共有的
7、对于boolean类型的成员变量允许使用“is”代替“get”和“set”
8、类中的普通方法不适合上面的命名规则,但这个方法必是public的。
3个标记:
<jsp:usebean>网页中创建javabean实例
<jsp:setproperty>用于为bean中的属性赋值
<jsp:getproperty>用于获取bean中属性的值
<jsp:usebean>id=”javabean实例名”class=”javabean对应的类名” <jsp:setproperty> 设置<jsp:usebean>的属性
<jsp:getproperty>获取javabean实例指令的属性值,并将这个值转换成字符串显示到jsp页面。
11.servlet的生命周期
(1)当客户第一次请求servlet时,servlet被加载到内存 容器会创建servlet实例,并调用其init()方法进行初始化工作。
(2)容器创建请求对象,然后调用servlet的service()方法为客户提供服务。
(3)当servlet不再被需求时,容器调用servlet的destory()方法将servlet实例销毁。
12.servlet开发
引入import.javax.servlet.* 和import.javax,servlet.http.*包
13.servlet过滤器
servlet过滤器是一种java组件,它位于客户端和处理程序之间
servlet过滤器工作原理
14.model1和model2
model1:jsp+javabean
model2:jsp+servlet+javabean
model1中,jsp页面实现页面显示、业务逻辑和流程控制,数据处理由javabean完成。
优点:进行快速和小规模的应用开发时优势非常明显。
缺点:不利于web应用的扩展和更新;调试和排错困难。
model2中,mvc模式--->模型-视图-控制器.即把web应用的输入输出和处理流程按照model.view和controller分成三层。
model1和model2的区别:
model1和model2实际上就是对采用jsp技术开发的web应用的不同模型的描述。model1采用jsp+javabean技术开发web应用,它比较适合小规模应用的开发,效率较高,易于实现,但由于在jsp页面中内嵌了大量的java代码,以至于当业务逻辑复杂时,代码可维护性、可扩展性和可重用性就会下降;model2采用jsp+servlet+javabean技术开发web应用,该模型基于mvc模式,完全实现了页面显示和逻辑的分离,它充分利用了jsp和servlet两种技术的优点,jsp更适合前台页面的开发,而servlet更擅长服务器端程序的编写,model2分工明确,更适合大型项目的开发和管理。
视图(view)用于与用户交互,可以用html.jsp实现。
15.模型(model)用于表示业务数据和实现业务逻辑,可以用javabean实现 控制器(controller)完成流程控制,它接收来自视图层用户输入的数据,并调用相应的模型进行处理,最后选择合适的视图去响应用户。控制层可以用servlet实现。
优点:mvc模式完全实现了页面表示和业务逻辑的分离;
mvc优势之一在于三层各司其职,互不干涉。
缺点:没有明确的定义。
模型层为javabean,实现了数据的表示和业务逻辑,视图层为jsp页面,只负责显示功能。
控制器为servlet,负责接收用户的请求,设置javabean属性,调用javabean完成业务处理,最后将处理结果交给jsp页面显示。
16.自定义标签
对隐式对象的操作、处理表单、访问数据库及其他企业级服务。
自定义标签种类:
1.不带有属性和标签体:<my prefix:sometag/>
2.带有属性没有标签体的标签:<myfrefix.sometag . myattribute:"test"/>
3.带有属性带有标签体:<myprefix:someteg myattribute="test"/>mybody
</myprefix:sometag>
17.el表达式
基本语法${expr}
功能:对属性对象的简明访问:${user}
对属性对象的属性访问:${customer.firstname}
对属性集合元素的访问:对数组和list:${variable[index]}对map:${variable[key]}
对请求参数cookie等的简单访问.
请求参数${param.custid}
cookie对象:${cookie.usercookie}
18."."操作符和"[ ]"操作符
${user.address}=${user[address]}
访问数组和集合元素,需使用[ ]
${class[0].name}=${class[0][name]}
${param.username}={%=request.getparameter("username")%}
19."."与"[ ]"使用存在差异
1.当访问的数据中包含一个特殊字符(如:"."或"_"时),就必须用"[ ]"操作符
2.当动态取值时必须使用"[ ]"操作符,"."操作符只能取到静态的值
注:当"[ ]"操作符中的属性名为常量时必须用''''引起,否则将会当做变量来处理.
20.sql标签
1.<sql:set data source>标签
2.<sql:query>执行数据库查询
3.<sql:update>执行数据库更新
4.<sql:param>和<sql:dateparam>指明参数值
5.<sql:transaction>用于事务处理
21. tomcat的目录结构及描述:
bin放置启动和关闭tomcat的可执行文件和批处理文件
common放置在此目录中的jar、class文件,可以被此服务器下所有的web应用使用
conf放置tomcat的主要配置文件
logs放置tomcat的日志文件
server放置tomcat管理接口的应用
src放置tomcat相关的源代码
temp放置tomcat临时文件
webapps 放置tomcat应用的目录
work放置jsp页面翻译成对应的servlet类的目录
第五篇:java web总结
java web 总结
一
servlet的继承层次很多,但是我们web开发常用的也就是javax.servlet.http.httpservlet这个类,我们常用的 两个请求方法是doget(),dopost(),还有从父类继承过来的方法init()初始化,destroy()servlet销毁时会被调 用,getservletconfig()获得servletconfig对象,getservletinfo()返回有关servlet的信息,包括作 者、servlet版本等。
servlet的访问必须在web.xml,怎么配置会在下面举例。 常用方法:
1、request.setcharacterencoding("utf-8");//设置用post传递给服务器的参数编码方式
2、response.setcontenttype("text/html;charset=utf-8");//设置发送给浏览器的内容编码
3、httpsession session = request.getsession();//获得session会话session.setattribute("a","b");//给session作用域中存值可以这样取值:session.getattribute("a");
4、servletcontext context = this.getservletcontext();整个web应用对象,或者用servletconfig对象.getservletcontext()获得
string str = context.getinitparameter("encoding");//获得全局参数
5、servletconfig config = this.getservletconfig("p1");//获得某个servlet专用的配置对象
string str =config.getinitparameter("p2");//获得某个servlet的专有配置参数
6、string str = request.getparameter("s");//获得页面传过来的参数
7、string[] sa = request.getparametervalues("sa");//获得字符串数组
8、request.setattribute("r","宝宝");//往request作用域中存值。在页面可以${r}这样取出宝宝。
9、printwriter out = response.getwriter();//获得标准输出流,此流内部做了处理直接会输出给浏览器。
10、request.getrequestdispatcher("/index.jsp").forward(request,response);//转发response.sendredirect("index.jsp");跳转
二
连接数据库的基本过程
加载驱动程序
创建连接对象
创建语句对象
编写sql语句
使用语句对象执行sql语句
如果有结果集对结果集进行处理
关闭结果集对象(如果有),关闭语句对象,关闭连接对象
如何加载驱动程序
class.forname(“驱动程序名字”):
如何创建连接
通过drivermanager的getconnection方法,有3个参数,第一个参数是url,第二个参数是用户名,第三个参数是口令。
三
http 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展。目前在www中使用的是http/1.0的第六版,http/1.1的规范化工作正在进行之中,而且http-ng(next generation of http)的建议已经提出。
http协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有get、head、post。每种方法规定了客户与服务器联系的类型不同。由于http协议简单,使得http服务器的程序规模小,因而通信速度很快。
3.灵活:http允许传输任意类型的数据对象。正在传输的类型由content-type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:http协议是无状态协议。无状态是指协议对于事务处理没有记忆
能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。