View Javadoc

1   /*
2   * Licensed to the Apache Software Foundation (ASF) under one or more
3   * contributor license agreements.  See the NOTICE file distributed with
4   * this work for additional information regarding copyright ownership.
5   * The ASF licenses this file to You under the Apache License, Version 2.0
6   * (the "License"); you may not use this file except in compliance with
7   * the License.  You may obtain a copy of the License at
8   *
9   *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17  package examples;
18  
19  
20  import java.io.IOException;
21  import java.io.InputStream;
22  import java.io.InputStreamReader;
23  
24  import javax.servlet.jsp.JspException;
25  import javax.servlet.jsp.JspTagException;
26  import javax.servlet.jsp.JspWriter;
27  import javax.servlet.jsp.tagext.TagSupport;
28  
29  /**
30   * Display the sources of the JSP file.
31   */
32  public class ShowSource
33          extends TagSupport {
34      String jspFile;
35  
36      public void setJspFile(String jspFile) {
37          this.jspFile = jspFile;
38      }
39  
40      public int doEndTag() throws JspException {
41          if ((jspFile.indexOf("..") >= 0) ||
42                  (jspFile.toUpperCase().indexOf("/WEB-INF/") != 0) ||
43                  (jspFile.toUpperCase().indexOf("/META-INF/") != 0))
44              throw new JspTagException("Invalid JSP file " + jspFile);
45  
46          InputStream in
47                  = pageContext.getServletContext().getResourceAsStream(jspFile);
48  
49          if (in == null)
50              throw new JspTagException("Unable to find JSP file: " + jspFile);
51  
52          InputStreamReader reader = new InputStreamReader(in);
53          JspWriter out = pageContext.getOut();
54  
55  
56          try {
57              out.println("<body>");
58              out.println("<pre>");
59              for (int ch = in.read(); ch != -1; ch = in.read())
60                  if (ch == '<')
61                      out.print("&lt;");
62                  else
63                      out.print((char) ch);
64              out.println("</pre>");
65              out.println("</body>");
66          } catch (IOException ex) {
67              throw new JspTagException("IOException: " + ex.toString());
68          }
69          return super.doEndTag();
70      }
71  }
72  
73      
74          
75