主要是继承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 }
分享到:
相关推荐
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet API的一部分,用于对HTTP请求和响应进行处理。本项目"jsp登录验证(含过滤器)"主要关注如何利用过滤器实现...
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而过滤器(Filter)是Servlet规范的一部分,允许我们在请求处理前后插入逻辑,以实现诸如数据验证、字符编码转换、日志记录等功能。...
1. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端的业务逻辑处理。JSP文件会被服务器转换成Servlet,然后由Servlet引擎执行。在"登陆注册...
**JSP(Java Server Pages)** 是一种动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,以便在服务器端处理数据并生成动态内容。这个"JSP后台管理样例代码"是专为初学者设计的一个实践项目,旨在帮助他们理解和...
JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,实现服务器端的动态内容生成。这份资源包可能包含了多个JSP开发中的关键组件和示例,旨在帮助初学者和有经验的...
在《JSP设计(第三版)》英文版中,读者可以期待全面覆盖以上所有知识点,并可能涉及更高级的主题,如自定义标签、过滤器、监听器,以及现代Web开发中的最佳实践。通过这本书的学习,开发者能够熟练掌握JSP技术,...
在JSP中,开发者可以将HTML代码与Java代码结合在一起,使得网页具有动态生成的能力。**HTML**(HyperText Markup Language)负责页面的结构,而**Java**代码则用于处理逻辑和数据。JSP的核心概念包括**JSP指令**、**...
在JSP中,可以创建一个表单供用户输入信息,然后通过Servlet或JSP页面处理提交的数据。关键组件包括: - 表单设计:使用HTML元素如`<form>`,`<input>`,`<textarea>`等创建用户界面。 - 数据提交:使用HTTP请求...
总结来说,Java Servlet过滤器是Web应用中的重要工具,它们允许我们在请求处理流程中插入自定义逻辑,比如处理编码、进行安全检查或优化性能。理解并熟练配置过滤器对于提升Web应用的质量和性能至关重要。在实践中,...
在这个名为"ch04"的压缩包中,可能包含的是一个JSP项目的第四章内容,可能涉及到更深入的JSP特性,如自定义标签、过滤器、监听器、异常处理等。对于初学者,可以通过分析和运行这些代码来了解和掌握JSP的实际运用,...
它们通常提供可视化的界面,让用户可以通过拖放、点击按钮等方式来插入和编辑HTML元素,而无需手动编写HTML代码。这大大降低了网页制作的门槛,尤其是对不熟悉HTML语法的人来说。 4. **在线HTML编辑器**:JSP网页...
HTML在线编辑器是一种工具,允许用户在网页上直接编辑HTML代码,实时预览并保存更改。在本范例中,我们将探讨如何将这样的编辑器无缝地嵌入到JSP(JavaServer Pages)环境中,以提供用户友好的界面,用于创建和修改...
- `web.xml`部署描述符定义Web应用的配置,包括Servlet映射、过滤器、监听器等。 7. **JDBC与数据库交互** - JSP项目通常需要与数据库交互,JDBC提供了一套标准接口,用于连接数据库、执行SQL语句、处理结果集。 ...
18. **学习最佳实践**:注意代码中的设计模式、异常处理、性能优化等方面,提升编程水平。 这个"JSP设计第三版(源代码)"压缩包为开发者提供了动手实践的机会,通过深入研究源代码,不仅可以巩固JSP的基础知识,还能...
本实例深入探讨了JSP中的几个关键特性,包括初始化参数的获取、过滤器、监听器以及JSP的组成部分。 ### **初始化参数的获取** 在JSP应用中,我们经常需要设置一些全局的配置参数。这些参数可以通过`web.xml`部署...
JSP页面本质上是HTML,但通过这些元素,我们可以插入Java代码,实现动态内容生成。 **EL(Expression Language)**是JSP 2.0引入的一种轻量级表达式语言,用于获取和设置JavaBean的属性。它简化了页面中的数据绑定...
10. **JSP的部署与配置**:通过web.xml文件进行部署描述,配置Servlet映射、session配置、过滤器等。 在实际项目中,我们通常会结合使用Servlet、JSP、JavaBeans和框架(如Spring MVC)来构建Web应用。通过学习和...
"留言板jsp代码"是对整个项目源码的概括,这些代码会包含处理用户输入、存储留言、显示留言等功能的JSP页面和相关的Java后台处理类。 【压缩包子文件的文件名称列表】"JSP 文本留言簿"可能表示压缩包内包含了实现...
5. **EL(Expression Language)与JSTL(JavaServer Pages Standard Tag Library)**:EL是一种简洁的表达式语言,常用于在JSP页面中获取和设置属性值,简化页面中的Java代码。JSTL则是一套标准标签库,提供了各种...
这个"JSP案例开发集锦源代码"中很可能包含了这些概念的实例,学习者可以通过分析和运行这些代码,进一步了解JSP如何与数据库交互、如何实现用户认证、如何使用过滤器和监听器等高级主题。每个案例都是一个实战的学习...