1

假设您想在每个操作上捕获 Web 应用程序的页面源,例如

public void click() {
    getPageSource();
}

public void type() {
    getPageSource();
}

public void select() {
    getPageSource();
}

我必须在每个函数中调用 getPageSource(),但是有没有更简洁的方法来实现这一点?

4

3 回答 3

2

如果您在 Java Web 应用程序中工作,您应该创建一个过滤器来拦截应用程序中发出的每个请求。这是一个示例:

Java 类

package edu.home;

import javax.servlet.*;

public class MyFilter implements Filter {

    public void init(FilterConfig filterConfig) throws ServletException {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain filterChain) throws IOException, ServletException {
        System.out.println("New request in the application!");
        //here you can add getPageSource() and send request/response
    }
}

在 web.xml 中配置过滤器

<!--declare the filter -->
<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>edu.home.FISesionExpirada</filter-class>
</filter>
<!-- declare where the filter should be used -->
<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
</filter-mapping>
于 2012-05-05T21:00:16.630 回答
0

像这样的事情通常被称为横切关注点,它们不太适合面向对象的框架。简单的答案是,在普通的旧 Java 中,确实没有更好的方法来做到这一点。

有一些解决方案,但根据我的经验,它们并没有被广泛使用,请参见 http://www.eclipse.org/aspectj/

于 2012-05-05T20:50:39.693 回答
0

查看您的 Web 应用程序框架是否支持过滤器、侦听器、观察器、拦截器或某种面向方面的编程。您描述的那种问题已经解决了很多次,肯定在您的特定开发环境中您会找到解决方案。

于 2012-05-05T20:52:36.437 回答