JSP自定义标签总结

时间:2024.5.2

JSP自定义标签总结

JSP自定义标签分离了程序逻辑和表示逻辑,将Java代码从HTML中分离,而且可重用。

自定义标签由标签处理程序和标签描述组成;

标签处理程序是一个Java类,实现特定的标签接口;

Web容器在处理JSP页面的过程中,在处理自定义标签时调用相应的标签处理程序;

目前流行的标签库有:JSP标准标签库JSTL和Struts TagLib; 一个自定义标签需要具备三个条件才能工作:

1、标签处理程序:一个自定义标签必须有后台的一个java类来处理标签的的具体内容;

2、标签描述:一个标签需要一个描述文件(后缀名为tld的文件)来描述标签的前缀,名称,熟悉,哪个类来处理等等;

3、Jsp页面通过taglib指令引入标签,才能够使用。

容器标签:带有属性和主体部分,成对出现,反之为空标签。 当然了,还需要修改web.xml文件,增加自定义标签支持 Tag接口的生命周期: setPageContext(),setParent(),doStartTag(),release(),还需要导入servlet架包(servlet-api,jar, 简单说一下servlet:Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的

中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程,在未来的技术发展过程中,Servlet有可能彻底取代CGI)。当用户访问这样的网页时,Applet被下载到用户计算机上执行,但前提是用户使用的是支持Java的网络浏览器。由于Applet是在用户计算机上执行的,因此它的执行速度是不受网络宽带或者MODEM存取速度的限制,用户可以更好的欣赏网页上Applet产生的多媒体效果。在Java Applet中,可以实现图形绘制、字体和颜色控制、动画和声音的插入、人机交互及网络交流等功能.Applet还提供各种名为抽象窗口工具箱 (Abstract Window Toolkit,AWT)的窗口环境开发工具,但AWT的设计是存在缺陷的,取而代之的Swing技术为Java GUI组建的轻量组建.它们利用用户计算机的GUI元素,可以建立标准的图形用户界面,如窗口、按钮、滚动条等。目前,在网络上有非常多的Applet范例来生动地展现这些功能。)

TLD(标签描述符tag library descriptor)文件对于自定义标签处理程序,就像web部署描述符对于servlet一样。

我们使用TagSupport实现类(或BodyTagSupport),包括IterationTag

接口和Tag接口中的所有方法,实际应用中只需重写doStartTag()方法和doEndTag()方法即可。


第二篇:jsp自我总结


参考servlet中的接口:

request.getScheme(); 返回的协议名称,默认是http

request.getServerName() 返回的是你浏览器中显示的主机名,你自己试一下就知道了 getServerPort() 获取服务器端口号

request.getContextPath()应该是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串。如果项目为abc, <%=request.getContextPath()% > 将得到abc,服务器端的路径则会自动加上,<a href="XXXX.jsp"> 是指当前路径下的这个xxx.jsp页面,有时候也可以在head里设置html:base来解决路径的问题,不过用的最多的还是request.getContextPath。 在js文件中得到request.getContextPath()的值,不想在JSP中写太多的Javascript代码: 一种方法是用

hidden: <input type=hidden name=contextPath value=<%= request.getContextPath()> 再就是在本页面的js里面也是可以使用Scriptlet来赋值的: var a = '<%=

request.getContextPath()>' 或者你赋值给一个hidden的控件都是可以的,然后js取,这样js可以不用写在jsp里

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", -10);

HTTP消息报头包括普通报头、请求报头、响应报头、实体报头。

普通报头中的Cache-Control用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。

请求时的缓存指令包括:no-cache(用于指示请示或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;

响应时的缓存指令包括:public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age、s-maxage。

例:为了指示IE浏览器(客户端)不要缓存页面,服务器端的jsp程序可以编写如下: response.setHeader(“Cache-Control”, “no-cache”);

//response.setHeader(“Pragma”, “no-cache”);作用相当于上行代码,通常两者合用

Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中(再次访问曾访问过的页面时,直接从缓存中加载,缩短响应时间和降低服务器负载)的页

面,我们可以使用Expires实体报头域指定页面过期时间。例:Expires:Thu,15 Sep 20xx 16:23:12 GMT

HTTP1.1的客户端和缓存必须将其他非法的日期格式(包括0)看作已经过期。如:为了让浏览器不要缓存页面,也可以利用Expires实体报关域,设置为0,jsp程序如下:

response.setDateHeader(“Expires”, “0”);

System.out.println("Protocol: " + request.getProtocol());

System.out.println("Scheme: " + request.getScheme());

System.out.println("Server Name: " + request.getServerName() ); //获得服务器的名字 System.out.println("Server Port: " + request.getServerPort()); //获得服务器的端口号 System.out.println("rotocol: " + request.getProtocol());

System.out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo()); System.out.println("Remote Addr: " + request.getRemoteAddr()); /获得客户端的ip地址 System.out.println("Remote Host: " + request.getRemoteHost()); //获得客户端电脑的名字,若失败,则返回客户端电脑的ip地址

System.out.println("Character Encoding: " + request.getCharacterEncoding());

System.out.println("Content Length: " + request.getContentLength());

System.out.println("Content Type: "+ request.getContentType());

System.out.println("Auth Type: " + request.getAuthType());

System.out.println("HTTP Method: " + request.getMethod()); //获得客户端向服务器端传送数据的方法有get、post、put等类型

System.out.println("ath Info: " + request.getPathInfo());

System.out.println("ath Trans: " + request.getPathTranslated());

System.out.println("Query String: " + request.getQueryString());

