一个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);

	}

}

你可能感兴趣的:(Web,jsp,servlet)