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过滤器可以对用户提交的数据或服务器返回的数据进行更改.任何到达服务器的请求都会首先经过过滤器的处理.本实例应用过滤器的这个特点,编写了一个在过滤器中统计网站流量的实例. 本实例 ...
随机推荐
- CSS中font-size、font-family、line-height顺序以及简写属性
顺序: font-size line-height font-family body { font-size: 12px}; h1 { font: bold 200%/1.2 ...
- 以下css可以清除浮动
.clearfix:after { content: ""; clear: both; visibility: hidden; display: block; height: 0p ...
- Jrebel是一套开发环境,用来实现热部署
http://truemylife.iteye.com/blog/1140921 背景与愿景:开发环境下,tomcat对热布署的支持还不够全面,致使开发人员浪费大量时间在重起服务上.为了提高开发效率, ...
- job_queue_processes参数讲解
http://blog.sina.com.cn/s/blog_62defbef0101opv0.html http://blog.163.com/donfang_jianping/blog/stati ...
- JDBC连接MySQL数据库的方法和实例
import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java. ...
- 剑指Offer 二叉树中和为某一值的路径(dfs)
题目描述 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径. 思路: 递归,然后深搜,因为题目定义的, ...
- 26 BasicUsageEnvironment基本使用环境——Live555源码阅读(三)UsageEnvironment
26 BasicUsageEnvironment基本使用环境--Live555源码阅读(三)UsageEnvironment 26 BasicUsageEnvironment基本使用环境--Live5 ...
- 有关在线OJ网络AC爬虫
搜索源码 爬取代码 自动登录 在线提交 判断AC
- 虚函数列表: 取出方法 // 虚函数工作原理和(虚)继承类的内存占用大小计算 32位机器上 sizeof(void *) // 4byte
#include <iostream> using namespace std; class A { public: A(){} virtual void geta(){ cout < ...
- Python中用format函数格式化字符串的用法
这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下 自python2. ...