第九次作业

第九次作业,第1张

第九次作业

标签

  通常在JSP页面中,经常需要对集合对象进行循环的 *** 作,所以该标签专门被用于迭代集合对象中的元素

的多个属性

 .///var属性用于指定的元素保存在page域中

    .///items用于指定的集合对象

     .///varStatus属性用于指定的当前迭代状态信息对象保存到page当中

.///begin属性用于指定从集合当中第几个元素开始迭代可以对他进行指定

 .///step属性用于指定迭代的步长

标签与迭代数组Map的集合如下:

使用属性来进行分别指定的循环起始索引,结束索引和步长如下:

标签的varStatus属性有以下四点:

   .///count:表示元素集合当中的序号

.///index:表示当前元素在集合当中的索引

 .///first:表示当前是否为集合中的第一个元素

  .///last:表示当前是否为集合当中的最后一个元素

标签这个标签常用于JSP完成URL的重写或者重定等特殊功能。

  .///name属性用于指定参数的名称

   .///属性用于特定参数的值

标签的多个属性

    .///value属性用于指定构造的URL

     .///context属性用于指定导入同一个服务器WEB应用下的名称

      .///var属性用于指定构造的URL地址保存到域对象的属性名称

       .///scope属性用于特指好的URL保存到域对象中

Filter过滤器

 “过滤器”的基本含义,其基本的功能介绍对Servlet容器调用Servletd的过程进行拦截,从而实现一些特殊功能图示如下

实现一个Filter程序:

创建一个类用于拦截MyServlet程序:

对于过滤器MyServlet请求资源进行拦截,在配置信息当中含有多个元素如下:

 .///用于注册Filter

  ./// 子元素设置

   .///用于设置Filter类的完整名称

.///跟元素用于设置一个过滤器拦截的资源

 .///子元素用于匹配用户的请求

Filter映射分为两种主要如下:

  1. 使用通配符的”*”拦截用户的所有请求
  2. 拦截不同的方式的访问请求有四个如下:

.///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"%> 显示登录的用户信息
欢迎光临

用户登录 欢迎您:${sessionScope.user.username} 退出

编写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 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5563200.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存