`

一个Filter过滤一个集合的例子

阅读更多
package com.huanglq.filter;

import java.io.IOException;
import java.util.List;

import javax.servlet.FilterChain;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.huanglq.model.Course;
import com.huanglq.service.CourseService;

/**
 * 过滤课程列表,防止课程列表为空的页面出现
 * 
 * @author root
 * 
 */
public class CoursesFilter extends HttpFilter {

	@Override
	@SuppressWarnings(value = { "unchecked" })
	public void doFilter(HttpServletRequest request,
			HttpServletResponse response, FilterChain chain)
			throws IOException, ServletException {

		// 如果课程列表已经有了,那么在这里就什么都不做
		HttpSession session = request.getSession(false);
		// session不为空时
		if (session != null) {
			// 如果session中已经有了课程列表的话就什么都不做
			List<Course> courseList = (List<Course>) session
					.getAttribute("courseList");

			if (courseList == null) {
				// 如果课程列表不在session中,就把它放到session中
				setCourseList(session);
			}
		} else {// session为空时
			session = request.getSession();
			setCourseList(session);
		}

		chain.doFilter(request, response);

	}

	/**
	 * 把课程列表放到session中
	 * 
	 * @param session
	 */
	private void setCourseList(HttpSession session) {
		List<Course> courseList;
		// session.getServletContext()就是jsp中的application
		ServletContext sc = session.getServletContext();

		ApplicationContext act = WebApplicationContextUtils
				.getWebApplicationContext(sc);
		CourseService courseService = (CourseService) act
				.getBean("courseService");
		courseList = courseService.selAllCourse();
		session.setAttribute("courseList", courseList);

	}

}
分享到:
评论

相关推荐

    利用Java手写一个布隆过滤器Bloom Filter

    布隆过滤器是一种数据结构,主要用于判断一个元素是否可能在一个集合中存在。它可以在插入和查询数据时快速地判断一个元素是否可能在这个集合中,比如在缓存中查询一个元素是否存在。 它的原理是使用多个哈希函数对...

    JQ filter() 过滤函数

    下面是一个简单的例子,展示如何使用`filter()`筛选并高亮显示价格高于100元的商品: ```html &lt;li data-price="50"&gt;Product A &lt;li data-price="120"&gt;Product B &lt;li data-price="80"&gt;Product C ...

    Android开发之EditText字符串过滤器InputFilter

    如果需要过滤特殊字符,可以创建一个包含合法字符的集合,然后检查输入字符是否在集合内。 4. **组合多个InputFilter**:有时我们需要同时应用多种过滤规则,例如限制长度和过滤特殊字符。在这种情况下,可以创建一...

    过滤器过滤用户输入的非法字符

    首先,`XssFilter.java` 是一个实现了Servlet过滤器接口(javax.servlet.Filter)的类,它的主要任务是在HTTP请求到达业务处理层之前,对请求参数进行预处理,即过滤掉可能存在的非法或危险字符。通常,这个过滤器会...

    geoserver wfs过滤查询

    在这个例子中,我们看到一个`&lt;wfs:GetFeature&gt;`元素,它包含了查询的所有必要参数,如输出格式(outputFormat="GML2"),服务类型(service="WFS"),版本(version="1.0.0")以及XML命名空间定义等。 接着,我们...

    设计模式-过滤器模式

    1. **组件(Component)**:这是被过滤的对象集合,例如一个商品列表。 2. **过滤器(Filter)**:定义了对象的接口,允许应用不同的标准进行过滤。在iOS开发中,这个接口可能包含多个用于筛选的条件方法。 3. **...

    Jquery过滤和悬停效果

    `filter()`方法接收一个函数或一个选择器作为参数,用于从当前匹配的元素集合中选取满足条件的元素。例如,如果我们有一个包含多个列表项的`&lt;ul&gt;`元素,我们可以筛选出所有包含特定文本的列表项: ```javascript $...

    DataGridView过滤(附带完整代码及示例)

    在提供的`WindowsFormsApplication2`项目中,你应该会看到一个实现了以上逻辑的完整例子。运行程序,你会发现有一个`DataGridView`控件,一个文本框用于输入过滤条件,以及一个清除过滤的按钮。输入城市名后,`...

    1道过滤器模式架构风格-课程内容.rar

    1. **组件(Component)**:表示要过滤的对象集合,通常是一个接口或抽象类,定义了与过滤相关的操作,如添加过滤器、执行过滤等。 2. **过滤器(Filter)**:实现了对组件对象的特定过滤条件,通常是一个实现了组件...

    权限管理(过滤器粗粒度无侵入拦截方式)

    反之,过滤器将阻止请求,并可能返回一个错误页面或消息。 为了实现这种无侵入的权限管理,开发者需要对请求URL和资源进行合理的映射,以便正确地配置过滤器。在`web.xml`中,可以通过`&lt;filter-mapping&gt;`元素指定...

    bloom-filter:Java中Bloom过滤器的实现

    布隆过滤器是一种概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由Burton Howard Bloom在1970年提出的,因此得名。布隆过滤器的主要优点是空间效率高,能够以较低的内存成本近似地判断一个元素是否...

    Hibernate 3.x过滤器的高级应用

    举个例子,假设我们有一个管理用户的Web应用,用户分为活动和已过期两种状态,存储在数据库的同一列中。如果需要将这两种状态的用户分开管理,传统的做法是为每个HQL查询添加`WHERE`条件。然而,通过Hibernate 3.x的...

    datagirdview 增删改查经典例子

    这个“datagirdview 增删改查经典例子”是一个实际应用的示例,作者花费了三天时间精心制作,旨在帮助开发者理解和掌握如何在Windows Forms应用程序中利用DataGridView实现数据操作。 首先,我们要了解DataGridView...

    Filter.zip

    这个名为"Filter.zip"的压缩包文件提供了一个利用过滤器(Filter)技术和IO流来实现这一功能的示例。下面我们将深入探讨相关知识点。 首先,**过滤器(Filter)**是Java Servlet技术的一部分,它允许我们在请求到达...

    在Python中使用filter去除列表中值为假及空字符串的例子

    在Python编程语言中,`filter()`函数是一个非常实用的内置函数,它用于过滤序列中的元素。根据提供的函数或条件,`filter()`返回一个新的序列,其中包含原始序列中满足条件的元素。本文将深入探讨如何使用`filter()`...

    实现Java删除一个集合的多个元素

    在这个例子中,我们创建了`source`集合的`Stream`,然后使用`filter()`方法过滤出不在黑名单中的元素,最后使用`collect()`方法将过滤后的元素收集回新的列表中。 总之,Java中删除集合元素时应避免在`for each`...

    jQuery过滤器图片浏览.rar_average91i_jQuery过滤器图片浏览

    例如,我们可以使用`.filter()`方法来选取满足特定条件的元素,`.first()`或`.last()`来选取集合中的第一个或最后一个元素,`.has()`根据子元素来选择父元素,以及`.not()`排除不满足条件的元素。 在"jQuery过滤器...

    jQuery图片筛选过滤器插件特效源码.zip

    在这个领域,jQuery作为一个广泛使用的JavaScript库,提供了丰富的功能和简便的API,使得开发者能够轻松实现这样的功能。本文将深入探讨基于jQuery的图片筛选过滤器插件的实现原理与源码分析。 首先,jQuery库的...

    java8 多条件过滤、去重

    这个例子中,我们有一个名为`allBlacklist`的集合,我们需要从中筛选出满足特定条件的元素。这些条件包括`sms.getCorpcode().equals(corpCode)`、`sms.getBltype().equals(MessageTypeEnum.SMS.getKey())`以及`sms....

Global site tag (gtag.js) - Google Analytics