登录过滤器,css样式过滤问题解决方法

过滤器的详解以及实现(样式问题解决方法在代码注释中!)

过滤器

过滤器 (filter)是一个程序,它先于与它相关的servlet或jsp页面运行在服务器上,当服务器启动时,加载web.xml时过滤器就被加载了

  • 过滤器中三个方法:
    • 1.init():初始化调用,在tomcat启动时自动被调用。
    • destroy():销毁方法
    • doFilter():处理请求

过滤器就是个特殊的servlet

过滤器对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理,这样客户的请求在过滤器链里逐个处理,直到请求发送到目标为止。

过滤器应用:

实际开发过程中,过滤器可以用来对用户进行统一的身份判断,ip访问限制、用户发送请求的字符编码转换、对请求和响应信息进行加密和解密、记录用户的登录日志等等。

过滤器调用顺序是web.xml中配置的顺序

过滤器的实现

接下来给大家上一段代码,是一个简单的登录,注册过滤,大家可以直接拷贝到项目中更改路径就可以使用

import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


public class Filter implements javax.servlet.Filter {

	public Filter() {
		// TODO Auto-generated constructor stub
	}

	public void destroy() {
		// TODO Auto-generated method stub
	}
	public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain) throws IOException, ServletException {
		// 转化为我们习惯用的request和response对象(个人习惯)
		HttpServletRequest request = (HttpServletRequest) arg0;
		HttpServletResponse response = (HttpServletResponse) arg1;
		// 设置编码格式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		//获取传来的请求
		String uri = request.getRequestURI();
		// 对请求的字符串进行截取 例如http://localhost:8080/aaa/bbb.jsp中我们想要的请求字符串为bbb.jsp
		uri = uri.substring(uri.lastIndexOf("/")+1);
		// 放行登录注册界面和请求以及相对应的效验请求还有css样式!!!很多人加了过滤器没有放行样式所以导致样式都没了
		// 解决方法放行样式:如下
		if (uri.equals("login.jsp") || uri.equals("checkUserTele.do") || uri.equals("reguser.do")
				 || uri.equals("checkUserCardId.do") || uri.equals("userLogin.do") || uri.equals("insertUser.do")
				 || uri.indexOf(".jpg") > 0 || uri.indexOf(".jpeg") > 0 || uri.indexOf(".png") > 0 
				|| uri.indexOf(".gif") > 0 || uri.indexOf(".css") > 0
				|| uri.indexOf("js") > 0) {
			// 放行到下一个过滤器,如果是最后一个,跳转到对应请求处理方法
			chain.doFilter(request, response);
			return;
		}
		//session检查,看session中是否有登录过的用户
		HttpSession session = request.getSession();
		// 我的登录方法中,登录成功就往session中存一个用户信息,key为login
		Object object = session.getAttribute("login");
		if (object == null) {
			// 没有就跳转到登录
			response.sendRedirect("login.jsp");
		}else{
			// 有就向下执行
			chain.doFilter(request, response);
		}
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

现在虽然我们写好了过滤器,但是并没有起作用,我们还需要让工程指导过滤器的存在,所以我们要在web.xml中配置,上文提到过了 过滤器的执行顺序就是web.xml中配置的顺序,所以放在第一个过滤器,也就是web-app标签下的第一个

<!-- 登录过滤器 -->
   <filter>
    <display-name>Filter</display-name>
    <filter-name>Filter</filter-name>
    <!-- 下面就是你过滤器的路径,双击你的过滤器类名拷贝一下路径 -->
    <filter-class>com.cyz.filter.Filter</filter-class>
  </filter> 
  <filter-mapping>
    <filter-name>Filter</filter-name>
    <!-- 下面是想拦截的请求 -->
    <url-pattern>/*</url-pattern>
  </filter-mapping>

以上整个过滤器就已经成功在你项目中成功引用了
也可以通过使用*.do来过滤请求,
这样如果我们在页面中的请求中添加后缀名.do就可以避免对静态资源的过滤了,也就不需要对静态资源做特殊处理了.
感谢大家的支持!

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UEditor编辑器的默认配置是自动过滤Style内联样式的,这是为了避免恶意代码的注入和提高编辑器的安全性。如果你需要在编辑器中使用一些特定的内联样式,可以通过修改UEditor的配置来实现。具体的方法是在UEditor的配置文件中添加如下代码: ``` //允许的标签 allowDivTransToP: false, allowScript: false, allowSpanTransToP: false, filterRules: { //允许的标签和属性 'p': {'$': {}}, 'br': {'$': {}}, 'u': {'$': {}}, 'strong': {'$': {}}, 'em': {'$': {}}, 'font': {'$': {'color': 1, 'face': 1, 'size': 1}}, 'span': {'$': {'style': 1, 'class': 1}}, 'a': {'$': {'href': 1, 'target': 1, 'title': 1}}, 'img': {'$': {'src': 1, 'width': 1, 'height': 1, 'border': 1, 'alt': 1, 'title': 1}}, 'table': {'$': {'width': 1, 'border': 1, 'cellpadding': 1, 'cellspacing': 1, 'bgcolor': 1, 'align': 1}}, 'tbody': {'$': {}}, 'tr': {'$': {'bgcolor': 1, 'height': 1, 'align': 1}}, 'td': {'$': {'width': 1, 'height': 1, 'valign': 1, 'align': 1, 'colspan': 1, 'rowspan': 1, 'bgcolor': 1}} }, //过滤样式 filterStyle: true, //过滤CSS filterCss: true ``` 在上述代码中,filterStyle参数设置为true表示开启过滤样式的功能,如果需要允许某些特定的样式,可以在filterRules中添加对应的样式属性。 如果你的UEditor版本较老,可能需要手动修改UEditor的源码来实现此功能。可以在UEditor源码的ueditor.config.js文件中查找“filterStyle”关键字,然后将其设置为false即可取消自动过滤样式的功能。但需要注意,这样做会降低编辑器的安全性,可能会存在安全隐患。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值