Javaweb---Servlet过滤器
Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的请求进行过滤处理,将过滤后的请求再转给下一个资源。
过滤器的基本概念
- public void init(FilterConfig filterConfig) throws ServletException
- public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
- public void destroy()
- public void doFilter(ServletRequest request,ServletResponse response) throws IOException,ServletException
package com.oumyye.过滤器;
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;
public class SimpleFilter implements Filter {
public void init(FilterConfig config) throws ServletException { // 初始化过滤器
String initParam = config.getInitParameter("ref"); // 取得初始化参数
System.out.println("** 过滤器初始化,初始化参数 = " + initParam);
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException { // 执行过滤
System.out.println("** 执行doFilter()方法之前。");
chain.doFilter(request, response); // 将请求继续传递
System.out.println("** 执行doFilter()方法之后。");
}
public void destroy() { // 销毁过滤
System.out.println("** 过滤器销毁。");
}
}
配置web.xml
<filter>
<filter-name>simple</filter-name>
<filter-class>org.lxh.filterdemo.SimpleFilter</filter-class>
<init-param>
<param-name>ref</param-name>
<param-value>HELLOMLDN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>simple</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器的应用 —— 编码过滤
package com.oumyye.过滤器;
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;
public class EncodingFilter implements Filter {
private String charSet; // 设置字符编码
public void init(FilterConfig config) throws ServletException {
this.charSet = config.getInitParameter("charset"); // 取得初始化参数
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(this.charSet); // 设置统一编码
}
public void destroy() {
}
}
配置web.xml文件
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.lxh.filterdemo.EncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器的应用---登陆验证
package com.oumyye.过滤器; import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*; public class FilterLogin extends HttpServlet implements Filter {
private FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws ServletException,
IOException {
HttpSession session=((HttpServletRequest)request).getSession();
response.setCharacterEncoding("gb2312"); //响应客户端类型
if(session.getAttribute("user")==null){ //判断session中是否有user这个对象
PrintWriter out=response.getWriter(); //创建一个输出流
//如果为空则通过javaScript脚本出输出提示并跳转到index.jsp页面
out.print("<script language=javascript>alert('您还没有登录!!!');window.location.href='../index.jsp';</script>");
}else{
filterChain.doFilter(request, response);//否则继续执行
}
}
public void destroy() {
}
}
User.java
package com.mr.filter; public class User {
private String username;
private String password; public String getUsername() {
return username;
} public String getPassword() {
return password;
} public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
} }
配置web.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>filterUser</filter-name>
<filter-class>com.mr.filter.FilterLogin</filter-class>
</filter>
<filter-mapping>
<filter-name>filterUser</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
jsp页面:
index.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet" type="text/css" >
<script language="javascript" type="">
function checkEmpty(){
if(document.form.name.value==""){
alert("用户名不能为空")
document.form.name.focus();
return false;
}
if(document.form.password.value==""){
alert("密码不能为空")
document.form.password.focus();
return false;
}
}
</script> <title>使用过滤器身份验证</title>
</head> <body>
<h3> </h3>
<p align="center">使用过滤器身份验证</p>
<form name="form" method="post" action="loginresult.jsp" onSubmit="return checkEmpty()">
<table width="220" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="808080"> <tr>
<td align="center">用户名:</td>
<td ><input name="name" type="text"></td>
</tr>
<tr>
<td align="center">密 码:</td>
<td><input name="password" type="password"></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="Submit" value="登录">
<input type="submit" value="退出"/>
</td>
</tr>
</table><br>
</form> </body>
</html>
loginresult.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %>
<%@ page import="com.mr.filter.User"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用过滤器身份验证</title>
</head>
<%
request.setCharacterEncoding("gb2312");
String name=request.getParameter("name");
String password=request.getParameter("password");
User user=new User();
user.setUsername(name);
user.setPassword(password);
session.setAttribute("user",user); response.sendRedirect("filter/loginsuccee.jsp");
%>
<body>
</body>
</html>
loginsuccee.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="com.mr.filter.User"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用过滤器身份验证</title>
</head>
<body><div align="center"> <table width="333" height="285" cellpadding="0" cellspacing="0">
<tr>
<td align="center">
<p>您己成功登录</p>
<p><br>
<a href="backtrack.jsp">返回</a>
</p></td>
</tr>
</table>
</div> </body>
</html>
backtrack.jsp
<%
session.invalidate();
out.print("<script language='javascript'>window.location.href='../index.jsp';</script>");
%>
小结:
Javaweb---Servlet过滤器的更多相关文章
- TODO java-web相关 servlet过滤器+监听器
servlet过滤器 定义: 过滤器是小型的web组件,它负责拦截请求和响应,以便查看.提供或以某种方式操作正在客户机和服务器之间交换的数据. 与过滤器相关的servlet共包含3个简单接口:Filt ...
- JavaWeb学习篇之----Servlet过滤器Filter和监听器
首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: ************************************************************** ...
- Servlet过滤器
Servlet过滤器 [TOC] 1.过滤器的基本概念 1.1.基本概念 过滤器(Filter)属于tomcat服务器中的Servlet功能.在普通的javaweb服务中,jsp中的请求要被Servl ...
- [JavaWeb] Servlet Filter
作用: Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息. 可以将一个或多个 Servlet 过滤器附加到一个 Servlet 或一组 Servlet.Servle ...
- IT兄弟连 JavaWeb教程 过滤器1
Servlet过滤器是从Servlet2.3规范开始新增的功能,并在Servlet2.4规范中得到增强,监听器可以监听到Web应用程序启动和关闭.创建过滤器和监听器需要继承相应接口,并对其进行配置. ...
- Servlet过滤器Filter用法
1 Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法:public void ...
- Servlet过滤器和监听器
1,Servlet过滤器 <filter> <filter-name>charset</filter-name> <filter-class>org.g ...
- Servlet 过滤器
一.过滤器介绍 在Servlet 2.3中定义了过滤器,它能够对Servlet容器的请求和响应进行检查和修改. Servlet过滤器能够在Servlet被调用之前检查Request对象,并修改Requ ...
- Servlet基础知识(四)——Servlet过滤器Filter
一.什么是过滤器: 政府大楼的安检保安,它既能对进入政府大楼的人员进行检查,只允许检查符合要求的进入:同时他也负责对出大楼的人进行检查,看他带出的东西是否符合要求. 同样的,Servlet中的过滤器既 ...
- Servlet过滤器——过滤器分析流量
1.概述 Servlet过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...
随机推荐
- ajax提交Form
Jquery的$.ajax方法可以实现ajax调用,要设置url,post,参数等. 如果要提交现有Form需要写很多代码,何不直接将Form的提交直接转移到ajax中呢. 以前的处理方法 如Form ...
- canvas对象arcTo函数的使用-遁地龙卷风
(-1)环境说明 我使用的浏览器是chrome49 (1)详细介绍 $(function() { var context = lol.getContext("2d"); conte ...
- Android开发学习笔记--一个有界面A+B的计算器
做了一个A+B的APP,虽然很简单,但是作为初学者还是弄了几个小时才弄好,什么东西都要看书或者百度,但最后成功了,还是很开心的,收货蛮大的.现在把过程写一下: 首先给出效果图: 一开始布局一直有问题, ...
- 跟着百度学PHP[4]OOP面对对象编程-16-switch逻辑就语句
直接看案例.较为简单.不解释. <?php $chengji="; #先定义一个变量赋值一个数值 switch ($chengji) { && $chengji > ...
- Tomcat无法启动问题
检查环境变量设置 再打开一个cmd, 1.输入if not exist "%JRE_HOME%\bin\java.exe" echo no jre java 回车 结果:no ...
- Qt 官方一键动态发布技能
苦找了好几天动态库,程序可以运行了,结果没有图标还是少了运行库很苦恼,发现Qt 官方有一键动态发布功能感觉自己萌萌的,来自qt吧亲测可用. 集成开发环境 QtCreator 目前生成图形界面程序 ex ...
- 37 网络相关函数(五)——live555源码阅读(四)网络
37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...
- Java验证码识别解决方案
建库,去重,切割,识别. package edu.fzu.ir.test; import java.awt.Color; import java.awt.image.BufferedImage; im ...
- 网站标签栏ico设置代码
放在公共文件的header中 <link rel="Shortcut Icon" href="{APP_PATH}favicon.ico" />
- linux下的shell运算(加、减、乘、除)
linux下的shell运算(加.减.乘.除) 标签: linuxshell运算加减乘除 2014-03-12 16:25 15127人阅读 评论(0) 收藏 举报 分类: linux(17) ((i ...