J2EE+servlet经典教程,易懂易学_第1页
J2EE+servlet经典教程,易懂易学_第2页
J2EE+servlet经典教程,易懂易学_第3页
J2EE+servlet经典教程,易懂易学_第4页
J2EE+servlet经典教程,易懂易学_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

动态网页技术的发展

当www网初现江湖时,当时主要是html(1933),由于html只支持静态的文字和图片,不能参与用户进行交互,为弥补这个不足,陆续出现了下列网页技术:(1)cgi(commongatewayinterface)特点: a:cgi技术是早期动态技术使用最多,发展比较成熟并且功能强大 b:效率比较低,编程比较困难 c:cgi可以用不同的语言编写(vb,delphi,c/c++,perl)常用的c/c++和perl语言 d:现在使用cgi做动态网页比较少,但是还是有,主要用于linux/unix操作系统中(2)asp asp是html+javascript(vbscript)+com组件的形式,asp的功能强大不在于能使用相关的脚本语言而是com组件,但是com组件的开发是比较困难的。优势: 1.简单易学 2.安装使用方便(windows+iis)在win98是使用(pws作为asp的服务器) 3.效率比cgi高不足:1.功能扩张比较困难,因为asp的功能扩展在com组件,而开发com组件是比较困难的 2.安全性。因为asp是与windows系统和iis一起工作的,所以windows和iis的安全漏洞会对asp造成影响 3.跨平台性 4.实现企业级的功能困难,如服务器的集群、负载均衡动态网页技术的发展动态网页技术的发展(3)php

