通常在JSP页面中,经常需要对集合对象进行循环的操作,所以该标签专门被用于迭代集合对象中的元素
.///var属性用于指定的元素保存在page域中
.///items用于指定的集合对象
.///varStatus属性用于指定的当前迭代状态信息对象保存到page当中
.///begin属性用于指定从集合当中第几个元素开始迭代可以对他进行指定
.///step属性用于指定迭代的步长
使用属性来进行分别指定的循环起始索引,结束索引和步长如下:
.///count:表示元素集合当中的序号
.///index:表示当前元素在集合当中的索引
.///first:表示当前是否为集合中的第一个元素
.///last:表示当前是否为集合当中的最后一个元素
.///name属性用于指定参数的名称
.///属性用于特定参数的值
.///value属性用于指定构造的URL
.///context属性用于指定导入同一个服务器WEB应用下的名称
.///var属性用于指定构造的URL地址保存到域对象的属性名称
.///scope属性用于特指好的URL保存到域对象中
Filter过滤器
“过滤器”的基本含义,其基本的功能介绍对Servlet容器调用Servletd的过程进行拦截,从而实现一些特殊功能图示如下
实现一个Filter程序:
创建一个类用于拦截MyServlet程序:
对于过滤器MyServlet请求资源进行拦截,在配置信息当中含有多个元素如下:
.///
.///
.///
.///
.///
Filter映射分为两种主要如下:
- 使用通配符的”*”拦截用户的所有请求
- 拦截不同的方式的访问请求有四个如下:
.///REQUEST,INCLUDE,FORWARD,ERROR,
创建一个ForwardServlet的类用来建请求转发给first页面
First的输出页面
创建过滤器ForwardServlet,对于first的页面进行拦截
Filter链
它主要是针对某一个URl进行拦截,如果多个的Filter对一个URL进行拦截时那么就会形成一个过滤链也叫(Filter链)文字太过于繁琐直接看图如下:
创建两个新的过滤器MyFilter1和MyFilter2
FilterConfig接口
它主要是为了获取Filter程序在web文件当中的配置信息提供了一系列的配置信息方法:
创建过滤器MyFilter03来获取web中的参数:
使用Filter实现用户自动登录
编写User类:
实现登面和首页:
编写index页面,用于显示用户登录信息:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.*"%>2)编写index.jsp页面,该谢冕用于显示用户的登录信息,如果没有用户登录,在index.jsp页面显示一个超链接;如果已登录,将会显示用户名,以及一个注销的超链接: <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.*" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>用户登录
编写Servlet类用于处理用户的登录请求,分别处理登录正确,和密码错误:
package chapter10.entity;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获得用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//检查用户名和密码
if ("itcast".equals(username) && "123456".equals(password)) {
//登录成功
//将用户状态user对象存入session域
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
//发送自动登录的cookie
String autoLogin = request.getParameter("autoLogin");
if (autoLogin != null) {
//注意cookie中的加密
cookie cookie = new cookie(autoLogin, username + "-"+password);
cookie.setMaxAge(Integer.parseInt(autoLogin));
cookie.setPath(request.getContextPath());
response.addcookie(cookie);
}
//跳转至首页
response.sendRedirect(request.getContextPath()+"/index.jsp");
}else {
request.setAttribute("errerMsg", "用户名或密码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
编写LogoutSerlvet类用于注销用户登录信息,它可以先删除保存的User对象,然后注销用户登录信息,然后自动登录的cookie删除,最后跳转到index,jsp:
package chapter10.entity;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jdk.javadoc.doclet.Reporter;
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public LogoutServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//用户注销
request.getSession().removeAttribute("user");
//从客户端删除自动登录cookie
cookie cookie=new cookie("autologin", "msg");
cookie.setPath(request.getContextPath());
cookie.setMaxAge(0);
response.addcookie(cookie);
response.sendRedirect(request.getContextPath()+"/index.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
c创建过滤器
编写AutoLoginFilter类,用于拦截用户登录的请求访问,判断请求中是否包括自动登录的cookie:
package chapter10.entity;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServletRequest;
public class AutoLoginFilter implements Filter {
public AutoLoginFilter() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) req;
// place your code here
// pass the request along the filter chain
//获得一个名为autologin的cookie
cookie[] cookies = request.getcookies();
String autologin = null;
for (int i = 0; cookies != null && i
配置映射信息
在web中配置相关Servlet及AutoLoginFilter过滤信息
package chapter10.entity;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServletRequest;
public class AutoLoginFilter implements Filter {
public AutoLoginFilter() {
// TODO Auto-generated constructor stub
}
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) req;
// place your code here
// pass the request along the filter chain
//获得一个名为autologin的cookie
cookie[] cookies = request.getcookies();
String autologin = null;
for (int i = 0; cookies != null && i



