对action响应的配置其实也不是很特别,这里主要提到的是Key的配置:
<filter> <filter-name>CacheFilter</filter-name> <filter-class>com.opensymphony.oscache.web.filter.CacheFilter</filter-class> <init-param> <param-name>time</param-name> <param-value>600</param-value><!-- 单位秒 --> </init-param> <init-param> <param-name>scope</param-name> <param-value>session</param-value> </init-param> <init-param> <param-name>ICacheKeyProvider</param-name> <param-value>com.xiva.common.IvCacheKeyProvider</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>/user/userInfoList.action</url-pattern> </filter-mapping>
ICacheKeyProvider是CacheFilter的一个初始化参数,参考源码如下:
// filter parameter ICacheKeyProvider ICacheKeyProvider cacheKeyProviderParam = (ICacheKeyProvider)instantiateFromInitParam("ICacheKeyProvider", ICacheKeyProvider.class, this.getClass().getName()); if (cacheKeyProviderParam != null) { setCacheKeyProvider(cacheKeyProviderParam); }
package com.xiva.common; import javax.servlet.http.HttpServletRequest; import com.opensymphony.oscache.base.Cache; import com.opensymphony.oscache.web.ServletCacheAdministrator; import com.opensymphony.oscache.web.filter.ICacheKeyProvider; public class IvCacheKeyProvider implements ICacheKeyProvider { @Override public String createCacheKey(HttpServletRequest httpRequest, ServletCacheAdministrator scAdmin, Cache cache) { // buffer for the cache key StringBuffer buffer = new StringBuffer(100); buffer.append(httpRequest.getRequestURI()); buffer.append('_'); buffer.append(httpRequest.getParameter("start")); buffer.append('_'); buffer.append(httpRequest.getParameter("limit")); buffer.append('_'); buffer.append(httpRequest.getParameter("orgId")); return buffer.toString(); } }
上面是对接口的实现IvCacheKeyProvider
OSCache下载地址:https://java.net/downloads/oscache/
相关推荐
- 在Struts2中,osCache可以用于缓存Action的结果,减少对Action的调用,提高响应速度。通过配置Action拦截器,我们可以指定哪些Action结果应该被缓存,并设置缓存时间。 - 配置osCache插件:首先需要将osCache的...
为了使用OSCache进行页面缓存,我们需要对web.xml文件进行相应的配置: ##### web.xml配置 ```xml <taglib-uri>oscache <taglib-location>/WEB-INF/classes/oscache.tld ``` 这里的配置主要是引入OSCache的...
1. **初始化ActionServlet**:Struts在Web应用启动时加载ActionServlet,并读取struts-config.xml配置。 2. **匹配ActionMapping**:根据请求路径找到对应的Action。 3. **创建ActionForm**:如果需要,创建...
通过`struts-config-XXX.xml`配置文件,开发者可以定义Action类以及它们与视图的映射,从而实现请求到业务逻辑的映射。 iBatis是一个持久层框架,它将SQL语句与Java代码分离,使得数据库操作更易于维护和扩展。`sql...
缓存能够显著降低对数据库的依赖,减少IO操作,从而提高响应速度,提升用户体验。以下是对JAVAWeb缓存技术的详细介绍: 1. **OSCache**:OSCache 是一款广泛使用的开源页面级缓存解决方案,它通过使用JSP标签来定义...
6. **生成响应:** Action执行完毕后返回一个ActionForward对象,指示ActionServlet将控制权转交给JSP页面或另一个Action。 **为什么使用Struts:** 1. **MVC架构模式:** Struts遵循Model-View-Controller模式,...
- **生成响应页面**:根据 Action 返回的 ActionForward 对象,将控制权转交给指定的 JSP 页面。 **8.2 使用 Struts 的原因** - **MVC 架构**:清晰地分离了 Model、View 和 Controller 层。 - **易于扩展**:提供...
1. **初始化ActionServlet:** 在Web应用启动时加载ActionServlet,并从配置文件中读取配置信息。 2. **接收用户请求:** 用户发起HTTP请求,ActionServlet根据请求路径查找对应的ActionMapping。 3. **创建...
5. **响应用户:** 将处理结果通过 `ActionForward` 返回给用户。 **为何使用 Struts:** 1. **简化开发流程:** Struts 提供了一套统一的框架和规范,简化了使用 JSP、Servlet、JavaBean 等技术构建 Web 应用的...
- **渲染视图:** 将 `ActionForward` 指向的 JSP 页面渲染为响应结果。 **使用 Struts 的原因:** - **提供统一的 MVC 架构:** 使开发者能够更清晰地组织代码结构。 - **简化 JSP 和 Servlet 的开发过程:** ...
7. **返回ActionForward**:指定响应的视图组件。 8. **生成响应**:最终呈现给客户端。 **为什么使用Struts:** - **简化开发流程**:提供了一套成熟的架构模式,使得开发者可以专注于业务逻辑的实现。 - **MVC...
- 整合缓存技术需要考虑现有系统架构,如Struts2+jQuery框架下,JCS的集成相对直接,可在Action层封装数据返回逻辑,对前端影响较小。 - 触发缓存的时机也是一个关键点,可以通过用户的首次请求或定期调度任务来预...
- **初始化 ActionServlet:** 应用启动时加载 `ActionServlet` 并读取配置文件。 - **处理用户请求:** - 查找匹配的 `ActionMapping`。 - 创建 `ActionForm` 并填充表单数据。 - 进行表单验证。 - 调用相应的 ...
- 用户请求由前端控制器拦截,通过配置文件决定将请求转发给哪个Action。 - Action调用业务逻辑层处理请求,然后返回一个结果给前端控制器。 ##### Struts2的运行原理 - 用户请求到达FilterDispatcher,由它决定...
- **OSCache**:OpenSymphony组织提供的Web应用缓存解决方案,可以提高响应速度,减少数据库压力。它可以缓存页面或静态内容,改善系统性能。 6. **页面布局**: - **SiteMesh**:用于网页布局和装饰,将页面内容...
这个项目中的二级缓存可能使用了EhCache或OSCache等第三方缓存解决方案,将经常访问的数据存储在内存中,减少数据库查询次数,提高响应速度。 **业务封装** 是指将业务逻辑抽象出来,形成独立的服务或组件,以便于...
- **response**:服务器响应对象。 - **out**:输出流对象,用于输出内容到客户端。 - **session**:用户会话对象。 - **application**:应用程序范围对象。 - **config**:Servlet配置对象。 - **exception**:异常...