官方网站:优势: 1.跨平台性良好,多种数据库支持 2.效率比较高,具有良好的安全性 3.免费使用不足: 1.安装复杂(php的很多功能需要安装相应的应用库,如要更好的支持图形就要安装gd库) 2.缺少企业级的支持(php是由php开发组支持的,如果要增加新功能就要开发相应的组件) 3.php是自由软件组织开发的,缺少正规的公司对其负责动态网页技术的发展(4)jsp jsp=html+java片段+jsp语法+js优势: 1.一次编写,到处运行 2.良好的跨平台性 3.多种开发工具支持 4.强大的可伸缩性(jsp+javabean)的方式不足: 1.jsp产品的复杂度高(jsp入门比asp难) 2.jsp要求运行的机器配置要高,因为jsp使用class常驻内存的方式运行的,效率高,但是需要占用更多的内存动态网页技术的发展jspVSaspjspasp运行速度很快较快安全性很高较高跨平台性很好支持windows对数据库的支持性支持所有主流数据库支持所有主流数据库对组件的支持性良好良好对xml的支持性良好良好b/s与c/s的比较b/s的优势: 1.开发成本低 2.管理维护简单 3.产品升级便利 4.对用户的培训费用低 5.用户使用方便,出现故障的概率小b/s的不足: 1.安全性不足 2.客户端不能随心变化,受浏览器的限制 3.利于管理用户服务器ie浏览器ie浏览器b/s服务器客户端客户端c/sservlet的介绍什么是servlet?servlet技术是在javaee出现之前就存在了,在开发动态网页中得到广泛的应用,直到现在的javaee项目中也是非常重要的,同时jsp也是在servlet的基础上发展起来的。servlet(java服务器小程序)是用java编写的服务器程序,它的特点: 1.由服务器调用和执行 2.用java语言编写的 3.按照servlet规范开发 4.功能强大,可以完成几乎所有的网站功能 5.是学习jsp的基础servlet/jsp开发工具servlet/jsp运行环境Tomcat是一个免费的开源的servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。普通的文本编辑器notepad,uedit32集成开发工具jcreator,jbuilder,eclipse,editplus,netbean浏览器Web服务器数据库绝大部分浏览器ie,netscape,firefox,MaxthonTomcatBeaweblogicIbmwebsphereResinSql200SybaseMysql,AccessOracle,db2。。。tomcat在网络中的位置IE浏览器Web服务器jsp/servlet容器*.java*.jspTomcat三个功能:1.web服务器2.jsp容器3.servlet的容器Tomcathttp请求返回静态页面转发返回结果服务器ie浏览器ie浏览器servlet体系结构javax.servlet.*;java.lang.Objectjavax.servlet.GenericServletjava.io.InputStreamjava.io.OutputStreamjava.lang.Throwablejavax.servlet.ServletInputStreamjavax.servlet.ServletOutputjava.lang.Exceptionjava.io.Serializablejavax.serlet.Servletjavax.servlet.ServletConfigjavax.servlet.ServletExceptionjavax.servlet.UnavailableException界面层(美工)逻辑层(程序员)数据层(数据库分析员)网络拓扑图servlet的几个实例开发servlet有三种方法: 1.实现servlet接口 2.继承GenericServlet 3.继承HttpServletservlet开发流程1.在%TOMCAT_HOME%/webapps下WEB-INF的文件夹,写一个文件web.xml(该网站的配置信息),建立一个classes的子文件夹,也可以从别的目录ROOT下拷贝2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar)3.部署你的servlet(servlet开发流程)4.启动Tomcat,访问你的servlet,在浏览器的地址栏中输入::8080/myWebSite/hello回车就可以看到servlet的输出注意:是服务器所在的IP,8080是端口号,要根据实际情况定。servlet开发流程在web.xml文件中添加如下代码:<servlet><!—给servlet取名,可以随意取名--><servlet-name>hello</servlet-name><!—指明servlet的路径,就是servlet的包+类名--><servlet-class>com.test.Hello</servlet-class></servlet><servlet-mapping><!—给servlet取名,可以随意取名--><servlet-name>hello</servlet-name><!—浏览器中输入的url,可以随意取名--><url-pattern>/hello<url-pattern></servlet-mapping>servlet的生命周期servlet部署在容器里(我们使用的是Tomcat,也可是别的,比如jboss,weblogic。。。),它的生命周期由容器来管理。servlet的生命周期分为以下几个阶段: 1.装载servlet,由相应的容器来完成 2.创建一个servlet实例 3.调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次 4.服务:调用servlet的service()方法,一般业务逻辑在这里处理,该方法在访问该servlet时,会被调用 5.销毁:调用servlet的destroy()方法,销毁该servlet实例,该方法在以下情况被调用: a)tomcat重新启动 b)reload该webapps c)重新启动电脑通过GenericServlet去开发servlet,只需要重写service方法,相对来说要简单一些。通过HttpServlet去开发servlet,需要重写doGet、doPost方法,这是目前用的最多的一种方法。表单提交数据get请求和post请求的区别:1.从安全性看get<post。get提交的数据会在浏览器的地址栏显示2.从提交的内容大小看get<post。get提交的数据不能大于2K,而post提交的数据理论上不受限制,但是实际编程中建议不要大于64K3.从请求响应速度看get>post。get请求服务器立即处理请求,而post请求可能形成一个队列请求通过继承GenericServlet开发servlet通过继承HttpServlet开发servlet同一用户的不同页面共享数据四种方法: 1.

