`
floger
  • 浏览: 213446 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    博客分类:
  • j2ee
阅读更多

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

<!----> 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类:

<!----> 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 }


过滤器的代码:

<!----> 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