JSP学习回忆3

1、<taglib>-><tag>-><attribute>-><rtexprvalue>true</rtexprvalue><!--可使用EL表达式-->
2、自定义标签库的类实现过程:
a、简单标签或带属性标记:要实现接口Tag或继承其辅助类TagSupport,要实现的方法有
   doStartTag(),doEndTag()
b、带标记体的:可实现BodyTag,Tag或SimpleTag或Iterationtag接口,但一般是用子类
   BodyTagSupport来实现,方法有:
    doStartTag(return EVAL_BODY_INCLUDE(跳过setBodyContent()和doInitBody())/EVAL_BODY_BUFFERED:对标记体处理/SKIP_BODY:跳过标记体),
    doAfterBody(return EVAL_BODY_AGAIN:重新再次处理标记体/SKIP_BODY:跳出标记体)
3、自定义标签库的TLD文件例子(放到/WEB-INF/(某文件夹)下):
  <?xml version='1.0' encoding='utf-8'?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>simplet</short-name>
<description>simple tag example</description>
<display-name>simple tag</display-name>
<uri>http://www.tags.com/tag</uri><!--该标签库的uri标记-->

   <tag>
   <name>wordcount</name><!--该标签的名称-->
   <tag-class>tagClass.WordCount</tag-class><!--该标签对应的类-->
   <body-content>empty</body-content><!--该标签的体(不为空时通常是JSP)-->
  <attribute><!--包含的属性-->
   <name>inputname</name><!--属性的名称-->
   <required>true</required><!--是否为必须-->
   <rtexprvalue>false</rtexprvalue><!--是否允许EL表达式-->
  </attribute>
  <attribute>
   <name>warnEmpty</name>
   <required>true</required>
   <rtexprvalue>true</rtexprvalue>
   <type>boolean</type><!--属性的数据类型-->
  </attribute>
   </tag>
</taglib>
4、自定义标签库在web.xml中的声明:
   <taglib>
  <taglib-uri>http://www.tags.com/tag</taglib-uri><!--对应标签库的uri标记-->
  <taglib-location>/WEB-INF/tags/mytag.tld</taglib-location><!--.tld文件位置-->
   </taglib>
5、过滤器的简单使用过程:
  a、实现类:主要使用到Filter,FilterConfig,FilterChain. 必须实现Filter.FilterConfig类似于servlet的ServletConfig,可用
    getInitParameter("")得到web.xml中声明的初始值<init-param>. FilterChain用于调用下一个过滤器.
    主要方法:init(FilterConfig),destroy(),doFilter(ServletRequest,ServletResponse,FilterChain){
  调用FilterChain.doFilter()传到下一个过滤器,最后将会是Servlet或JSP}
  
b、web.xml中的映射声明例子:
   <?xml version="1.0" encoding="utf-8"?>
<web-app>
<description>a filter example in the j2ee web book</description>
<display-name>security filter</display-name>

<filter>
  <filter-name>security</filter-name><!--该Filter的名称-->
  <filter-class>SecurityFilter</filter-class><!--对应的Filter实现类-->
   <init-param><!--要初始化的参数-->
    <param-name>rightpass</param-name><!--参数名称-->
    <param-value>tufu</param-value><!--参数的初始值-->
   </init-param>
</filter>

<filter-mapping><!--某filter对应的映射-->
  <filter-name>security</filter-name><!--对应的filter名称-->
  <url-pattern>*.jsp</url-pattern><!--要过滤的url样式或servlet-->
                <!--或servlet-name>*.do</servlet-name>这时要有相应的servlet声明如下 -->
</filter-mapping>
<servlet><!--要在url中用到的servlet声明-->
  <servlet-name>simpleFilter</servlet-name><!--serlvet的名称-->
  <servlet-class>class.simplefilter</servlet-class><!--servlet的实现类的位置-->
        </servlet>
        <servlet-mapping><!--对应的servlet映射-->
  <servlet-name>simpleFilter</servlet-name><!--对应的servlet的名称-->
  <url-pattern>/do</url-pattern><!--调用该servlet的url样式-->
  </servlet-mapping>

</web-app>

你可能感兴趣的:(Web,jsp,xml,servlet,Security)