View Javadoc

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