getOutputStream() has already been called for this response异常出现的原因和解决方法:
jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因。
具体的原因:jsp编译成servlet之后在函数
_jspService(HttpServletRequest request, HttpServletResponse response)
的最后
有一段这样的代码
这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和response.getOutputStream()相冲突的!所以会出现以上这个异常。然后当然是要提出解决的办法,其实挺简单的,在使用完输出流以后调用以下两行代码即可:
同时要注意返回值的问题,返回null
最后这里是一个输出彩色验证码例子(这样的例子几乎随处可见)。
移植I2C-EEPROM 驱动
编者:略。
1 在内核中配置I2C 驱动
Linux-2.6.32.2 对S2C2440 的I2C 接口提供了完善的驱动,因此我们只需在内核中配置一下即可使用。
在内核源代码目录执行:make menuconfig,进入内核配置主菜单,依次选择进入如下子菜单:
Device Drivers --->
<*> I2C support --->
I2C Hardware Bus support --->
如图,我们看到这里已经选择好了“<*> S3C2410 I2C Driver”,这里的S3C2410 也可以适用于S3C2440,因为它们的I2C 端口及寄存器定义都是完全相同的。
以上配置所对应的驱动源代码为:linux-2.6.32.2/drivers/i2c/busses/i2c-s3c2410.c
2 测试I2C-EEPROM
Mini2440 为了方便用户测试,基于I2C 总线挂接了一个EEPROM 芯片,它是AT24C08,通过写入和读取该芯片,我们就可以测试I2C 总线驱动了。在内核根目录下执行:make zImage,把生成的新内核烧写到开发板中,依然使用友善之臂提供的root_qtopoia,因为里面已经包含了I2C-EEPROM测试程序
在命令行种输入:i2c –w 可以向板子的24C08 器件中写入数据(0x00-0xff)
在命令行中输入:i2c –r 可以从板子的24C08 器件中读出输出
Markdown是一个文本到HTML的解释器,它能把易读易写的md文本格式转化成HTML格式。Markdown的文本格式看起来和简单的文本邮件很像,它支持一些像headers,emphasis,code blocks,blockquotes,linkds等的属性。
这个模块提供给你什么模块提供的功能主要包括以下三点:
这个模块基于出色的markdownPapers,它在速度(4倍于最接近的竞争者)和设计上都很出色:
基于JavaCC,markdwon可以处理流并且构建一个markdown文档树。这个文档树可以用Visitor模式生成。用你自己的扩展来增强markdown的语法最好不过了。
使用方法 常规这也许是在你的页面里添加markdwon内容的最简单的方法。你可以直接输入markdown文本或者从文件里读取:
${'**Hello** *world*'.markdown().raw()} ${'./manual.md'.markdown().raw}
如果你愿意,直接使用markdownText()和markdownFile()函数吧。
控制器在你的conf/route里面添加如下内容
GET /docs/images/{imageName}\.{ext} MarkdownController.image GET /docs/{page}\.md MarkdownController.transform GET /markdown/refresh MarkdownController.refershLangs
确保markdown文件位于
.public/moddocs/.md(文档),*.public/moddocs/images/(图片)。
其中public/moddocs/在markdown.root 里面可以配置,图片路径在markdown.imgDir里面配置。 。
注意你可以为markdown插件添加多语言支持,假设你的应用里面有如下配置
application.langs=en,zh
你可以把markdown文件放到public/mddocs/en和public/mddocs/zh,这分别代表英文和中文版本,markdown还支持在markdwon.defLang里面配置默认语言,如果你指定的语言没有文档,那么它就会使用默认的语言。如果没有找到默认语言的文件夹,那么一个“no-lang”的版本就会被导入。
PS:你可以扩展控制器,实现一个更适合你的外观的action。
API组件类markdown.Markdown提供两种生成方式:
public static String transformMarkdown(String markdown) throws java.text.ParseException; public static String transformMarkdown(Reader markdownReader) throws java.teext.ParseException;
如果你想自己处理markdwon文档树,使用下面的包
org.tautua.markdownpapers.Markdown Reader in = new FileReader("in.md"); Visitor v = new HtmlEmitter(); Parser parser = new Parser(in); Document doc = parser.parse(); doc.accept(v);配置 配置 描述 默认值 markdown.root 配置markdwon文件的根路径 /public/mddocs markdown.imgDir