版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SoEasy列之JSPJSP指令元pagepage指令是JSP页面中最常用的指令,用来JSP页面的属性等信息。一个page指令允许定义多个属性;也可以一个page指令定义一个属性,定义多个page指令。一个page指令,<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-一个page指令,设置一个属性.配置多个page<%@page<%@pagepageEncoding="UTFimportpage属性名取值范描指明该JSPJSP文件继承于哪个类。JSPServlet,因此当指明继承普Servlet的init()、destroy()等方法。引入该JSP中用到的类、包等。import是唯一可以多次的page指令属性。一个import属性可以多个类,中间用英文逗号隔JSPJSPSessiontrueSession对象。默认为程序执行完毕或者执行out.flush()操作时才到客户端。默认为autoFlush设为true8KB指定该页面是否为错误处理页面。如果为true,则该JSPException对象,可直接使用,否则没有。默认为JSP页面的指明一个错误显示页面,如果该JSP程序抛出一个未捕捉的异常,则转到errorPageerrorPage指定的页面通常isErrorPage属性为trueException对象为未捕捉的异常。有效的文档类JSPServlet.getServletInfo()方法获是否去掉指令前后的空白字符。默认为EL表达式。默认为falsepageEncoding和contentTypepageEncodingJSP页面使用的编码格式。pageEncoding<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-contentTypeJSPServletresponse.setContentType()方pageEncoding属性与contentTypeerrorPageisErrorPage创建一个JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'page.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="expires"ThisismyJSPpage.thrownew}发布Web工程,并页面报错提示JSP页面的thrownewRuntimeException();这句报错当页面报错时,创建一个JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'error.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"thisiserror<%@<%@pagelanguage="java"pageEncoding="UTF-8"重新发布Web工程,并这时再次当前的JSP页面,会发现显示的是error.jsp页面的内容。这样的处理使得报HttpWatch200,JSP页面将错误隐,这样不利于之后的处理。<%@<%@pagelanguage="java"pageEncoding="UTF-8"重新发布Web工程,并error.jspJSPexception获取异常信息等功能,该对象只能<%@<%@pagelanguage="java"pageEncoding="UTF-8"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'error.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"thisiserror<%=exception.getMessage()JSP页面中指定错误页面虽然可以,但是操作繁琐(JSP页面指定web.xml文件配置错误页面信息。<?<?xmlversion="1.0"encoding="UTF-<web-app" 配置对应状态码为404includeincludeJSPJSP页面、HTML页面、文本文件或一段Java代码。include语法格式如下:<%@<%@includefile="包含文件的路径include.jsp<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'include.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<%@includefile="date.jsp"date.jspout.println(new下面是一个利用include创建一个news.jsp页面,用于显示的内容<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01 内容页面<%@includefile="head.jsp"<pstyle="line-height:22px;text-<pstyle="line-height:22px;text-人从来到上,就注定着最终要离开。有人曾,人的一生就是。而且,是没有人不恐惧的,因为我们不知道它会在什么时候来临。<pstyle="line-height:22px;text-对于,是每一个人都无法逃避的事情。但,还是有很多人想找到可以留在这个世上的方法,例如中国的。或者有些人选择相信精神上的永生,而这些人也都无一例外地最终离开了。<pstyle="line-height:22px;text-那个人的的确确地 地离开了我们<pstyle="line-height:22px;text- <pstyle="line-height:22px;text-<pstyle="line-height:22px;text-故事是 。即使最后还是要结束,但至少可以让人留下深刻的印象,甚至将这个故事永生<pstyle="line-height:22px;text-所以,让我们珍惜我们现在的每一天吧!因为我们不知道,过了今天之后,明天是不是就会离开。而今天可能会成为我们在这个世上的最后一天,遗憾留在今天。趁着自己还在这个世上,抓紧把自己事情去完成,把自己向对谁说的话去说完。<pstyle="line-height:22px;text-就活在当下吧!此刻的,才是真。不要想着将来我要如何的活着,不要想着将来我要怎么完成事情,不要想着未来我要如何成功。既然要,就现在。既然要完成,就<pstyle="line-height:22px;text-一本书,在乎的不是厚度,而是在乎内容的程度。一个人,在乎的不是长度,而是在乎<pstyle="line-height:22px;text-<%@includefile="foot.jsp"创建一个head.jsp页面,用于显示的导航栏信息<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<tablewidth="100%"cellspacing=1<tdbgcolor=#666666colspan=7style="color:#FFFFFF;font-<tdbgcolor=#DDDDDDalign=center>首页<tdbgcolor=#DDDDDD <tdbgcolor=#DDDDDD <tdbgcolor=#DDDDDDalign=center>军事<tdbgcolor=#DDDDDDalign=center>邮件<<tdbgcolor=#DDDDDDalign=center>社区<tdbgcolor=#DDDDDDalign=center>关于创建一个foot.jsp页面,用于显示的信息<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01 信息<tablewidth="100%"cellspacing=1<tdalign=centerbgcolor=#666666style="color:#FFFFFF;font-Copyright2007-2014taglibJSP页面支持,使用功能可以实现视图代码重用,很少量的代码可以实现很复杂的显示效果。要使用功能必须先库以及前缀。taglib指令用于指明JSP页面使用的JSP标签库。taglib指令的语法格式如下:<%@<%@taglib 前缀" 库的完整路径"目前使用最多的是如下库<%@<%@taglibprefix="c" /jsp/jstl/core"具体使用方式会在后面的自定 库中学习到这里只需要掌握如何指 库即可<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<%@taglibprefix="c" /jsp/jstl/core"<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<c:forEachvar="item"<c:outJSP将在调用页面中继续进行。这个动作与javax.servlet.RequestDispatcher类的include方法一致。<<jsp:includeflush="boolean值"page="被包含页面的路径不刷新缓冲区。true表示刷新缓冲区。pageJSP页面的URL。下面通过一个案例来掌握include的使用:创建一个JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'include.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"Stringflag=request.getParameter("flag");Stringp="";p="login.jsp";p=}<<jsp:includepage="<%=p%>"创建一个JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'login.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires" 创建一个JSP<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'logout.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"发布Web工程,并include与include指令的区别<%@include转换期静包含的内容被JSP<jsp:include喊这个动作运行在运行时将当前的请求转发给一个静态的资源、JSP页面或者Servlet,请求被JSPjavax.servlet.RequestDispatcher类的forward()方法的作用相同。这个动作的语法格式如下<<jsp:forwardpage="请求转发到页面的路径<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'forward.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<%System.out.println("forwardjspstart...");<jsp:forward<%System.out.println("forwardjspend...");Servletout.write(out.write("\t<h1>forward.jsp</h1>\r\n");out.write("\t");System.out.println("forwardjspstart..."); if(true)} System.out.println("forwardjsp这个动作与<jsp:include>、<jsp:forward>配合使用,以键值对形式为其他提供参数内容。这个动作的语法格式如下:<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'forward.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<jsp:forward<jsp:paramvalue="true"JSP内置对outMethodClearthecontentsMethodClearthecontentsoftheFlushtheThismethodreturnsthesizeofthebufferusedbytheThismethodreturnsthenumberofunusedbytesintheThismethodindicateswhethertheJspWriteris Printa PrintaStringandthenterminatethepageContextpageContextjavax.servlet.jsp.PageContextJSP的四大作用域对象之一,pageContext对象代表当前JSP页面编译后的内容,多用于JSP页面之间共享数据内容。Method Returnstheobjectassociatedwiththenameinthepagescopeornullifnot Removetheobjectreferenceassociatedwiththegivennamefromall name, RegisterthenameandvaluespecifiedwithpagescopeMethodThecurrentvalueoftheoutobject(aThecurrentvalueoftheexceptionobject(anThecurrentvalueofthepageobject(InaServletenvironment,thisisinstanceofThecurrentvalueoftherequestobject(aThecurrentvalueoftheresponseobject(aTheServletConfigThecurrentvalueofthesessionobject(anMethod Searchesforthenamedattributeinpage,request,session(ifvalid),andapplicationinorderandreturnsthevalueassociatedor name,intReturntheobjectassociatedwiththenameinthespecifiedscopeornullifnot name,intRemovetheobjectreferenceassociatedwiththespecifiednameinthegiven name, value,intRegisterthenameandvaluespecifiedwithappropriatescope上述方法中的scopeFieldApplicationscope:namedreferenceremainsavailableintheServletContextuntilitisRequestscope:thenamedreferenceremainsavailablefromtheServletRequestassociatedwiththeServletuntilthecurrentrequestiscompleted.Sessionscope(onlyvalidifthispageparticipatesinasession):thenamedreferenceremainsavailablefromtheHttpSession(ifany)associatedwiththeServletuntiltheHttpSessionisinvalidated.requestrequestjavax.servlet.ServletRequest类的实例,代表着客户端的请求。具体用法请参考Request对象内容。responseresponsejavax.servlet.ServletResponse类的实例,代表着服务器端的响应。具体用法请参考Response对象内容。configconfigjavax.servlet.ServletConfig类的实例,ServletConfigweb.xmlJSP的参数,JSPconfigServletConfig对象sessionsessionjavax.servlet.http.HttpSession类的实例,session与Http协议的无状态问题的两种解决方案。如果在JSP页面中使用<%@pagesession=”false”%>指令的话,则在当前JSP页面中不能使用session内置对象。但一般情况下,不会使用session对象,具体用法请参考HttpSession对象内容。applicationapplicationjavax.servlet.ServletContext类的实例,ServletContextJSP所在的WebWeb应用程序对应一个ServletContextServletContextpage内置对象page是javax.servlet.jsp.HttpJspPage类的实例,page对象代表当前JSPServlet类的对象。page相当于普通Java类中的关键字thisexception内置对象exception是java.lang.ExceptionJSPexception对象只能在使用<%@pageisErrorPage=”true”%>JSP页面中。JSPJavaBean本质上就是一个JavaJSP页面中,既可以使用普通类一样实例化JavaBean类的对象调用方法也可以利用JSP提供的动作JavaBean。一个标准的JavaBeanSetter和Getter方法用于设置和获取JavaBean换句话讲,只要是符合上述条件的类,都可以看作是JavaBeanJavaBeanpublicpublicclassUser{publicStringname;publicBooleanmarried;publicStringgetName()return}publicvoidsetName(Stringname)=}publicBooleanisMarried()return}publicvoidsetMarried(Booleanmarried)this.married=}}API(Introspector内省的出现有利于对JavaBean的属性操作,减少了代码量,内省依赖于Java的反射。通过内省来操作JavaBean通过Class类对象获取BeanInfo通过BeanInfo通过属性描述符对象操作对应JavaBeanpublicpublicclassDemopublicvoidDemo()throwsException{Classc=User.class;Objectobj=BeanInfoinfo=PropertyDescriptor[]pds=***for(PropertyDescriptorpd:pds)//if(pd.getName().equals("name"))//获取JavaBean的name属性的写方法Methodwmdpd.getWriteMethod();wmd.invoke(obj,"longestory");Methodrmd=pd.getReadMethod();}}}}BeanUtils虽然Java提供了反射和内省相关的API,用于操作JavaBean组件的属性。但这些API方法使用起来很复杂,BeanUtils工具是Apache基于Java的内省封装的一个工具包。BeanUtils工具包使用时,需要依赖logging通过BeanUtils工具操作JavaBeanpublicpublicclassDemo{publicvoidDemo()throwsException{Classc=User.class;Objectobj=BeanUtils.BeanUtils.setProperty(obj,"name","longestory");BeanUtils.setProperty(obj,"age","14");BeanUtils.setProperty(obj,"married",true);Stringname=BeanUtils.getProperty(obj,"name");}}通过BeanUtils工具的populate()方法来操作JavaBeanpublicpublicclassDemo{publicvoidDemo()throwsMap<String,Object>map=newHashMap<String,Object>();map.put("name","longestory");map.put("age","18");map.put("married",true);Classc=Objectobj=BeanUtils.populate(obj,map);}}populate()MapJavaBean中,自定义一个工具类来完publicpublicclassCommonUtilspublicstatic<T>TtoBean(Mapmap,Class<T>clazz)tryTbean=clazz.newInstance();BeanUtils.populate(bean,map);returnbean;}catch(Exceptione)thrownew}}}下面通过一个案例来掌握BeanUtils创建一个JSP页面用于显示用户信息<%@<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01页面<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<formaction="/12_jsp/regist"用户名:<inputtype="text:<inputtype="password"确 :<inputtype="password"邮箱:<inputtype="text" <inputtype="submit" 创建一个JavaBean用于封装用户信息publicpublic{privateStringusername;privateStringpassword;privateString;publicStringgetUsername()return}publicvoidsetUsername(Stringusername)this.username=}publicStringgetPassword()return}publicvoidsetPassword(Stringpassword)this.password=}publicString () }publicvoid=;)}publicStringtoString()+}}return="[username="+username+",password="++创建一个Servlet用于接收用户信息publicpublicServletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{= }publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,}}配置Webweb.xml<?<?xmlversion="1.0"encoding="UTF-<web-app" <<<发布Web工程,并进试JSP在JSP中可以像使用普通类一样JavaBean,JSP提供了三个动作<jsp:useBean>该动作用于实例化JavaBean,或者定位一个已经存在的JavaBean实例。该动作的语法格式:<<jsp:useBeanid="实例名称"class="实例全类名"scope="idJavaBean实例的名称。需要注意的是,指定的名称是区分大小写的,并遵照Java语言变量命名的约定。class属性:指定JavaBeanscope属性:指定一个范围,在这个范围中,JavaBean实例的是可用的,实际上也是指定JavaBean实例的生命周期。备选取值有page、request、sessionapplication,默认值为page<jsp:useBean>动作的实际作用可以利用下述Java代码进行解释<<jsp:useBeanid="user"class="app.java.bean.User"scope="session"Useruser=if(user==null){user=newUser();session.setAttribute("user",}该动作与<jsp:useBean>一起使用,用于设置JavaBean的属性。该动作的语法格式:<<jsp:setPropertyproperty="属性名称"name="实例名称"value="属性值该动作用于一个Bean的属性,并把属性的值转化成一个String,然后发送到输出流中。如果属性是一个对象,将调用该对象的toString()方法。该动作的语法格式<<jsp:getPropertyproperty="属性名称"name="实例名称EL表达式语EL便地对象。EL表达式写在JSP的HTML代码中,而不能写在“<%%>”的JSP中。如果在JSP页面中使用了<%@pageisELIgnored=”true”%>JSPEL表达式。EL表达式的话,可以在EL表达式之前添加“\(例如\${1+2}EL表达式的值为null时,会在JSPEL说范结+加-减*乘/除${17/5}或${17div3${17%5}或${17mod2==${5==5}或${5eq${5!=5}或${5ne<${3<5}或${3lt>${3>5}或${3gt<=${3<=5}或${3le>=${3>=5}或${3ge非emptynot或!一起使用。${notemptyServletELTomcat4.xELEL表达式提供了获取JavaBeanEL或者JSP<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01<title>MyJSP'expression.jsp'starting<metahttp-equiv="pragma"content="no-<metahttp-equiv="cache-control"content="no-<metahttp-equiv="expires"<jsp:useBeanid="user"class="app.java.bean.User"<!--相当于 ")-- <!--相当 .getAge()--<!--也相当于<jsp:getProperty "property="age">--您 为 ELEL表达式不仅可以对象还内置了十一个隐藏对象这些内置对象无需创建可以直接使用。EL表达式中的内置对象中,最重要的是获取四大域相关的内置对象,如下表:描示apge作用域内Map使用<jsp:useBeanid=”user”class=”app.java.bean.User”scope=”pagename属性值request作用域内变量的Map使用 >对象的name属性值。useBean默认的作用域为requestsession作用域内变量的Mapname域内变量的Map scope=”applcation”>applcationScope范围内的User对象后{类描示包含所有参数的String包含所有参数的String[],包含所有头信息的Map包含所有头信息的Map包含所有M name (“user”,“king”))%>设置后 返回 response、page${pageContext.request.remoteAddr}IP地址,相<<ahref="${pageContext.request.contextPath/index.jsp">请求ELEL函数库是由第对EL表达式的扩展,目前学习的EL函数库是由JSTL(关于JSTL会在后面的内容学到)添加的。ELEL表达式调用。当然不只是JSTLELEL函数库。因为EL函数库是第提供的,所有要想使用的话,首先需要使用taglib指令引入<%@<%@taglibprefix="fn" /jsp/jstl/functions"JSTL提供的ELStringtoUpperCase(Stringinput)StringtoLowerCase(Stringinput)intindexOf(Stringinput,Stringsubstring)booleancontains(Stringinput,Stringsubstring)booleanstartsWith(Stringinput,Stringsubstring)booleanendsWith(Stringinput,Stringsubstring)StringsubstringAfter(Stringinput,Stringsubstring)StringsubstringBefore(Stringinput,Stringsubstring)StringescapeXml(Stringinput)Stringtrim(Stringinput)Stringrece(Stringinput,StringsubstringBefore,StringsubstringAfter):将一个字符串中的某个Strin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版企业财务数据保密合作合同版B版
- 2024版影视作品制作与发行协议
- 2024自然人互贷现金协议样式大全版B版
- 2024门店劳动法执行标准劳动合同范本解析3篇
- 二零二五年度钢筋班组劳务分包安全生产责任合同3篇
- 专业测量员招聘协议样本2024
- 二零二五版保险资金股权质押反担保贷款合同3篇
- 二零二五年度床上用品原材料进口与加工合同3篇
- 二零二五版人工智能应用第三方履约担保协议3篇
- 沈阳化工大学《审计学A》2023-2024学年第一学期期末试卷
- 脑血管疾病三级预防
- HSK标准教程5上-课件-L1
- 人教版五年级下册数学预习单、学习单、检测单
- JC-T 746-2023 混凝土瓦标准规范
- 如何落实管业务必须管安全
- 四年级上册三位数乘除两位数计算题
- 《水电工程招标设计报告编制规程》
- 2023年甘肃兰州中考道德与法治试题及答案
- 生产工厂管理手册
- 项目工地春节放假安排及安全措施
- 印染厂安全培训课件
评论
0/150
提交评论