cookie技术 2.sendRedirect()跳转 3.隐藏表单提交(form) 4.session技术同一用户的不同页面共享数据什么是cookie?cookie可以用来做什么?服务器在客户端保存用户的信息,比如登录名、密码……就是cookie这些信息就像是小甜饼一样,数据量并不大,服务器端在需要的时候可以从客户端读取服务器客户端客户端客户端1.保存用户名、密码,在一定时间不用重新登录2.记录用户访问网站的喜好,比如有无背景音乐、网页的背景色是什么3.网站的个性化,比如定制网站的服务、内容cookie使用1.cookie有点像一张表,分两列,一个是名字,一个是值,数据类型都是String2.如何创建一个cookie(在服务器端创建的)Cookiec=newCookie(Stringname,Stringval);3.如何将一个cookie添加到客户端response.addCookie(c);4。如何读取cookie(从客户端读到服务器)request.getCookie();名字String值Stringcookiecookie其它说明1.可以通过IE——工具——internet选项——隐私——高级来启用或是禁用cookie2.由于cookie的信息是保存在客户端的,因此安全性不高3.cookie信息的生命周期可以在创建时设置(比如30s),从创建那一时刻起,就开始计时,到时该cookie的信息就无效了同一用户的不同页面共享数据sendRedirect()方法通过该方法可以将一个页面的信息传送给另外的页面,比如:sendRedirect(“welcome?uname=aaa”);优点:传送信息的速度比较快缺点:它只能传送字符串,而不能传送一个对象 sendRedirect(“welcome?uname=aaa”);注意点: 1.welcome代表你要跳转的那个servlet的url 2.servleturl名和变量之间有个? 3.如要传递两个以上的值,它们之间要用符号&分开,比如sendRedirect(“welcome?uname=aaa&passwd=123”); 4.如果传递的是中文,那你将得到乱码,需要处理一下res.setContentType(“text/html,charset=gbk”);同一用户的不同页面共享数据隐藏表单这是最常见的一种方式,也是最简单的,但有时该技巧非常管用,形如:<formaction=login><inputtype=hiddenname=avalue=b></form>通过隐藏表单,我们也可以将一个页面信息,传递给另外的页面。同一用户的不同页面共享数据什么是session?

服务器分配给A客户端的session空间

服务器分配给A客户端的session空间

服务器分配给A客户端的session空间当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被这个浏览器独占。这个空间就是session空间,该空间中的数据默认存在时间为30min,你也可以修改该值。服务器(Tomcat)ABCABCAAA同一用户的不同页面共享数据session可以用来做什么? 1.网上商城中的购物车 2.保存登陆用户的信息 3.将某些数据放入到session中,供同一用户的各个方面使用 4.防止用户非法登陆到某个页面 ……如何理解session?可以把session看做一张表,这张表有两列,而表有多少行理论上没有限制,每一行就是session的一个属性。每个属性包含有两个部分,一个是该属性的名字String,另外一个是它的值Object。名字String值Objectaaa111session属性同一用户的不同页面共享数据如何使用session?1.得到session

HttpSessionhs=request.getSession(true);2.向session添加属性

hs.setAttribute(Stringname,Objectval);3.从session得到某个属性

Stringname=hs.getAttribute(Stringname);4.从session中删除掉某个属性

