Java-web复习.docx
1、HTTP是用于从Web暇务零传蚪HTM1.文件到本地浏览的通信协以“该办议是基于请求/响应形式的结构.超文本传输协议:无状态协议.用于通过Internet发送请求消息和响应消息,使用端口接收和发送消息,默认为80端口.2,HTTP协议使用以卜方法发送谙求信刖:(1)GET方法1)用于检索信息(如文档、图我或数据库请求结果)2)请求的页面可以被设以为书签和使用电子邮件发送3)请求信息作为杳询字符那发送(2)POST方法1)用于发送敏感信息(如信用卡号>或要保存到数据库中的信息2)谕求的页面不能设置为书卷或不能通过电子即件发送3)发送的数据没有大小限制4、用来专门提供WWW服务的股务器收件就叫Web极务器.常用的Web极务器:Apache.IIS.常用的应用服务器G1.aSSFish,Tomcat.5,Web应用程序使用三层体系结构:数据层(数据摩)业务层(web服务器)表示层(客户端)6、文档根目录:静态文,件(htm1.,images)WEB-INF(类,库,标签,web.xm1.).JSP第二章Serv1.et使用入门1、Serv1.et是一个用JaVa编写的程序,此程序在服务器上运行以处理客户端请求,2,Serv1.et容器创建Serv1.et的一个实例Serv1.et的生命周期就是指创建Serv1.et实例之后其存住的时间以及何时消失生命.周期的3个方法为:initO,serviceO,destroy()Serv1.et生命周期概括为下几个阶段:D1.fserv1.et2)创建-个SerV1.et实例3)初始化:容器调用init<)方法对serv1.et实例进行初始化4)蜃务:SerViCeO方法响应客户请求S)容器调用destroy()方法销毁serv1.et实例3、web.xm1.文件中配J?Serv1.et<serv1.et><sendet-name>c1.ientsefv1.et<serv1.et-name><serv1.et-c1.ass>chapter2.C1.ientServ1.et<ervietc1.ass><*erviet><serv1.et-mapping><serviet-name>c1.ientserviet<serv1et-name><ur1.-pattern>c1.ientservfet<ur1.-pattem><serv1et-mappg>4.编写Serv1.et需要遵循其规范:继承HttPSerV1.et:覆盅doGet().doPost()方法之或全部5、HTTP访求报头是指客户跳向服务器发送的HTTP请求中的头信息.KttpServ1.etRequest的getHeader()方法是读取请求报头的通用方式:HttpservIetResponse的SetHeaderf)方法是设置响应报头的通用方式。6、请求转发使用ReqUestDiSPatCher接"中的forward。方法来实现.该方法可以把谪求转发到另外一个资源,并让该资源对浏览器的请求进行响应.取定向和请求游发是SerV1.et7,1fi定向是指页而重新定位到某个新地址,之前的请求失效.进入一个新的请求,且跳转后浏览器地址把内容将变为新的指定地址.我定向是通过HttpservIetResponse时象的SendRedireCto来实现,该方法用T生成302叫应码和SCatiOn响应头,从而通知客户端去重新访问1.ocation响应头中指定的UR1.相当于浏览器景新发送一个请求.8、HttpservIetResponse的getWriter()狭取向齐户端发送信息的输出流9、请求转发和双定向区别如下;21) forward。只能将请求情发给同一个Web应用中的组件,而SendRcdirect方法不仅可以取定向到当前应用程序中的其他资源还可以型定向到其他站点的资源。2) SendRedireCt()方法期定向的访问过程结束后,浏览器地址把中显示的UR1.会发生改变,由初始的UR1.地址变成应定向的目标UR1.:而调用forward。方法的请求转发过程结束后,浏览器地址栏保持初始的URI地址不变。3) forward。方法的谢用者1.j被冏用着之间共享相同的request对象和response对象:而SendRedireCt。方法调用苦和被酒用昔使用各自的request对恕和response对熟,它们姐于两个独立的请求和响应过程。第三章会话JMR何介1»HttpServIetRequest的getSession()方法用于创建会话.其谙法如下:pub1.icHttpSessiongetSession();pub1.icHttpSessiongetSesson(boo1.eanva1.ue);如果没有与当漪i。求关联的会话,则getSession()方法用于创建会话。如果布尔值为true且当前没有与请求关联的会话,则使用getSession(boo1.ea11va1.ue)创建会话.如果布尔值为fake,如果没有与当前请求关联的会话,返叵In31.2、会话跟踪技术(即用来实现SeSSion技术的方法):UR1.施写InCooWe3、UR1.重写:将SessionID以参数的形式附加在UR1.地址后的技术成为UR1.重写。HttPSerVIetReSPOnSe接1.I中定义两个用于完成UR1.正写的方法:1)encode1.1.R1.();2)encodeRedirectUR1.();他们根据消息中是否包含Cookie头字段来决定是否进行UR1.里写.三种结束Session的情况:(1)关闭浏览器(2)调用HttPSeSS1.On的InvaI1.date。方法(3)会话超时r两次访问的时间间隔大于Session定义的非活动时间间隔4、(1)HttPSeSSiOn对象获取request.getSession(boo1.eanCreate)获取行前SeSSioniJiKrequest.getSession(true)(2)HUPseSaOn接口的主要方法voidSetAttribUte(Stringname.Objectva1.ue)将va1.ue对象以name名称绑定到会话ObjeagetAttribUte(Stringname)获取指定name的屈性(rt,如果胧件不存在,则返回nu1.1.EnumerationgetAttributeNames0返【可与会话相关:的枚举(ftvoidinva1.idate。使会话失效同时刖I除双性对象intgetMax1.nactive1.nterva1.()返回会话期间内客户请求的最长时间(杪)voidremoveAttribute(Stringname)从会话中删除name属性.如果不存在则不执行,也不会她出界席voidsetMaxnactventerva1.(intInterVa1.)允许客户请求的最长时间第四章JSPIB介1、JavaServerPages<JSP)Java服务器页面JSP是一种动态网页编写技术:JSP允许在页面中包括JaVa代码:JSP文件的扩展名为Jsp:JSP文件的标记还可以使用XMI语法;收新的饭本为JSP2.1;有效地控制动态内容生成;在JaVaSerVerPage里面使用Java编程语言和类库;HTM1.用于表示页面,而Java代码用于访问动态内容.2、JSP页面元素> 盍内容:HTMI.除态文本> 指令1以“<%"开始,以"%>"结束,比如:<%inc1.udefi1.e="Fi1.ename-%>> 表达式:<%=java表达式>如:v%=getHe1.1.o("朋友")>,*本:<%java代F%>如:<%Ca1.endarnow=CaIendacgetInstanceO;%>>声明:<%!因数或方法><%!priva<eintgetOateCount=0;%>>动作,以“vjsp:动作名”开始,以"v/jsp:动作名>”>注鼻,这是注程,但客户端可以查看到->3、JSP执行过程4,代码注释使用“”对单行代码进行注释使用,/./,方式对多行代码进行注择使用“/./”方式对多行代码进行注择使用“对多行代码进行注择使用对实行HTM1.代码进行注择5,JSP声明就是在JSP页面中声明Java方法或变鹏等6、JSP指令的语法格式:<%指令名属性="值”属性="值”>常用的三种指令:Page指令.inc1.ude指令.tag1.ib指令“Dpage指令用于设置JSP页面的属性.ImPort属性可以在当前JSP页面中引入JSP脚本代码中需要用到的其他类“<%pageImport="java.1.o."%>ContentType用于指定JSP输出内容的M1.ME类型和字符集PageEncoding用性:<%pagepagencoding="UTF-8"%>SeEonM性用于控制页面是否蔚要使用SeSS1.on会话,歌认伯"true"去示使用会话ErrorPage属性用于指定当前JSP页面中出现未被捕获的异常时所要跳转到的页面IsErrorPage幅性<%pageisErrorPage三"true"%>是否使用内况的exception对象未获取相关的弁常伯息.bufferW性用来设置用来存储齐户端清求的谖冲区的大小2) inc1.ude指令用于在运行时将HTM1.文件或JSP页面嵌入到另一个JSP页面inc1.ude指令语法:<%inc1.udefi1.e三"文件名"%>3) tag1.ib指令可以让JSP页面使刖标,tag1.ib指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀,而去利用标签的前缀去使用标签陈表述文件中的标签语法:v%tag1.ibW="标签库表述符文件“PrefiX="前假名"%>第五章内对象内置对象:是指由处P容器加为的,不用声明就可以直接在JSP页面中使用的对象,隐式对象1、输入/输出对象:控制页面的输入和输出,访问与所有请求和响应有关的数据。包括:1) request对象表示客户端对M页的请求,实现javax.serv1.et.http.HttpServ1.etRequest接口.使用HTTP协议处埋客户端的请求.request对象常用方法:StringgetParameter(Stringname)根据页面表单组件名称获取请求页面提交数据StringJgetParameterVa1.ues(Stringname)获取页面请求中一个表单组件对应多个值时的用户的讲求数据2) response对象处理JSP上成的响前3将响应发送给客户桀.javax.serviet.http.HttpServ1.etResponse接口,使用HKP协议将响应发送给客户崩.response对象常用方法voidSetContentType(Stringname)设置作为响应生成的内容的类型和字符织码voidSendRedirect(Stringname)发送一个响应给浏览器,指示其应请求另一个UR1.3) out时象表示辎出流javax.sen1et.jspJspWriter类的实例,使用Write。、Printo和PrintIno方法.2、作用域通信对,象:式对象的作用域包括pageContext,request,session和app1.ication*他们都具有getAttrubute()和SetAttrUbUte()方法.作川域通信对象包括SeSSion、app1.ication和PageContext1) Session对飘Web眼分器为单个用户发送的多个请求创建会话,存储有关用户会话的所有信息Java×.serv1.et.http.HttpSession接口的实例,session对象最常用的方法有:voidSetAttribUte(Stringname.Objectva1.ue)以雄/值的方式.将一个对象的值存放到SeSSion中voidgetAttribute(Stringname)根据各林去获取session中存放对软的价2) app1.ication对象表示JSP页面所属的应用程序,应用程序的JSP页面组合起来形成一个应用程序Javax.ServIet.ServIetContext接I实例.app1.ication对望最常用的方法行:voidSetAtUibIKe(Str1.n8name,Objectva1.ue)以键/值的方式,将一个对象的值存放到app1.ication中voidgetAttribute(Stringname!根据名称去获取app1.iCation中存放对望的值3) pageContext对象使用户可以访问页面作用域中定义的所有隐式对象.它的作用范围是在同一页面,javax.serv1.et.jsp.PageContext类的实例.pageContext对破最常用的方法fj:voidSetAttribUte(Stringname,Objectva1.ue)以潴/值的方式,将一个对象的值存放到pagecontext4«voidgetAttribute(Stringname)根据名称去获取pageContext中存放对象的值3、serv1.et对家JSP引擎为早个JSP生成个Serv1.et.SerV1.et对象提供了访问SerVIet信息的方法和变成1)page对象使用page对飘可以访问Serv1.et类的所有变量和方法.2)COnfig对软存储在编译JSP页面的过程中创建的Serv1.et的信息,ava.serv1.et.SerV1.etCOnfi8接11的实例,提供了检索Serv1.et初始化参数的方法。(String)COnfig.get1.nitParameterr'namej;返回指定名称的初始参数值.4、错误对以:exception对象用于处理JSP页面中的错误,访问执行JSP的过程中引发的异常,是java.Iang.Thr。Wab1.e类的实例,Page指令的isErerPage属性值设置为“true",否者无法使用exception内置对象,第六章JavaBean和JSP中的标准动作1、JavaBeanSUn公司对JaVaBean的定义为:可以重到利用的软件组件,它在遵循JaVaBean技术规范的基础上提供特定的功能,这些功能模块可以组合成更大规模的应用系统。广义上的JaVaBean要满足以下的要求:1)是一个公有类,含布公有的无参构造方法2)M性私有3)M性具有公有的get和Set方法。JSP可使用JSP标准动作调用JaVaBean组件并访何属性.2、标准动作用于:格JavaBean嵌入JSP页面:设置和获取JavaBean的间性:将用户请求转发给其他页面:将其他页面的内容嵌入当前页面:标准动作中的国性区分大小写;JSP中的标准动作使用<jsp>作为前假。3、JSP规范定义了一系列标准动作,常用的有:1)jsp:useBean:f5找或者实例化一个JavaBean.<jsp:USeBeanid="BeanD"CIaSS="MyBean"scope="page">id:制定该JaVaBean实例的变盘名,通过id可以访问这个实例”C1.ass:制定JaVaBean的类名scope:制定JaVaBean的作用范围.有page(默认值,Bean只能在使用页面时使用.当加我新页面时,就会貉其销毁),request,.只能应用于当前请求),SessionfftJavaBean能应用于当前会话),app1.ication(能应用于整个应用程序内)2)j$p:SetProperty:设四JaVaBean的属性。<jsp:setPropertyname=,'BeanIDwproperty='*name"va1.ue="示例7>3)jsp:getProperty:输出某个JaVaBean的展性”<j$p:getPropertynme="Bean1.D"PrOPerty="name"/4) jsp:inc1.ude在页面被请求的时候引入一个文件”Vjspjndudepage="被包含文件的UR1.">5) jsp:forward:把请求转发到另一个页面.<jsp:forwardpage="Second.jsp">第七章表单式语音(E1.)与标准标妥库(JST1.)1、E1.是JSP2.0最重要的特性之一,有以下几个特点:可以访问JSP的内置对a(pageContext、request.Session.app1.ication殍),简化/JavaBean的访问方式,筒化了对集合的访问方式,可以通过关系、逻辑、和算术运算符进行运算,可以进行条件输出.2、E1.基础谱法$E1.友达式如Sperson.name3、JSPE1.表达式用于以下情形:静态文本、标准标签和自定义标签.4,在JSP中禁用计算,以忽略JSP中E1.表达式的执行.禁用E1.计算的语法为;<%pageisE1.Ignored="truefa1.se"%>、5、点运算符(.)或方括号(U)访问变显的值,6、JavaServerPages标准标签阵(JST1.)包含的各种标签可用于JSP页面中。JSK的优点:提供一如标准标签:可用于端写各种动态JSP页面:用于访问数据库、有条件地执行代码和支持国际化.JST1.提供的标签原分为5部门:核心标签库、国际化出标签摩(18N),XM1.标签圈、SQ1.标签库、E1.的数障7,核心标签库按标签功能分为:通ff1.标签:用于操作变盘条件标签:用于诳行条件判断和处理迭代标签:用于循环遍历一个集合UR1.操作标签:用于一些针对URI.的操作8.通用标签包括以下四种:1.)<c=。5>用于输出数据:<c:outva1.ue="va1.ue"escape×m1.="truefa1.se"defau1.t="defau1.tVa1.ue'>2)<c:set>用于设置制定范曲内的变畸值vusetVa1.Ue="Va1.Ue"var三"11ame"(scope="(pagerequest(session(app1.ication)"/>3)<c:remove刖于删除指定范围中的某个变信或屈性vremovevar="name"scope="agerequestsessionapp1.ication"/>4)«:CatCh>用于捕获内部代码抛出的异常<cxatch(var三"name">bodycontent<cxatch>9,条件标签包括:1) «:if>进行条件判断<c:iftest="condition"var="name"scope="pagerequestsessionapp1.ication)")>bodycontent</c:if>2) «:ChoOSe>用于条件选择与:whenxc:Otherwse>一起使用<cxhoose>bodycontent(<c:when>and<c:otherwise>)<cxhoose>3) <c:When>代表<c:ChoOSe>的一个分支<c:whentest="nd1.tion">bodycontent</c:when>4) <c:OtherWise>代表<c:ChooSC的最后选择,必须以<c:Choo$e>作为父标签吗,且必须是最后一个分支。10、迭代标签用于多次计算标签体,包括,D<c:forEach>,用于景历集合或迭代制定次数<c:forEach(var三',namewitems=,co1.1.ection"varStatus="varStatusName11begin三*,begi,J(end="endw1.step="step")>bodycontent</c:forEach>2)<crforTokens>1用于充历使用分割字符串后的字符串集合<cIforTokensitems=HstringOfTokens*'de1.ims=*'de1.imiters*'|var=HnameM)(varStatus=',varStatusName"1.(beg1.n='begied="edr(step=wstep">bodycontent</c:forTokens>11«UR1.SS>:2)<c:redirect>3)<c:ur1.>D<c:mport>j主要用于将一个龙或者动态文件包含到当前JSP页面中,所包含的对象不再局限于本地Web应用程序,其他Web应用中的文件或者FTP资,同样可以包含进来.<c:importur1.三*'ur'(context三wcontext"(var三*name-Jscope=Mpagerequestsession(app1.ication)"chartncoding="carEncoding,j>字就与码方法1, ASC1.1.使用7个比特(bit)进行字符编码,个多可以表示的字符数量为27<128)个字符.这些字符包括了大小写英文字母、阿拉伯数字、标点符号、控制字符和其他符号.每个字符用一个字节表示,每个字节的最高位为0.例如:字符“A”在用ASQ1.码中用2进制的“01000001”表示,换算成10进制为-65".2, ISO8859-1.X1.atin-I,是在ASa1.的基础上,使用8比特埸码,新墙了一代字符,新增的字符主要用来支挣部分欧洲国家所使用的语言,例如:德谱、韵萄牙谱和西班牙谱等0也就是说,608859-1兼容ASCII.3、1981年,开始使用国家标准信息交换用汉字编码字符集一般本集h筒称GB2312,使用双字节编码,一共包含了7445个字符,包括了6763个常用的汉字.而汉字分成了两级.级为常用字.仃3755个字符,按照拼音排序,二级为次常用字,包括3008个字符.按照部首排序.GB2312主要应用在中国大陆和新加坡,几乎所有的中文系统和国际化的软件都支持GB2312.同时GB2312兼容ASCII.4,在GB2312的基础上又进行了扩充。在1995年,推出了汉字内码扩展规范h简林GBKeGBK收录/21886个汉字和图形符号,其中汉字21003个,图形符号883个,并且向下与GB2312编码完全兼容.5、GB18030-2000编码标准是由信息产业部和国家质信技术监督局在2000年联合发布的,GB18030编码标准是在阻来的GB2312和GBK编码标准的基础上进行扩充,增加了一%新的字符,特别是一些少数民族使用的字符.它的主要目的是为了艇决一些生、偏、难字的问起.6, BIG5又称为大五码,是针对繁体汉字的汉字编码,目前广泛应用在在台湾、澳门利香港地区的电脑系统中,BIG5也是双字节编码,一共收录了5401个常用字利7652个次常用字。7、Unicode1991年Unicode把世界上几十种文字整合在一个字符集中,Unicode中的每个字符挪有一个唯一的数字进行表示.Unicode是由Unicode组织进行相关标准的制订与推广。现在Unicode己经被广泛的使用,Java语言、MSWindowsXP,和MSOffice等软件内部都使用/Unicode什为内码.官方网址:http:/www.unicode.orR.UniCOdeM新的收木为5.0.8、JaVaWeb程中文乱码解决方法1)调用JSP页面显示乱玛通过浏览器调用JSP页面,在浏览器中所有的中文内容出现乱码。苜先确认本JSP在编辑器中保存文件内容时,使用的是UTF-8的编码格式,然后在JSP页面的开始,添加<%PagepageEncoding="UTF-8"%>.就可以解决这个中文乱码问S2.2)调用SerVIet页面显示乱码通过浏览器调用Serv1.et.Serv1.et在浏览器中显示的内容出现乱码。在Serv1.et使用response对输出内容之前,先执行response.setContentType("texthtm1.harset=utf-8'").设定输出的内容的编码为UTF8,3) POST表单传递参数乱码通过JSP贞而、HTM1.页面或者ServIet中的表单元素提交参数给对应的JSP页面或并Serv1.et,而JSP页面或者SerV1.et接收的中文参数值乱码.在接收POST提交的参数之前,使用request.SetCharaaerEnCodin以-UTF-8")设定接收参数的内容使用UTF-8弟码.更好的解决方法,就是使用过/器技术,在接收参数之前.设定传递的参数内容的编码是UTF-8。4) URI方式传递参数乱码使用表单传递参数,可以通过PoST或者GET方式.不使用衣单,还可以使用魅接方式传递参数,这种传递参数的方法本鲂上就是GET方式传逡参数,这种传递参数的值是中文,也会出现乱码,<Connectorport="8080"protoco1.="HTTP1.1."maxThreads="150"con11ectionTimeout="20000"redirectPort=8443"URIEncoding="UTF-8">5) Properties文件乱码H在使用线类库或者框架时(例如:JST1.FOrmat标记库、DiSP1.aytag标记库和StrUtS1.E架,为了实现页面内容的国际化,需嬖端写对应的PrOPertieS文件,而PrOPertieS文件中的中文内容在显示的时候也会出现乱码.Bnatve2asc1.-encodingutf-8d1.spay.propert1.esdisp1.ay_zh_CN.properties