下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章JSP为了简化在JSP表达式和程序中的Java代码,可以使用9个预定义的内部对象。这些对象由JSP服务器建立,JSP可以直接使用,不需要显式地。这9个对象分别为:request用来请求信息,reaponse用来响应信息,outHTML标准输出,pageContext表示当前JSP页面的上下文信息,sessionHTTP联机会话信息,applicationservlet上下文信息,configJSPservlet配置信息,由web应用配置描述文件,exception用来处理异常信息和page代表当前页面。requestequetavax.erve.hp.HtpServetequetrequest、s和请求相关的参数值等。该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。RequestHTTPHeaderHTTP请址和端口等;获取协议版本。Request对象方法见表4-2。4-2request对象方ObjectgetAttribute(StringnameEnumerationrequest对象的所有属性名称的集String返回用来保护servlet的认证方法的名称,未受保护时nullString返回请求中的字符编码方法,可以在response对象中int返回请求BODY的长度,不能确定长度时返回-1。可以在response中设置Stringresponse中定义的内容类String[]get返回客户端所有的的数EnumerationEnumerationgetHeaders(StringStringgetHeader(String返回指定名称HTTP头的信longgetDateHeader(String返回指定名称Data类型HTTPintgetIntHeader(String返回指定名称Int类型HTTP头的信ServletInputStreamLocale返回当Locale对象responseEnumeration返回请求中Locale对象的集StringStringintStringStringgetParameter(StringMap该方法返回包含请求中所有参数Map对EnumerationString[]getParameterValues(StringStringget方法传递的参数字符串,该方法不分解出单String取出请求中处于ServletPath和QueryString之间的额外String返回用getPathInfo()方法取得的路径信息的实际路StringBufferedReader返回请求的输入流对应的Reader对象String获取发出请求的客户IP地StringString返回经过客户端验证的用户名 验证返回intStringgetRealPath(StringgetRequestDispatcher(Stringpath)Stringsession的标StringStringBufferString获取协议名称,缺省值HTTP协StringString intvoidremoveAttribute(StringvoidsetAttribute(Stringname,ObjectvoidsetCharacterEncoding(StringHttpSessionHttpSessiongetSession(booleancreate boolean检查请求的会IDURL传boolean检查请求的会ID是否仍然有boolean ,如果HTTPSbooleanisUserInRole(String检查已经通过验证的用户是否在role所指定的角Principal返回包含用户登陆名的一个java.security.Principal对request4-3request成员列StringBASIC_AUTH= 认StringCLIENT_CERT_AUTH=StringDIGEST_AUTH=StringFORM_AUTH=requestRequestgetParameter(strings)方法获取表单所提交的信息。格式为:<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<FORMaction="show.jsp"method=post:<INPUTtype="text"<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<FORMaction="show.jsp"method=post:<INPUTtype="text"name="name">:<INPUTtype="text"name="sex">:<INPUTtype="text"name="age"><INPUTTYPE="submit"value="enter"用户在浏览器中输入该页面的部署路径,可得到如图4-1所示的界面,然后用户action所指定的页面,在这里一定要注意了,前面这个页面可以随便取名,但是第二个页面的相对路径和名字一定要和第一个页面中的action属性的值符合。4-1用户输入信息页<%@pagelanguage="java"<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在这里设定request得到参数的字符编码,否则中文会出现乱码<%request.setCharacterEncoding("gb2312");<font :<%=request.getParameter("sex").toString() <font 当用户在第一个页面单击“提交”按钮后,用户输入的信息就会提交到4-2show.jsp页面显<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在这里设<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法<%--在这里设定request得到参数的字符编码,否则中文会出现乱码 StringnameParam=request.getParameter("name").toString();StringsexParam=request.getParameter("sex").toString();StringageParam=request.getParameter("age").toString();StringbuttonParam=request.getParameter("submit").toString();If(nameParam!=null&&sexParam!=null&&ageParam!=null&&buttonParam!=null){<font :<%=nameParam:<%=sexParam:<%=ageParam<font<%=buttonParam<fontcolor=red><%@pagelanguage="java"contentType="text/html"<title>request<%@pagelanguage="java"contentType="text/html"<title>requestgetparameter()方法StringnameParam=request.getParameter("name");bytenameByte=nameParam.getBytes("GB2312");nameParam=newString(nameByte);StringsexParam=request.getParameter("sex");bytesexByte=sexParam.getBytes("GB2312");sexParam=newString(sexByte);StringageParam=request.getParameter("age");byteageByte=ageParam.getBytes("GB2312");ageParam=newString(ageByte);StringbuttonParam=request.getParameter("submit");bytebuttonByte=buttonParam.getBytes("GB2312");buttonParam=newString(buttonByte);If(nameParam!=null&&sexParam!=null&&ageParam!=null&&buttonParam<font<font :<%=nameParam:<%=sexParam:<%=ageParam<font<%=buttonParam<fontcolor=red><%@pagecontentType="text/html<%@pagecontentType="text/html;charset=GB2312"<%@pageimport="java.util.*"<BODY<%Stringprotocol=request.getProtocol();<%Stringpath=request.getServletPath();<%intlength=request.getContentLength();<%Stringmethod=request.getMethod();<BR>HTTP头文User-Agent的值<%Stringheader1=request.getHeader("User-Agent");<%Stringheader2=request.getHeader("accept");<%Stringheader3=request.getHeader("Host");<BR>HTTP头文件accept-encoding<%Stringheader4=request.getHeader("accept-encoding");<BR>获取IP地址<%StringIP=request.getRemoteAddr();<%StringclientName=request.getRemoteHost();<%StringserverName=request.getServerName(); <%intserverPort=request.getServerPort();<%Enumerationenum=request.getParameterNames();while(enumhasMoreElements()){String ement();}<%Enumerationenum_headed=request.getHeaderNames();while(enum_headedhasMoreElements()){Strings=(String)enum_headednex }<%Enumerationenum_headedValues=request.getHeaders(" while(enum_headedValueshasMoreElements()){Strings=(String)enum_headedValues ement();}4-34-3request常用方法实responseResponsejavax.servlet.http.HttpServletResponse类的实现实例。response对JSPresponseHTTP的状态和向客户端发送数据,如,HTTP文件头信息等。esponeHTTPHeader信息进行处理;设置数据内容的类型和长度;获取输出流;进行本地化操作;缓冲控制;浏览器重定向;响应状态控制;向浏览器送。espone表4-4所示。4-4response对象方void 添加一个对象,保存客户端信voidaddDateHeader(Stringname,long添加一个日期类型的HTTP头信息,覆盖同名HTTPvoidaddHeader(Stringname,String添加一HTTP头,覆盖同HTTPvoidaddIntHeader(Stringname,intbooleancontainsHeader(StringHTTP头是否存StringencodeRedirectURL(StringsendRedirect()方法使URL进行编StringencodeURL(StringURL予以编码,回sessionIDvoidintkb为单位的缓冲StringStringLocaleLocale对ServletOutputStreamPrintWriter获取输出流对应writer对 voidvoidbuffer中所有的内容,但是保HTTP头和状voidsendError(intxc,Stringmsg)voidsendError(intxc)voidsendRedirect(StringlocationgvoidsetBufferSize(intsizekb为单位的缓冲voidsetCharacterEncoding(StringvoidsetContentLength(intlength设置响应BODY长voidsetContentType(StringtypevoidsetDateHeader(Stringname,long设置指定名称Data类型HTTPvoidsetHeader(Stringname,StringvoidsetIntHeader(Stringname,int设置指定名称int类型HTTP头的voidsetStatus(intreponse4-5response4-5response成员列intSC_ACCEPTED=intSC_BAD_REQUEST=intSC_=intSC_CONTINUE=intSC_CREATED=intSC_FORBIDDEN=intSC_FOUND=intSC_GONE=不支持HTTP版intSC_HTTP_VERSION_NOT_SUPPORTED=intSC_INTERNAL_SERVER_ERROR=intSC_LENGTH_REQUIRED=intSC_METHOD_NOT_ALLOWED=intSC_MOVED_PERMANENTLY=intSC_MOVED_TEMPORARILY=intSC_MULTIPLE_CHOICES=intSC_NO_CONTENT= intSC_NON_AUTHORITATIVE_INFORMATION=intSC_NOT_ACCEPTABLE=intSC_NOT_FOUND=intSC_NOT_IMPLEMENTED=intSC_NOT_MODIFIED=intSC_OK=intSC_PARTIAL_CONTENT=intSC_PAYMENT_REQUIRED=intSC_PRECONDITION_FAILED= intSC_PROXY_AUTHENTICATION_REQUIRED=intSC_REQUEST_ENTITY_TOO_LARGE=intSC_REQUEST_TIMEOUT=intSC_REQUEST_URI_TOO_LONG=intSC_REQUESTED_RANGE_NOT_SATISFIABLE=intSC_RESET_CONTENT=intSC_SEE_OTHER=intSC_SWITCHING_PROTOCOLS=intSC_TEMPORARY_REDIRECT=未intSC_UNAUTHORIZED= intSC_UNSUPPORTED_MEDIA_TYPE=intSC_USE_PROXY=Response当一个用户一个jsp页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么jsp引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(Strings)方法来改变contentTypestext/html(html文件,application/x-msexcel<%@pagecontentType="text/html;charset=GB2312"ResponsesetContentType方(Excel文件aplicatin/sword<%@pagecontentType="text/html;charset=GB2312"ResponsesetContentType方ResponsesetHeader()方法可以设置页面的自动刷新时间间隔。实现重新加 response.setIntHeader(“Refresh”,等待刷新时间 <%@pagelanguage="java"<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<title>response对象刷新out.println(new4-4自动刷新当前时Response<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-<title>sendRedirect方法定位Stringaddress=request.getParameter("position"); elseif(address.equals("MS"))elseif(address.equals("MS"))elseif(address.equals("IBM"))}<formaction="redirect.jsp"<select<optionvalue="CSDN"selected>goto<optionvalue="MS">go<optionvalue="IBM">goto<inputtype="submit"value="提交4-5response重定outOut对象用于把结果输出到网页上,它是javax.servlet.jsp.JspWriter的一个实例。从java.io.Writer拓展而来的公共抽象类JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能。但是,不同之处在于它会在打印方法中抛出(throw)java。Io.IOExceptionpageautoflush="true",那么当出现由于当前的操作不清空缓存而造成缓冲区溢出的情况时,这个类的所有I/O操作会自动清空缓冲区的内容。如果autoflush="false",那么当操作造成了缓冲区溢出时,这个类的所有的I/O操作将抛出一个IOException。Out对象可以输出变量的值,字符和字符串;缓冲控制。Out4-4-6outvoidvoidvoidvoidintkb为单位的目前缓冲区大int获取kb为单位的缓冲区中未被占用的空间大booleanvoidvoidprint(数据类型将指定类型的数据输出Http流,不换voidprintln(数据类型将指定类型的数据输出Http流,并输出一个换行Appendableappend(charc) cxq,intstart,intend) cxq将一个字符或者实现了CharSequence接口的对象添加到输out4-7outintDEFAULT_BUFFER=intNO_BUFFER=-intUNBOUNDED_BUFFER=-out<%@pagelanguage="java"contentType="text/html;charset=gb2312"用<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;charset=ISO-8859-<title>Inserttitlejava.util.DaterightNow=new分秒4-64-6当前时pageContextpageContext对象JSP页面相关信息,如属性、内建对象等。pageContext对象是javax.servlet.jsp.PageContext类的一个实例。pageContext对象提供了存取所有关于JSPsession,application,config,out等对象属性。对于pageContext对象,它的范围是page。 HttpSessionsession= PageContextJSP隐含对象;所有范围的属性操作;页面重定向;页面包含其他页面操作。PageContext对象方法见表4-8所示。4-8pageContext对象方voidsetAttribute(Stringname,Objectvalue,intscope)voidsetAttribute(Stringname,ObjectvalueObjectgetAttribute(Stringname,intscope)ObjectgetAttribute(Stringname)取得指定共享范name为名字的ObjectfindAttribute(StringnamevoidremoveAttribute(Stringname,intscope)voidremoveAttribute(Stringname)voidforward(Stringurl将页面导航到指定 scope)intgetAttributeScope(StringnameErrorDataerrorData对Exceptionexception对ExpressionEvaluator取得页expressionEvaluator对JspWriterout对Objectpage对ServletRequestrequest对ServletResponseresponse对ServletConfigconfig对ServletContext取得页servletContext对HttpSessionVariableResolvervoidinclude(Stringurl,booleanflush)voidinclude(Stringurl)voidvoidinitialize(Servletservlet,ServletRequestrequest,ServletResponseresponse,StringerrorPageURL,booleanintbufferSize,booleanautoFlush初始化初始化的pageContext对BodyContextBodyContextpushBody(Writerwriter保存当前的out对象,并更新pageContextpage范围内out对JspWritepageContext4-9pageContext成员列intPAGE_SCOPE=intREQUEST_SCOPE=intSESSION_SCOPE=intAPPLICATION_SCOPE=pageContext<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<metahttp-equiv="Content-Type"content="text/html;<title>pageContext对象 toString())%>pageContext图4-7pageContext对象不同范围的属sessionessionSession对象是一个jpp户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要ession对象。当一个客户首次服务器上的一个jsp页面时,JSP引擎产生一个session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在中,这样session对象和客户之间就建立了一一对应的关系。当客户再连务器端该客户的session对象才取消,并且和客户的会话对应关系。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。有时,用户可能会忘记退出登录或关闭浏览器,这时,往往需要指定会话持续时间,也就是没有请求操作的持续时间,一般是30分钟的过期时间。可以直接使用setMaxnacvenerva()方法来设定当前会话的可持续时间。Session对象可以和获取会话有效的属性对象;控制会话;得到会话状态;获取会话相关的servlet上下文。Session对象方法见表4-10所示。4-10session对象方ObjectgetAttribute(Stringname获取与指定名字相关联sessionEnumerationlongsession的创建时间,最小单位千分之一Stringsession标long返回与当前session相关的客户端最后一次的时间,由1970-01-01算起,单位毫秒intgetMaxInactiveInterval(intinterval返回总时间,以秒为单位,表示session的有效时(session不活动时间)。-1为永不过ServletContextJSPServletContextHttpSessionContextObjectgetValue(Stringname取得指定名称sessionString[]取得所session变量的名称的集voidbooleanvoidpubValue(Stringname,Objectvalue)voidremoveValue(StringnamevoidsetAttribute(Stringname,Stringvalue)设置指定名称sessionvoidsetMaxInactiveInterval(intintervalvoidremoveAttribute(StringnamesessionJSPsession<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<%@pageimport="java.util.*"<title>session对象StringsessionID=会话标识Sessionid:<%=sessionID%>建立时Created<%=<%=newDate原设置一次会话持续的时间OldMaxInactiveInterval 的时间<%=newDateSessionNew设置会话共享的属性content="sessionexample<%session.setAttribute("content","session显示原会话共享的属性<%=session.getAttribute 设置会话新的持续的时间New<%4-8session对象方法、属<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>session统 量<%!intnumber=0;synchronizedvoidcount(){number++;}{Stringstr=String.valueOf(number);}<P>您是第<%=(String)session.getAttribute("count")%> 4-9图4-9量统applicationApplicationWebServletJSP页面中共享信息,也就是说,application对象中的信息不是对具体用户而是对同一个Web应用都有所以,application对象实现了用户间数据的共享,可存放全局变量。它开始于服对象属性的操作,都将影响到其他用户对此的。在JSP服务器运行时刻,仅有一,开发人员只能创建这个Appliation对象的同步拷贝。MIMEpath的实际路径;日志管理。Application对象的方法见表4-11所示。4-11application对象方ObjectgetAttribute(Stringname返回nameapplication属Enumerationapplication属 uripath)取得当前应用ServletContext对StringgetInitParameter(Stringname返回name指定application属性的初始Enumeration返回所有application属性的初始值的集intservlet容器ServletAPI的版本StringgetMimeType(Stringfile返回指定文件的类型,未知类型返回null。一般为"text/html"和intservlet容器支持ServletAPI的副版本StringgetRealPath(StringpathgetNamedDispatcher(Stringname)为指定名字的Servlet对象返回一个RequestDispatcher对getRequestDispatcher(Stringpath)返回一RequestDispatcher对象的实URLgetResource(Stringpath返回指定的资源路径对应的一URL对象实例,参数要getResourceAsStream(Stringpath返回一个由path指定位置的资源的InputStreamSetgetResourcePaths(Stringpath 在web-app中所有资源路径的集StringServletgetServlet(StringnameServletContext中检索指定名称EnumerationStringEnumerationServletContext中所servlet的名称集voidlog(Exceptionex,Stringmsgvoidlog(Stringmsg,Throwablet)voidlog(Stringmsg)把指定的信息servletlog文voidremoveAttribute(Stringname移除指定名称application属voidsetAttribute(Stringname,Objectvalue)设定指application属性的applicationapplication<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>application对象<%=application.getServerInfo()<%=application.getMajorVersion()%>.<%=application.getMajorVersion()web应用名称<%=application.getServletContextName()<%=application.getRealPath("/application.jsp")<%=application.getMimeType("application.jsp")4-10application对象获取服务器对象中和<%@<%@pagelanguage="java"contentType="text/html;charset=gb2312"<title>application方法Stringusername="application对象";Stringpassword="attribute属性";out.println("<fontcolor=red>"+"application设定的属性之值:"+"</font>"+"<BR>");out.println("<fontcolor=red>"+"application属性后的值:"+"</font>"+"<BR>");applicationremoveAttribute("username");applicationremoveAttribute("password");4-11application方法page对应得Servlet类的实现对象。可以用javax.servlet.jsp.HttpJspPage)pagepage对象占用的内存比较多,一般情况下,不建议使用page对象。4-12page对象方classint返回Objecthashbooleanequals(Object判断Object是否与Object对象相voidcopy(ObjectObjectStringObject对象转换Stringvoidvoidvoidwait(int使一个线程处于等待直到timeout结束或被唤voidvoidObject加voidObject开page<%@pagelanguage="java"contentType="text/html;charset=gb2312"<%@pagelanguage="java"contentType="text/html;charset=gb2312" <title>page对象<b>page指令info属性取值<%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()Page对象类型为Object,需要使用强制类型转换(javax.servlet.Servlet())12page对config配置描述文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届江苏省苏州市平江中学高三冲刺模拟英语试卷含解析
- 江西上饶重点中学2025届高考英语一模试卷含解析
- 辽宁省沈阳市2025届高考英语全真模拟密押卷含解析
- 现代学徒制课题:数智赋能视角下中国特色学徒制创新发展研究(附:研究思路模板、可修改技术路线图)
- 2025届广东省六校高考仿真卷英语试题含解析
- 上海市延安中学2025届高三压轴卷数学试卷含解析
- 2025届黑龙江省哈市六中高考语文三模试卷含解析
- 甘肃省白银市靖远一中2025届高三第二次模拟考试数学试卷含解析
- 2025届河北省唐山市乐亭一中高三第一次调研测试语文试卷含解析
- 2025届浙江省嘉兴市重点中学高三下学期一模考试语文试题含解析
- 人工智能如何改变我们的生活
- 高速公路工程建设指挥部计量支付管理办法
- 吉林省吉林市2023-2024学年高三上学期第二次模拟考试 生物 二模
- 线上房博会方案
- 2023年CNC程序工程师年度总结及下一年计划
- 成长的足迹展现独特的魅力小学四年级主题班会
- 数字媒体技术专业大学生职业生涯规划书
- 一年级数学重叠问题练习题
- 西师版数学一年级上册全套单元试卷
- 第12课 明朝的兴亡
- 无人生还-读书分享
评论
0/150
提交评论