hs.removeAttribute(Stringname);5.注销session中的内容(比较安全的一种方式) ht.setMaxInactiveInterval(0);同一用户的不同页面共享数据session的注意事项:1.session中属性存在的默认时间是30min,你也可修改它存在的时间:(a)修改web.xml(b)在程序中修改2.上面说的这个30min指的是用户的发呆时间,而不是累计时间3.当某个浏览器访问网站时,服务器会给浏览器分配一个唯一的sessionid,并以此来区分不同的浏览器(即客户端)4.因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用cookievssession1.存在的位置cookie保存在客户端,session保存在服务器端2.安全性比较而言,cookie的安全性比session要弱3.网络传输量cookie通过网络在客户端与服务器端传输,而session保存在服务器端,不需要传输servlet中操作数据库servlet操作数据库注意事项需要将连接数据库的jar包,拷贝到tomcat服务器具体有两种方法: 1)将jar包拷贝到tomcat目录下的lib文件夹里 2)在webapps目录的WEB-INF文件下建立一个lib文件夹,然后将jar包拷贝到该文件夹下两种方法的区别:1)所有webapps都可以使用jar【公用lib库】2)只有放入jar的那个webapps能使用jar【私用lib库】sql注入漏洞select*fromuserswhereusername=‘abc’andpasswd=‘123’or1=‘1’在servlet中显示图片在你的webapps下建立一个文件夹,比如images,然后将图片拷贝到该文件夹中,再在servlet中添加:<imgsrc=*.images/图片名/>即可。分页方法<一>分页的算法:需要定义四个变量,它们有各自的用处intpageSize:每页显示多少条记录intpageNow:希望显示第几页intpageCount:一共有多少页introwCount:一共有多少条记录说明:pageSize是指定,pageNow是用户选择的。rowCount是从表中查询得到的。pageCount是计算出来的,该计算公式为: if(rowCount%pageSize==0){ pageCount=rowCount/pageSize; }else{ pageCount=rowCount/pageSize+1; }分页方法<二>针对前面提出的问题,我们可能很自然的想到,用select字段名列表from表名whereidbetween?and?这个sql语句确实比较快,但是存在一个问题,即如果表的id被删除了,那么某页可能就会少一条记录。因此,我们的最终方法是如下语句:selecttoppageSize字段名列表from表名whereidnotin(selecttoppageSize*(pageNow-1)idfrom表名)分页方法<三>测试效率当表的记录超过100万条时,它的翻页就很慢,原因是它查询的结果是整张表。在实际的项目中,一张表超过100万是非常常见的,一些大型项目中一些表到达T级别也是有的。增加表的记录的语句可用:insertinto表名(字段1,,2…)select字段1,2…from表名网站框架问题分析:界面和业务逻辑放在一起(model1模式)存在以下问题:1.在LoginCheck.java文件和Welcome.java文件中都去操作了数据库,他们的逻辑相似,代码重复2.整个框架没有清晰的层次关系,显得非常乱3.代码一点也不优雅,可读性差,可维护性差问题改进:通过对问题的分析,我们可以对程序进行改进:1.进行分层(界面层、业务逻辑层) 【mv模式】m:modelv:view2.将常用的代码(比如连接数据库)封装到类中Login.java登陆界面LoginCheck.java验证用户Welcome.java欢迎界面登录请求不合法合法界面view模型modelUserBean.java表示user表UserBeanCheck.java业务逻辑ConneDB.java得到连接user表调用调用操作数据库ServletContext讲解什么是ServletContext?要理解ServletContext,就必须和cookie、session做一个对比,如右图所示:可以把它想象成是一个共用的空间,可以被所有的用户访问,也就是说:A客户可以访问D,B客户也能访问D,C客户也能访问D。服务器ABCDABCAAcookiesessionDServletContext如何使用ServletContext?1.如何得到ServletContext实例 this.getServletContext();2.你可以把它想象成一张表,这个和session非常相似,每一行就是一个属性:

添加属性setAttribute(Stringname,Objectob);

得到值getAttribute(Stringname);返回Object

删除属性removeAttribute(Stringname);3.生命周期ServletContext中的生命周期从创建开始,到服务器关闭而结束。ServletContext讲解使用ServletContext的注意事项:因为存在ServletContext中的数据会长时间保存在服务器,会占用内存,因此我们建议不要向ServletContext中添加过大的数据,切忌。使用ServletContext实例:在网站开发中,有很多功能需要使用ServletContext,比如: 1.网站计数器 2.网站在线用户显示 3.简单的聊天系统总之,如果是涉及到不同用户共享数据,而这些数据量不大,同时又不希望写入数据库中,我们就可以考虑使用ServletContext来实现。ServletContext讲解Servlet中操作文件因为servlet本来就是一个.java文件,因此,servlet中操作文件和普通java文件操作文件是一样的。//创建一个FileReaderFileReaderfr=newFileReader(“d:\\myCounter.txt”);BufferedReaderbr=newBufferedReader(fr);//读出一行数据StringnumVal=bw.readLine();//关闭文件流bw.close();创建一个FileWriter

内存数据→磁盘文件(写入、输出)

内存数据←磁盘文件(读入,输入)如何修改tomcat的端口在某些情况下,可能需要修改Tomcat监听的端口8080,比如: 1)需要启动两份Tomcat 2)某个服务占用了8080端口(1433,1521,3306)找到Tomcat目录下的conf文件夹里的server.xml,对其端口号进行修改。查看本机所有端口的命令:netstat-an设置tomcat虚拟目录为什么要设置虚拟目录?目前,我们的网站站点都是放在默认的目录下tomcat/webapps

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论