/***********************************************生成页面的方法************************************************************/
/**
 * 生成页面
 * @param sourceuris  源文件 为一个String []
 * @param compileuris 目标文件 为一个String []
 * @param request
 * @param response
 * @return
 */
private void dobuider(String [] sourceuris,String [] compileuris,HttpServletRequest request,HttpServletResponse response){
try {
String url = "";
String name = "";
response.setCharacterEncoding("utf-8");
for(int i = 0; i < sourceuris.length; i++){
url = sourceuris[i]; //the name of srcs;
name = compileuris[i];// the name of the targets;
RequestDispatcher rd = request.getRequestDispatcher(url);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream() {
public void write(byte[] data, int offset, int length) {
os.write(data, offset, length);
}
public void write(int b) throws IOException {
os.write(b);
}
};
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os,
Charset.forName("utf-8")));

HttpServletResponse rep = new HttpServletResponseWrapper(response) {
public ServletOutputStream getOutputStream() {
return stream;
}
public PrintWriter getWriter() {
return pw;
}
};
rd.include(request, rep);
System.out.println("1");
pw.flush();
System.out.println("2");
pw.close();
FileOutputStream fos0 = new FileOutputStream(name); // 把jsp输出的内容写到xx.jsp os.writeTo(fos0);
fos0.close(); os.close(); }
} catch (Exception e) { e.printStackTrace();
e=null;
return;
}
}要生成的源文件index_template.jsp 源码中引用了strut2的一个标签<base href="<s:text name='basePath' />" />我要把index.template.jsp生成index.jsp
会报一个异常
ERROR] 2011-06-10 09:58:05,421 [http-8080-1] [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/juping].[default]] - Servlet.service() for servlet default threw exception
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:203)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:114)
at org.apache.jasper.runtime.JspWriterImpl.flush(JspWriterImpl.java:172)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:602)
at org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:119)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
此处省略一亿字。。
web.xml配置如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--<listener>
<listener-class>com.fs.listener.SessionListener</listener-class>
</listener>-->
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>false</el-ignored>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
</jsp-config>
<filter>  
   <filter-name>SetCharacterEncoding</filter-name>  
   <filter-class>  
    org.springframework.web.filter.CharacterEncodingFilter   
   </filter-class>  
   <init-param>  
    <param-name>encoding</param-name>  
    <param-value>UTF-8</param-value>  
   </init-param>  
   <init-param>  
    <param-name>forceEncoding</param-name>  
    <param-value>true</param-value>  
   </init-param>  
</filter>  
<filter-mapping>  
   <filter-name>SetCharacterEncoding</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping>  
<!-- 动态URL地址静态化 -->
  <filter>
   <filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
   <init-param>  
    <param-name>encoding</param-name>  
    <param-value>UTF-8</param-value>  
   </init-param>  
<init-param>
  <param-name>logLevel</param-name>
  <param-value>WARN</param-value>
</init-param>
  </filter>
  <filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- JSP SERVLET 主要用来清除空白行 -->
  <servlet>
         <servlet-name>jsp</servlet-name>
         <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>trimSpaces</param-name>
            <param-value>true</param-value>
         </init-param>
         <load-on-startup>3</load-on-startup>
</servlet>
 
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>RandomCodeServlet</servlet-name>
<servlet-class>com.xxx.servlet.RandomCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RandomCodeServlet</servlet-name>
<url-pattern>/RandomCodeServlet</url-pattern>
</servlet-mapping>
<!-- 使用FCK2.6在线编辑器 shuai-->
<servlet>                                          
<servlet-name>Connector</servlet-name>       
<servlet-class>net.fckeditor.connector.ConnectorServlet</servlet-class>                             
<load-on-startup>1</load-on-startup>         
</servlet>                                         
<servlet-mapping>                                  
<servlet-name>Connector</servlet-name>       
<url-pattern>/fckeditor/editor/filemanager/connectors/* 
</url-pattern>                               
</servlet-mapping> 
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener> <!-- Struts2 过滤配置 -->
<display-name>struts2</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
   <init-param>  
    <param-name>encoding</param-name>  
    <param-value>UTF-8</param-value>  
   </init-param>  
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>  
<url-pattern>*.action</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>  
<url-pattern>*.jsp</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>  
<!-- dwr -->
<servlet> 
    <servlet-name>dwr</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
    </init-param>
    <!-- A request has been denied as a potential CSRF attack. default:true -->
    <init-param>   
            <param-name>crossDomainSessionSecurity</param-name>   
            <param-value>false</param-value>   
        </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dwr</servlet-name>
    <url-pattern>/dwr/*</url-pattern>  
</servlet-mapping>
<!-- ico -->
<mime-mapping>
<extension>ico</extension>
<mime-type>image/x-icon</mime-type>
</mime-mapping>
<!-- 404 页面不存在错误 -->
<error-page>
<error-code>404</error-code>
<location>/404.html</location>
</error-page>
</web-app>
================================
<filter-mapping>
<filter-name>struts2</filter-name>  
<url-pattern>*.jsp</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
如何加上 <dispatcher>INCLUDE</dispatcher>还是会报错,希望高手帮忙下。我只要把index_template.jsp中的strut2标签去掉就没问题了。