标签控制页面1

来源:互联网 发布:软件猎手官方下载 编辑:程序博客网 时间:2024/04/27 17:58
 

使用标签控制页面逻辑案例:

1、          防止盗链<c:referer site=”” page=””>

Jsp页面的内容:<c:referer site=”http://localhost”page=”index.jsp”>

Tld文件的描述:<tag>

                      <name>referer</name>

                   <tag-class>com.hbsi.web.tag.RefererTag</tag-class>

                       <body-content>empty</body-content>

                       <attribute>

                          <name>site</name>

                          <required>true</required>

                          <rtexprvalue>true</rtexprvalue>

                      </attribute>

                       <attribute>

                          <name>page</name>

                          <required>true</required>

                          <rtexprvalue>true</rtexprvalue>

                      </attribute>

               </tag>

标签处理器:public class RefererTagextends SimpleTagSupport {

    private String site;

    private String page;

    public void setSite(String site) {

       this.site = site;

    }

    public void setPage(String page) {

       this.page = page;

    }

    @Override

    public void doTag()throws JspException, IOException {

       // 获取request对象

       JspContext jc = this.getJspContext();

       PageContext pc = (PageContext) jc;

       HttpServletRequest request = (HttpServletRequest) pc.getRequest();

 

       HttpServletResponse response = (HttpServletResponse) pc.getResponse();

       String referer = request.getHeader("referer");

       if (referer ==null || !referer.startsWith("http://localhost")) {

           // 跳转到首页

           //获取地址的完整路径

           if (page.startsWith(request.getContextPath())) {

              response.sendRedirect(page);

           } else if (page.startsWith("/")) {//获取加/的路径

              response.sendRedirect(request.getContextPath() + page);

           } else {

              //最不完整的路径

              response.sendRedirect(request.getContextPath() + "/" + page);

           }

           // 不运行以下的代码

           throw new SkipPageException();

       }

    }

}

2、条件选择<c:if test=””>

       Jsp的页面:<%session.setAttribute("user","蛋蛋");%>

                  <c:if test="${user!=null}">

                       该回家了,蛋蛋!

                   </c:if>

    Tld文件的描述:<tag>

           <name>if</name>

           <tag-class>com.hbsi.web.tag.IfTag</tag-class>

            <body-content>scriptless</body-content>

           <attribute>

                  <name>test</name>

                  <required>true</required>

                  <rtexprvalue>true</rtexprvalue>

            </attribute>

       </tag>

    标签处理器:public class IfTagextends SimpleTagSupport {

                  private boolean test;

                  public void setTest(boolean test) {

                         this.test = test;

                  }

@Override

                  public void doTag()throws JspException, IOException {

                         if(test){

                                JspFragment jf=this.getJspBody();

                                jf.invoke(null);

                            }

                      }

               }

原创粉丝点击