`

过滤器中向所有JSP页面插入html代码

    博客分类:
  • Java
阅读更多

为公司内部开发了1个简单的MVC框架,框架中需要向所有JSP页面的<head>中插入2条引用JS的代码,实现如下:

主要是继承HttpServletResponseWrapper写1个类(PageResponseWrapper),代码:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1 public  class  PageResponseWrapper  extends  HttpServletResponseWrapper {
 2       private  Buffer buffer;
 3       private  HttpServletResponse originalResponse;
 4  
 5       public  PageResponseWrapper( final  HttpServletResponse response){
 6           super (response);
 7           this .originalResponse  =  response;
 8          buffer  =   new  Buffer();
 9      }
10  
11      @Override
12       public  PrintWriter getWriter()  throws  IOException {
13           return  buffer.getWriter();
14      }
15  
16       public  CharArrayWriter getContent(){
17           return  buffer.getBufferedWriter();
18      }
19  
20       public   void  close()  throws  IOException {
21          buffer.getWriter().close();
22      }
23      
24       public   void  finalize()  throws  Throwable {
25          super .finalize();
26         buffer.getWriter().close();
27      }
28  
29       /**
30       * 获取原始的response
31       *  @return  the originalResponse
32        */
33       public  HttpServletResponse getOriginalResponse() {
34           return  originalResponse;
35      }
36  }


Buffer类:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1  public   class  Buffer {
 2  
 3       private  CharArrayWriter bufferedWriter;
 4       private  PrintWriter exposedWriter;
 5      
 6       public   char [] getContents()  throws  IOException {
 7           // bufferedWriter 表示请求的页面的html
 8           if  (getBufferedWriter()  !=   null ) {
 9               return  getBufferedWriter().toCharArray();
10          }
11           return   null ;
12      }
        public  PrintWriter getWriter() {
16           if  (getBufferedWriter()  ==   null ) {
17              bufferedWriter  =   new  CharArrayWriter();
18              exposedWriter  =   new  PrintWriter(getBufferedWriter());
19          }
20           return  exposedWriter;
21      }
22       /**
23       *  @return  the bufferedWriter
24        */
25       public  CharArrayWriter getBufferedWriter() {
26           return  bufferedWriter;
27      }
28  }


过滤器的代码:

<!-- <br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1  public   void  doFilter(ServletRequest request, ServletResponse response, FilterChain chain)  throws  IOException, ServletException {
 2      HttpServletRequest hRequest  =  (HttpServletRequest)request;
 3      HttpServletResponse hResponse  =  (HttpServletResponse)response;
 4      PageResponseWrapper prw  =   new  PageResponseWrapper(hResponse);
 5   
 6      chain.doFilter(request, prw);
 7       //  得到视图html代码
 8      String tmpHtml  =  prw.getContent();
 9       //  最终输出的html代码
10      String retHtml  =   "" ;
11       //  查找<head>
12       int  index  =  tmpHtml.toLowerCase().indexOf( " <head> " );
13       if (index  !=   - 1 ){
14          index  += 6 ;
15          retHtml  =  tmp.substring( 0 , index)  +   " <script src='http://./..js'></script> "   +  tmp.substring(index);
16      } else {
17          retHtml  =  tmpHtml;
18      }
19       //  输出(注意,这里只能使用hResponse,不能使用prwgetWriter())
20      PrintWriter writer  =  hResponse.getWriter();
21      writer.write(retHtml);
22      writer.close();   
23      writer.close();
24      writer.flush();     
25  }
分享到:
评论

相关推荐

    jsp登录验证(含过滤器)

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet API的一部分,用于对HTTP请求和响应进行处理。本项目"jsp登录验证(含过滤器)"主要关注如何利用过滤器实现...

    jsp-14-过滤器

    在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet规范的一部分,允许我们在请求处理前后插入逻辑,以实现诸如数据验证、字符编码转换、日志记录等功能。...

    JSP登陆注册增删改查过滤器

    1. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端的业务逻辑处理。JSP文件会被服务器转换成Servlet,然后由Servlet引擎执行。在"登陆注册...

    JSP后台管理样例代码

    **JSP(Java Server Pages)** 是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,以便在服务器端处理数据并生成动态内容。这个"JSP后台管理样例代码"是专为初学者设计的一个实践项目,旨在帮助他们理解和...

    jsp动态网站开发附录代码

    JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态内容生成。这份资源包可能包含了多个JSP开发中的关键组件和示例,旨在帮助初学者和有经验的...

    jsp设计内容详细代码完整

    在《JSP设计(第三版)》英文版中,读者可以期待全面覆盖以上所有知识点,并可能涉及更高级的主题,如自定义标签、过滤器、监听器,以及现代Web开发中的最佳实践。通过这本书的学习,开发者能够熟练掌握JSP技术,...

    JSP大学实用教程源代码!

    在JSP中,开发者可以将HTML代码与Java代码结合在一起,使得网页具有动态生成的能力。**HTML**(HyperText Markup Language)负责页面的结构,而**Java**代码则用于处理逻辑和数据。JSP的核心概念包括**JSP指令**、**...

    jsp技术常用模块代码

    在JSP中,可以创建一个表单供用户输入信息,然后通过Servlet或JSP页面处理提交的数据。关键组件包括: - 表单设计:使用HTML元素如`&lt;form&gt;`,`&lt;input&gt;`,`&lt;textarea&gt;`等创建用户界面。 - 数据提交:使用HTTP请求...

    Java servlet过滤器配置详解

    总结来说,Java Servlet过滤器是Web应用中的重要工具,它们允许我们在请求处理流程中插入自定义逻辑,比如处理编码、进行安全检查或优化性能。理解并熟练配置过滤器对于提升Web应用的质量和性能至关重要。在实践中,...

    jsp项目代码

    在这个名为"ch04"的压缩包中,可能包含的是一个JSP项目的第四章内容,可能涉及到更深入的JSP特性,如自定义标签、过滤器、监听器、异常处理等。对于初学者,可以通过分析和运行这些代码来了解和掌握JSP的实际运用,...

    [其他类别]JSP网页HTML编辑器 v1.0 beat_jsphtmleditor.rar

    它们通常提供可视化的界面,让用户可以通过拖放、点击按钮等方式来插入和编辑HTML元素,而无需手动编写HTML代码。这大大降低了网页制作的门槛,尤其是对不熟悉HTML语法的人来说。 4. **在线HTML编辑器**:JSP网页...

    最强大的HTML在线编辑器无缝嵌入jsp范例

    HTML在线编辑器是一种工具,允许用户在网页上直接编辑HTML代码,实时预览并保存更改。在本范例中,我们将探讨如何将这样的编辑器无缝地嵌入到JSP(JavaServer Pages)环境中,以提供用户友好的界面,用于创建和修改...

    jsp项目开发源代码

    - `web.xml`部署描述符定义Web应用的配置,包括Servlet映射、过滤器、监听器等。 7. **JDBC与数据库交互** - JSP项目通常需要与数据库交互,JDBC提供了一套标准接口,用于连接数据库、执行SQL语句、处理结果集。 ...

    JSP设计第三版(源代码)

    18. **学习最佳实践**:注意代码中的设计模式、异常处理、性能优化等方面,提升编程水平。 这个"JSP设计第三版(源代码)"压缩包为开发者提供了动手实践的机会,通过深入研究源代码,不仅可以巩固JSP的基础知识,还能...

    Jsp中的常用功能

    本实例深入探讨了JSP中的几个关键特性,包括初始化参数的获取、过滤器、监听器以及JSP的组成部分。 ### **初始化参数的获取** 在JSP应用中,我们经常需要设置一些全局的配置参数。这些参数可以通过`web.xml`部署...

    JSP项目实例技术源代码(15个项目)

    JSP页面本质上是HTML,但通过这些元素,我们可以插入Java代码,实现动态内容生成。 **EL(Expression Language)**是JSP 2.0引入的一种轻量级表达式语言,用于获取和设置JavaBean的属性。它简化了页面中的数据绑定...

    jsp网络编程从基础到实践源代码.rar

    10. **JSP的部署与配置**:通过web.xml文件进行部署描述,配置Servlet映射、session配置、过滤器等。 在实际项目中,我们通常会结合使用Servlet、JSP、JavaBeans和框架(如Spring MVC)来构建Web应用。通过学习和...

    留言板jsp代码

    "留言板jsp代码"是对整个项目源码的概括,这些代码会包含处理用户输入、存储留言、显示留言等功能的JSP页面和相关的Java后台处理类。 【压缩包子文件的文件名称列表】"JSP 文本留言簿"可能表示压缩包内包含了实现...

    jsp论坛源代码的(实现留言,回复)

    5. **EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)**:EL是一种简洁的表达式语言,常用于在JSP页面中获取和设置属性值,简化页面中的Java代码。JSTL则是一套标准标签库,提供了各种...

    JSP案例开发集锦源代码

    这个"JSP案例开发集锦源代码"中很可能包含了这些概念的实例,学习者可以通过分析和运行这些代码,进一步了解JSP如何与数据库交互、如何实现用户认证、如何使用过滤器和监听器等高级主题。每个案例都是一个实战的学习...

Global site tag (gtag.js) - Google Analytics