使用过滤器对象来对登录成功界面设置权限保护

来源:互联网 发布:经传证券炒股软件 编辑:程序博客网 时间:2024/05/20 05:45

1:建立一个普通的登录表单然后让其对success.jsp页面进行访问操作

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录界面</title></head><body><form action="success.jsp" method="post"><table><tr><td>用户名:</td><td><input type="text" name="username"></td></tr><tr><td>密 码:</td><td><input type="password" name="password"></td></tr><tr><td><input type="submit" value="提交"></td><td><input type="reset" value="重置"></td></tr></table></form></body></html>
登录成功界面:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录成功界面</title></head><body>亲爱的${param.username }欢迎您的访问</body></html>
以上就可以完成一个简单的登录界面。但是有两个问题:

1:无法对用户所填写的信息进行验证操作。

2:用户可以跳过登录界面来对success界面进行访问操作

为解决以上问题引入了过滤器对象,建立一个过滤器对象来对所有的访问success.jsp的请求信息进行过滤操作,看请求数据是否为空以即是否为指定的信息。

过滤器对象:

package com.filter;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.http.HttpServletResponse;import jdk.nashorn.internal.runtime.regexp.joni.Config;//建立一个过滤器对象用于对访问success.jsp页面的请求数据进行过滤操作public class successFilter implements Filter{private String charSet;@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)throws IOException, ServletException {System.out.println("执行过滤操作。");req.setCharacterEncoding(charSet);//设置request请求对象当中的编码方式String username=req.getParameter("username");if(username==null || !username.equals("青之羽")){System.out.println("对不起,您输入的用户名为空或者输入的用户名错误");HttpServletResponse response=(HttpServletResponse)res;response.sendRedirect("login.jsp");//当请求对象被拦截时,发送一个响应给客户端让其对longing.jsp页面当中的资源进行访问操作}elsechain.doFilter(req, res);}@Overridepublic void init(FilterConfig config) throws ServletException {//对过滤器对象当中的参数对象进行初始化操作,通过过滤器配置对象来获取xml文件对象当中所对应的过滤器对象当中的参数this.charSet=config.getInitParameter("charset");//获取xml文件对象当中的参数数据,并将其赋值给字符串变量}}
配置信息:web.xml

  <filter>  <filter-name>loginFilter</filter-name>  <filter-class>com.filter.successFilter</filter-class>  <init-param>  <param-name>charset</param-name>  <param-value>utf-8</param-value>  </init-param>  </filter>  <filter-mapping>  <filter-name>loginFilter</filter-name>  <url-pattern>/success.jsp</url-pattern>  </filter-mapping>

以上代码即可以完成对所建立的登录界面实现登录信息的校验和防止用户直接对成功界面进行访问的操作



阅读全文
0 0