`

关于servlet中Filter的使用

 
阅读更多
 用户登录功能的实现,非法用户不能访问指定资源


代码结构如下:



UserInfo.java代码如下:
package com.bean;

public class UserInfo {
	
	private String name ;
	
	private String password;
	
	public UserInfo(){
		
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	
}



FilterStation.java
package com.filter;

import java.io.IOException;
import java.io.PrintWriter;

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.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class FilterStation extends HttpServlet implements Filter{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpSession session = ((HttpServletRequest)request).getSession();
		 response.setCharacterEncoding("utf-8");
		if(session.getAttribute("user")==null){
			PrintWriter out = response.getWriter();
			out.print("<script language=javascript>alert('you do not login!');window.location.href='../index.jsp';</script>");
		}else{
			chain.doFilter(request, response);
		}
	}

	public void init(FilterConfig config) throws ServletException {
		
	}

}



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>filterstation</filter-name>
		<filter-class>com.filter.FilterStation</filter-class>
	</filter>
	<filter-mapping>
	 <filter-name>filterstation</filter-name>
	 <url-pattern>/jsp/*</url-pattern>
	</filter-mapping>
</web-app>



index.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>login</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	</head>

	<body>
		<form name="form1" method="post" action="result.jsp">
			<table width="233" border="1" cellpadding="0" cellspacing="0">
				<tr align="center">
					<td width="48" height="30">
						账号
					</td>
					<td width="179">
						<input type="text" name="account">
					</td>
				</tr>
				<tr align="center">
					<td height="30">
						密码
					</td>
					<td>
						<input type="password" name="password">
					</td>
				</tr>
			</table>
			<input type="submit" name="Submit" value="提交" />
		</form>
	</body>
</html>



result.jsp代码如下:
<%@ page import="com.bean.UserInfo"%>
<%
	request.setCharacterEncoding("utf-8");
	String name = request.getParameter("name");
	String password = request.getParameter("password");
	UserInfo user = new UserInfo();
	user.setName(name);
	user.setPassword(password);
	session.setAttribute("user", user);
	response.sendRedirect("jsp/showInformation.jsp");
%>



back.jsp代码如下:
<% 
 session.invalidate();
out.print("<script language='javascript'> window.location.href='../index.jsp';</script>");
%>


showInformation.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>show information</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
  </head>
  
  <body>
     <script language="javascript">
      window.alert('您登录成功');
      window.location.href="jsp/back.jsp";
     </script>
  </body>
</html>


运行结果:
合法用户登录






非法访问资源







  • 大小: 22.6 KB
  • 大小: 16.2 KB
  • 大小: 29.6 KB
  • 大小: 26.2 KB
  • 大小: 14.7 KB
分享到:
评论

相关推荐

    servlet之Filter使用范例--登陆验证

    在压缩包文件"ServletLearningChapter2_2"中,可能包含了关于Servlet和Filter的更多学习材料,包括代码示例、练习项目等,这将有助于你更深入地理解和掌握这些概念。建议结合这些资源进行实践操作,以巩固理论知识。

    Servlet Filter 的单元测试

    Servlet Filter 是Java Servlet API中的一个重要组件,主要用于在Servlet处理请求之前或之后进行拦截处理,例如权限检查、日志记录、内容转换等。进行Servlet Filter的单元测试是确保Filter功能正确性和健壮性的重要...

    servlet+filter+listener 详解

    Servlet、Filter 和 Listener 是 JavaEE 中三种重要的组件,它们在 Web 开发中扮演着重要的角色。Servlet 负责处理客户端的请求,Filter 负责过滤和拦截 Web 资源,而 Listener 负责监听Servlet 容器中的事件。

    Servlet中的Filter

    每个Filter的doFilter()方法会被调用,直到请求达到Servlet,或者在Filter中中断过滤链。 4. **Filter接口** - **init()**:在Filter实例化后,Web容器会调用一次init()方法,用于初始化Filter,可以在此方法中...

    简单的servlet+Filter的例子

    Servlet和Filter是Java Web开发中的两个重要概念,它们在构建动态Web应用程序中起着关键作用。Servlet是一种Java类,用于扩展服务器的功能,处理客户端(如浏览器)的请求,并向其发送响应。而Filter则是在Servlet...

    简单使用Filter模拟Servlet中的过滤器

    本篇博客“简单使用Filter模拟Servlet中的过滤器”主要探讨了如何在实际应用中实现和配置Filter,以及其工作原理。虽然描述部分为空,但我们可以从标题推测,博主可能详细讲解了如何创建一个基本的Filter类,实现...

    Servlet之Filter深入讲解及实例研究

    Servlet之Filter是Java Web开发中的一个重要概念,它在Servlet规范中扮演着不可或缺的角色。Filter(过滤器)允许开发者在请求到达目标Servlet之前或之后对请求和响应进行处理,提供了诸如数据验证、日志记录、字符...

    Servlet与jsp与Filter的使用

    ### Servlet与JSP与Filter的使用详解 #### 一、Servlet与JSP的基本概念 Servlet是一种Java技术,用于创建动态Web应用程序。它本质上是一个Java类,由Web服务器或应用服务器加载,以响应客户端请求。Servlet可以...

    Spring 管理filter 和servlet

    特别是在Java EE环境中,如何有效地整合Spring与Servlet、Filter等核心组件,对于构建高性能、高灵活性的应用系统至关重要。本文将深入探讨Spring管理Filter和Servlet的机制与实践步骤,帮助开发者更好地理解和运用...

    servlet filter

    Servlet Filter是Java Servlet API中的一个重要概念,它是Servlet容器(如Tomcat、Jetty等)提供的一种拦截请求和响应的能力,允许开发者在请求到达目标Servlet之前或之后进行处理。Filter可以用于实现诸如认证、...

    servlet_filter.rar_Servlet filter_重写filter

    在这个压缩包“servlet_filter.rar”中,我们聚焦于Servlet Filter的重写以及如何利用它来解决乱码问题和过滤敏感字符。 首先,让我们深入理解Servlet Filter的工作原理。Servlet Filter是一个实现了`javax.servlet...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    通过配置`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素在web.xml中指定Filter的使用。 综上所述,`javax.servlet` jar包和`javax.servlet.jsp` jar包是Java Web开发不可或缺的部分,它们提供了处理HTTP请求的核心接口和类,...

    jsp,servlet,filter温故知新

    **JSP、Servlet与Filter详解** 在Web开发领域,Java技术是不可或缺的一部分,其中JSP(JavaServer Pages)...在实际项目中,合理利用Filter可以提高应用的安全性和性能,而JSP和Servlet则负责处理用户交互和业务逻辑。

    jsp+servlet+filter+javabean 权限实例代码

    在本文中,我们将深入探讨如何使用JSP、Servlet、Filter和JavaBean来实现一个权限管理的实例。这些技术是构建动态Web应用的核心组件,尤其是在处理用户登录和权限控制时。 首先,`JSP (JavaServer Pages)`是一种...

    jsp servlet中的过滤器Filter配置总结

    在Filter中,可以通过调用`doFilter()`方法将请求传递给下一个Filter或目标资源。Filter还可以选择是否中断请求链,通过调用`Chain.doFilter()`来实现。 总之,Filter在JSP和Servlet应用中提供了强大的功能,允许...

    servlet filter大全

    以上就是"servlet filter大全"中可能涵盖的一些关键知识点,它们在实际开发中扮演着重要角色,提升应用的健壮性和用户体验。了解并熟练运用这些过滤器,对于任何Java Web开发者来说都是至关重要的。通过学习和实践,...

    servlet+filter+lisenter 例子

    在给定的压缩包文件中,"Filter"可能包含了一个或多个实现了Filter接口的示例类,它们展示了如何配置和使用过滤器。"Listener"文件可能包含实现了不同监听器接口的示例,用于展示监听器的工作原理。而"Servlet"文件...

    servlet 中文帮助文档

    这份"Servlet中文帮助文档"提供了关于Servlet API的详细描述,便于开发者理解和使用。 一、Servlet简介 Servlet是Java语言编写的应用程序,运行在服务器端,用于接收和响应HTTP请求。它们可以生成动态内容,如HTML...

Global site tag (gtag.js) - Google Analytics