System.out.println("Remote User: " + request.getRemoteUser());

System.out.println("Session Id: " + request.getRequestedSessionId());

System.out.println("Request URI: " + request.getRequestURI());//获得发出请求字符串的客户端地址

System.out.println("Servlet Path: " + request.getServletPath()); //获得客户端所请求的脚本文件的文件路径

System.out.println(request.getHeaderNames()); //返回所有request header的名字,结果集是一个enumeration(枚举)类的实例

System.out.println("Accept: " + request.getHeader("Accept"));

System.out.println("Host: " + request.getHeader("Host"));

System.out.println("Referer : " + request.getHeader("Referer"));

System.out.println("Accept-Language : " + request.getHeader("Accept-Language"));

System.out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding"));

System.out.println("User-Agent : " + request.getHeader("User-Agent")); //返回客户端浏览器的

版本号、类型

System.out.println("Connection : " + request.getHeader("Connection")); System.out.println("Cookie : " + request.getHeader("Cookie"));

System.out.println("Created : " + session.getCreationTime());

System.out.println("LastAccessed : " + session.getLastAccessedTime()); 假定你的web application 名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp

则执行下面向行代码后打印出如下结果:

1、 System.out.println(request.getContextPath()); 打印结果:/news

2、System.out.println(request.getServletPath()); 打印结果:/main/list.jsp

3、 System.out.println(request.getRequestURI()); 打印结果:/news/main/list.jsp

4、 System.out.println(request.getRealPath("/"));

打印结果: F:/Tomcat 6.0/webapps/news/test

更多相关推荐:
大学生自我鉴定范文

大学生自我鉴定(一)回顾大学三年,通过良师的教导和自身的刻苦学习,我已初步掌握如何运用英语知识进行一般商务活动,也养成了认真对待学习和工作的好习惯!在思想品德上,本人有良好道德修养,并有坚定的政治方向.我热爱祖…

工作转正自我鉴定范文

范文一时间匆匆转走现在的工作已经渐渐变得顺其自然了这或许应该是一种庆幸是让我值得留恋的一段经历一个多月的试用期下来自己努力了也进步了不少学到了很多以前没有的东西我想这不仅是工作更重要的是给了我一个学习和锻炼的机...

自我鉴定范文

自我鉴定范文,仅供风景园林专业的您制作简历时参考作为一个学园林的我,性格开朗,思维活跃,对设计有着极高的热情,自我要求高,希望做好每件事情!!!同时我也乐于参加各项活动,团队意识出众,善与人沟通,并对各个方面的…

工作自我鉴定范文

自我鉴定范文工作以来在单位领导的精心培育和教导下通过自身的不断努力无论是思想上学习上还是工作上都取得了长足的发展和巨大的收获现将工作总结如下思想上积极参加政治学习坚持四项基本原则拥护党的各项方针政策自觉遵守各项...

自我鉴定范文

研究生毕业自我鉴定范文1本人在硕士研究生学习阶段思想上要求上进认真学习努力钻研专业知识毕业之际回顾三年来的学习工作以及生活做自我鉴定如下思想上本人始终对自己有较高的要求主动和党组织靠拢经本人申请以及参加党课学习...

工作成绩自我鉴定范文

我思想积极上进,热爱中国共 产 党,拥护党的领导,认真学习马列主义、毛泽东思想、邓小平理论和“xxxx”的重要思想。我热爱工行,工作积极,认真学习总省分行下发的各种文件,认真学习姜建清、黄明祥、李涛行长的讲话,认真…

成人教育自我鉴定范文

免费分享创新成人教育自我鉴定范文电大学习生活已接近尾声虽然我们都是已经走上工作岗位的学生不能像全日制学生那样全天候的在校学习生活但这种工作学习实践再学习再实践的学习模式使我收获匪浅受益终生回顾这二年的学习历程感...

工作转正自我鉴定范文四篇

范文一时间匆匆转走现在的工作已经渐渐变得顺其自然了这或许应该是一种庆幸是让我值得留恋的一段经历一个多月的试用期下来自己努力了也进步了不少学到了很多以前没有的东西我想这不仅是工作更重要的是给了我一个学习和锻炼的机...

大学生档案自我鉴定范文

大学毕业生自我鉴定参考范文范文1四年的大学生活充实而紧张我努力把自己培养成为一名社会所需要的人才四年里我始终坚持quot天道酬勤quot的原则一日三省自信品格的日趋完善勇于行事务实求新自信工作有所成绩三更灯火寒...

高等学校毕业生登记表自我鉴定范文25篇

高等学校毕业生登记表自我鉴定范文25篇余克振整理大学毕业生自我鉴定参考范文范文1四年的大学生活使我对人生观价值观世界观都有了更深的认识我的为人之道以诚待人待事坚持信念行动创造价值自我创新如今回首是对过去的审视和...

大二的自我鉴定范文

这是大二的自我鉴定范文告别了中学时代迈进大学校门人生的历程翻开了新的一页人生的道路也跨入了新的阶段时光荏苒恍若白驹过隙般竟来到了象牙塔里的第二个春秋回首这一年的校园生涯无限感慨在大学的摇篮里我们如沐春风般受到了...

大学毕业生自我鉴定25篇范文(毕业生登记表)

推荐阅读毕业生如何写好自我鉴定附六篇范文毕业生自我鉴定是毕业生对自己在校期间的政治思想道德品行专业学习课外活动社会实践等方面全面如实的自我总结鉴定是毕业生档案中的重要材料要求认真做好如下提纲供毕业生在进行自我鉴...

自我总结鉴定范文(31篇)