AppFuse中使用SiteMesh,怎样设置SiteMesh才能够使某些页面不被它装饰?这个文章讲述了怎样实现这个功能!
因为AppFuse中使用的默认的JSP模板为SiteMesh,默认情况下,所有的请求都会被SiteMesh所装饰,所以我要实现点击文件链接,直接下载文件时却得不到正确格式的文件,得到的是一个html文件,即使制定了下载文件的类型:如:application/msexcel或者其他的类型都不行,我分析是因为,我首先向输出流中写了些东西,后来被SiteMesh使用getWriter方法给冲掉了,所以得到的是默认的网页文件,我折腾了2天,痛不欲生,刚刚解决掉这个问题,解决方法如下:
1.将下载文件的jsp放到一个特殊的目录下,我的放在download目录,这样可以区分需要被sitemesh装饰和不需要被它装饰的文件。
2.配置sitemesh的decorators.xml:
<decorators defaultdir="/decorators">
<excludes>
<pattern>/download/*</pattern>
</excludes>
</decorators>
这个配置指明download下的文件不需要被sitemesh装饰。
我的下载文件的页面代码是试验代码,稍加修改就可以正式使用,代码如下:
<%@ page import= "java.io.*,java.net.*" %><%
try{
//取得虚拟的路径
String fn = "attachment; filename=a.xls"; //必须改为UniCode编码的字符串
System.out.println(fn);
//把标题、内容写到输出流中
response.setHeader("Content-Disposition", new String(fn.getBytes("GB2312"),
"ISO-8859-1"));
createOutput( response.getOutputStream(),"c:\\ltf.xls");
}catch( Exception ee ){
ee.printStackTrace();
}
%><%!
public void createOutput( OutputStream out,String realpath ) throws IOException {
int b;
BufferedInputStream m_input =
new BufferedInputStream( new FileInputStream(realpath) );
while( (b = m_input.read()) != -1 ){
out.write(b);
}
m_input.close();
out.flush();
out.close();
}
%>
<%--
// 得到文件名字和路径
String filename = request.getParameter("zipfilename");
//String jsppath = ""; getServletConfig().getServletContext().getRealPath("") +
String filepath = "c:\\ltf.xls"; //jsppath.substring(0,jsppath.lastIndexOf("")) + "reports\\";
System.out.println("---------------=================" + filepath);
java.io.FileInputStream fileInputStream = null;
//out.println(filepath);
// 设置响应头和下载保存的文件名
response.setHeader("Content-Disposition",
"attachment; filename=" + "a.xls");
response.setContentType("application/msexcel");
// 打开指定文件的流信息
try{
fileInputStream =
new java.io.FileInputStream(filepath);
// 写出流信息
int i;
while ((i=fileInputStream.read()) != -1) {
out.write(i);
}
fileInputStream.close();
out.close();
System.out.println("---OK---------------");
}catch(Exception ee){
ee.printStackTrace();
}
--%>
分享到:
相关推荐
AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发过程。它提供了一个基础框架,集成了许多流行的开源库,如Spring、Hibernate、Struts或Spring Boot等,帮助开发者快速搭建应用骨架。AppFuse 可以根据选定的...
4. **SiteMesh**:通过Decorator模式装饰网页,实现统一的页面布局和头部、尾部。 5. **DisplayTag**:一个用于表格展示、分页、排序和数据导出的标签库,提高了UI的易用性。 6. **Struts Menu**:根据配置文件自动...
**AppFuse 学习笔记(一):安装与部署** AppFuse 是一个开源项目,它提供了一种快速构建企业级 Web 应用程序的方式。它使用了多种流行的技术栈,如 Spring Boot、Hibernate、Thymeleaf 和 Maven,使得开发者可以更...
AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...
### AppFuse:加速J2EE项目开发 #### 一、简介与背景 AppFuse是一个用于启动J2EE项目的工具包,它提供了一种快速而简便的方法来构建基于Java的应用程序。该工具包由Matt Raible创建,他在网络开发领域拥有丰富的...
### Appfuse 学习笔记 #### 一、Appfuse 简介 Appfuse 是一个开源框架,旨在帮助开发者高效地构建企业级应用。通过提供一套完善的架构模板、最佳实践和技术栈组合,使得开发者能够专注于业务逻辑的实现,而不是...
总的来说,这个压缩包提供了丰富的资料,适合初学者和有经验的开发者去深入理解和使用AppFuse和XDoclet,同时也涵盖了SpringSide、SiteMesh、Acegi Security(Spring Security)和Log4j等其他相关技术,对于构建和...
SiteMesh是一个Web页面布局修饰框架, 用于构建包含大量页面, 需要一致的外观样式(look/fell), 导航和布局机制的大型网站. SiteMesh应用Decorator模式,用filter截取request和response,把页面组件head,content,...
【MAVEN 搭建APPFUSE】是一个关于使用Maven构建基于AppFuse的应用程序的教程。AppFuse是一个开源项目,旨在简化Web应用程序的开发,它提供了一个基础框架,可以帮助开发者快速启动新项目,整合了Spring、Hibernate、...
20. **SiteMesh和Spring框架集成**:解释如何利用SiteMesh进行页面布局管理和使用Spring框架进行业务逻辑处理。 21. **教程和开发环境**:提供安装配置教程,如SMTP服务器设置,以及从旧版AppFuse迁移至新版的指南...
AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发。它提供了一个基础架构,开发者可以在此基础上快速构建安全、可扩展的应用程序。AppFuse 2.1 版本是该项目的一个较早版本,但仍然包含了现代Web开发的核心...
**Appfuse开发教程** Appfuse 是一个开源项目,它提供了一种快速开发Web应用程序的方式,尤其在使用Java技术栈时。本教程将深入探讨如何利用Appfuse创建数据访问对象(DAO)和简单Java对象(POJO),并进行数据库...
06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬
AppFuse 是一个开源项目,它提供了快速开发Java Web应用程序的基础框架。这个框架集成了Spring、Hibernate和Struts等主流技术,使得开发者能够迅速构建出符合MVC架构的应用。在最新的版本2.1.0-M2中,AppFuse 提供了...
AppFuse 是一个由 Matt Raible 创建的开源项目,旨在为初学者提供一个快速入门的 J2EE 框架模板。它集成了多种流行的技术,包括 Spring、Hibernate、iBatis、Struts、Xdoclet 和 JUnit,同时也支持 Taperstry 和 JSF...
主要是自己从网络上搜集的一些关于appfuse1.8.2-2.0.2的一些相关资料,间或有点自己试验的记录,还有点maven和quartz的东东,之前我主要是用1.8.2构建项目,感觉还不错,希望对想学习appfuse的人有些帮助.
AppFuse是一个开源项目,旨在简化Java Web应用的开发。它提供了一个基础结构,开发者可以在此基础上快速构建安全、模块化的应用程序。本项目是关于利用AppFuse框架构建B2C(Business-to-Consumer)电子商务系统的...