要求实现的功能:
我采用的框架是springMVC+ibatis+spring(采用注解方式实现).想实现的功能是网站访问次数(一个ip一天只算访问一次,服务器重启后访问次数依然存在)。我的思路如下:
创建一个requestListener,当有请求访问项目的时候获得对应的ip,从数据库中查找当天相同的ip是否访问过, 没访问过就将该访问记录添加到数据库中。我的数据库设计如下:
create table visit(
id int primary key auto_increment,
ip varchar(20), ## 访问来源ip
time date, ##访问时间
url varchar(100) ## 访问的路径
);
现在我遇到的困难就是,由于web.xml中配置三个元素的执行顺序是listener->filter->servlet..因为采用的是注解模式,数据的连接打开是在servlet中完成的.我想在listener中访问数据库如何实现...
我记得spring对hibernate支持有个openSessionInView的filter..可以再filter中打开数据库连接。不知道spring有没有对ibatis有类似的支持呢?
难道让我自己手动写一个jdbc来实现这个功能?
大神来吧。ibatisservletspring
我采用的框架是springMVC+ibatis+spring(采用注解方式实现).想实现的功能是网站访问次数(一个ip一天只算访问一次,服务器重启后访问次数依然存在)。我的思路如下:
创建一个requestListener,当有请求访问项目的时候获得对应的ip,从数据库中查找当天相同的ip是否访问过, 没访问过就将该访问记录添加到数据库中。我的数据库设计如下:
create table visit(
id int primary key auto_increment,
ip varchar(20), ## 访问来源ip
time date, ##访问时间
url varchar(100) ## 访问的路径
);
现在我遇到的困难就是,由于web.xml中配置三个元素的执行顺序是listener->filter->servlet..因为采用的是注解模式,数据的连接打开是在servlet中完成的.我想在listener中访问数据库如何实现...
我记得spring对hibernate支持有个openSessionInView的filter..可以再filter中打开数据库连接。不知道spring有没有对ibatis有类似的支持呢?
难道让我自己手动写一个jdbc来实现这个功能?
大神来吧。ibatisservletspring
地址如下:http://blog.csdn.net/wendellup/article/details/8501017
我主要还是概念没弄清
1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param>
2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.
3.容器将<context-param></context-param>转化为键值对,并交给ServletContext.
4.容器创建<listener></listener>中的类实例,即创建监听.
5.在监听中会有contextInitialized(ServletContextEvent args)初始化方法,在这个方法中获得ServletContext = ServletContextEvent.getServletContext();所以listener中是可以访问到applicationContext中定义的bean的。