`
baobeituping
  • 浏览: 1064806 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于Struts2中如何去取得ServletContext的方法

阅读更多

在我的上一篇文章中说到,将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之Action访问Servlet API

    在本文中,我们将详细介绍 Struts2 访问 Servlet API 的几种方法。 一、使用 ActionContext 类 ActionContext 类是 Struts2 框架中一个重要的类,它提供了多种方法来访问 Servlet API。该类可以模拟获取 request、...

    李兴华Java Web开发实战经典(高清版) Part2

    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、实例操作:...

    基于Java的网上图书馆系统.docx

    Struts中的Model通常是一个Action类,负责业务逻辑处理;View则由JSP页面构成,呈现用户界面;Controller是Servlet,协调Model和View之间的交互。通过JSP标记机制和标签库,系统能提高代码的复用性和灵活性。 3. ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    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设计...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    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、实例操作:...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    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设计...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    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设计...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    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、实例操作:...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    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设计...

Global site tag (gtag.js) - Google Analytics