假设您想要在每个操作上捕获Web应用程序的页面源,例如
public void click() {
getPageSource();
}
public void type() {
getPageSource();
}
public void select() {
getPageSource();
}
我必须在每个函数中调用getPageSource(),但有没有更简洁的方法来实现它?
答案 0 :(得分:2)
如果您正在使用Java Web应用程序,则应创建Filter以拦截应用程序中发出的每个请求。这是一个示例:
Java Class
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>
答案 1 :(得分:0)
这些内容通常称为cross-cutting concerns,并且它们不适合面向对象的框架。简单的答案是,在普通的旧Java中,确实没有更好的方法来实现这一点。
有解决方案,但在我的经验中并没有广泛使用,例如, http://www.eclipse.org/aspectj/
答案 2 :(得分:0)
查看您的Web应用程序框架是否支持过滤器,侦听器,观察器或拦截器,或某种面向方面的编程。您描述的问题已经解决了很多次,当然在您的特定开发环境中,您将找到解决方案。