代码改自:org.displaytag.sample.displaysourceservlet
web.xml的映射如下:
<servlet>
<servlet-name>displayjspsourceservlet</servlet-name>
<servlet-class>com.lizongbo.displayjspsourceservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>displayjspsourceservlet</servlet-name>
<url-pattern>*.jspsrc</url-pattern>
</servlet-mapping>
java代码如下:
package com.lizongbo;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class displayjspsourceservlet
extends httpservlet {
private static final string content_type = "text/html; charset=utf-8";
public void init() throws servletexception {
}
public void doget(httpservletrequest request, httpservletresponse response) throws
servletexception, ioexception {
response.setcontenttype(content_type);
printwriter out = response.getwriter();
out.println("<html>");
out.println("<head><title>jsp source ");
string jspfn = request.getservletpath();
jspfn = jspfn == null ? "" : jspfn;
if (jspfn.lastindexof(".jsp.") > 1) {
jspfn = jspfn.substring(0,jspfn.lastindexof(".jsp.") + 4);
}
out.print(jspfn);
out.println(" -- lizongbo edit from org.displaytag.sample.displaysourceservlet </title></head>");
out.println("<body bgcolor=\"#ffffff\">");
out.println("<pre>");
inputstream inputstream = getservletcontext().getresourceasstream(
jspfn);
if (inputstream == null) {
out.println("unable to find jsp file: " + jspfn);
}
else {
for (int currentchar = inputstream.read(); currentchar != -1;
currentchar = inputstream.read()) {
if (currentchar == '<') {
out.print("<");
}
else {
out.print( (char) currentchar);
}
}
}
out.println("</pre>");
out.println("</body>");
out.println("</html>");
out.close();
}
public void dopost(httpservletrequest request, httpservletresponse response) throws
servletexception, ioexception {
doget(request, response);
}
public void destroy() {
}
}
使用方法
比如可以访问:http://lizongbo.com:/lizongbo/lizongbo.jsp
那么访问 http://lizongbo.com:/lizongbo/lizongbo.jsp.jspsrc
就可以查看到jsp文件的源代码。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=382616