在我的上一篇文章中说到,将DB4O的DAO类放入到ServeltContext中去,然后我们在struts2的ACTION中要去拿到这个DAO必然要得到servletcontext;
方法:
在ACTION中实现implements ServletContextAware。
然后实现该类的方法:
public static ServletContext context;
public void setServletContext(ServletContext context) {
// TODO Auto-generated method stub
this.context = context;
}
这样就可以在ACTION中得到servletcontext了。为什么在这我要用静态的属性来存放呢?
因为在我的该ACTION中,我用到了拦截器,拦截器的代码如下:
package common.interceptor;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import com.login.LoginAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
import common.util.db4o.LogMessageDao;
public class LogInterceptor extends AbstractInterceptor {
private Logger logger = Logger.getLogger(this.getClass().getName());
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String intercept(ActionInvocation invocation) throws Exception {
//logger.info("拦截器-"+this.name+":开始记录日志");
String LogFileName="";
LoginAction action = (LoginAction)invocation.getAction();
//通过拦截器得到了LoginAction的引用。然后通过action.context就可以得到servletcontext了,然后从context取出DAO的实例
String result = invocation.invoke();
HttpServletRequest request = action.getRequest();
// **************日期******************************
java.util.Date date = new java.util.Date();
java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String strDate = df.format(date); //当天日期
/***获得远程IP***/
String remoteIP=request.getRemoteAddr();
String logstr = action.getPerID()+";登陆IP:"+remoteIP+"登陆时间:"+strDate;
LogFileName=strDate.substring(0,10);
logger.info(logstr);
//改段代码可以将登陆日志记录到文件中Log.writeFile(logstr, request.getRealPath(".") + "\\log\\"+LogFileName+".log",true);
//DB4oUtil db = new DB4oUtil();
LogMessageDao db = (LogMessageDao)action.context.getAttribute("LogDao");
db.save(request.getRealPath(".")+"\\log\\log.db", action.getPerID(),remoteIP);
return result;
}
}
分享到:
相关推荐
在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:...
Struts中的Model通常是一个Action类,负责业务逻辑处理;View则由JSP页面构成,呈现用户界面;Controller是Servlet,协调Model和View之间的交互。通过JSP标记机制和标签库,系统能提高代码的复用性和灵活性。 3. ...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:...
9.6.2、取得ServletContext实例 9.7、Servlet跳转 9.7.1、客户端跳转 9.7.2、服务器端跳转 9.8、WEB开发模式:Mode I与Mode II 9.8.1、Mode I 9.8.2、Mode II:Model-View-Controller 9.9、实例操作:MVC设计...