登录html:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login</title>
</head>
<body>
Login<br>
<form action="servlet/Login" method="post">
UserName:<input type="text" name="username"/><br/>
Password:<input type="text" name="password"/><br/>
<input type="submit" value="Login"/>
</form>
</body>
</html>
登录servlet判定类,就是中间简单的充当业务逻辑的判定类
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
/**
*
* @author zwc
*
*/
@SuppressWarnings("serial")
public class Login extends HttpServlet {
private Logger logger = Logger.getLogger(this.getClass());
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
if("zhangwc".equals(username) && "123456".equals(password)){注意:逻辑判定,就这一句
session.setAttribute("isLogin", true);
logger.info("登录成功");
}else{
session.setAttribute("isLogin", false);
logger.info("登录失败");
}
//RequestDispatcher rd = request.getRequestDispatcher("/error.jsp");
//rd.forward(request, response);
}
}
过滤类,需要实现filter接口
package 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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
/**
*
* @author zwc
*
*/
public class LoginFilter implements Filter {
private Logger logger = Logger.getLogger(this.getClass());
private String excludeDirs[];
private boolean isExclude = false;
private String contextPath;
public void doFilter(ServletRequest servletrequest,
ServletResponse servletresponse, FilterChain filterchain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletrequest;
HttpServletResponse response = (HttpServletResponse) servletresponse;
HttpSession session = request.getSession(true);
String path = request.getServletPath(); 得到当前请求的路径
int start = path.indexOf("*");
for(String requestPath : excludeDirs){
if(requestPath.indexOf(path) != -1){ 如果该路径在文档中存在,或者包括,则跳过,
logger.info("请求路径为:" + path +" .......放过");
filterchain.doFilter(servletrequest, servletresponse);注意这里要加,过滤链,否则对应的servlet不会指向
}else{
logger.info("请求路径为:" + path +" .......不放过,过滤");
Object o = session.getAttribute("isLogin");session判定
logger.info("请求经过过滤器,isLogin:" + o);
if(o != null && ((Boolean)o == Boolean.TRUE)){
filterchain.doFilter(servletrequest, servletresponse);
}else{
//RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
response.sendRedirect(contextPath + "/login.jsp");
}
}
}
}
public void init(FilterConfig filterconfig) throws ServletException {
excludeDirs = filterconfig.getInitParameter("exclude").split(";");
得到初始化时,定义的,过滤白名单中,不用过滤的目录和文件,不支持 “ * ”
contextPath = filterconfig.getServletContext().getContextPath();
得到文档的上下文路径
}
public void destroy() {
}
}
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">
<context-param>
<param-name>username</param-name>
<param-value>yuanfen</param-value>
</context-param>
<!-- security setting -->
<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>protectedArea1</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>protectedArea1</realm-name>
</login-config>
-->
<jsp-config>
<taglib>
<taglib-uri>/test-1.0</taglib-uri>
<taglib-location>test-1.0.tld</taglib-location>
</taglib>
</jsp-config>
<!-- session config -->
<session-config>
<session-timeout>-1</session-timeout>
</session-config>
<!-- ajaxanywhere setting -->
<!-- filter setting -->
<filter>
<description>支持,文件和路径。不支持 * 处理</description>
<filter-name>LoginFilter</filter-name>
<filter-class>filter.LoginFilter</filter-class>
<init-param>
<param-name>exclude</param-name>
<param-value>/servlet/Login;</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
<!-- servlet config -->
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/servlet/Login</url-pattern>
</servlet-mapping>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
分享到:
相关推荐
在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...
在这个“servlet过滤器做的简单登陆demo”中,我们将探讨如何利用过滤器实现一个基础的登录验证系统。这个例子非常适合初学者理解和实践过滤器的用法。 1. **Servlet Filter原理**: Servlet过滤器遵循`Filter`...
在本例中,要实现一个简单的登录验证过滤器,可以阻止未登录用户访问除了登录页面以外的其他后台管理页面。通过实现javax.servlet.Filter接口,我们创建了一个LoginFilter类。这个过滤器会在每个请求到达目标页面...
在这个场景下,我们讨论的是如何使用过滤器来实现用户登录验证的功能。下面将详细解释这一过程。 首先,我们需要了解过滤器的基本概念。在Java Web应用中,过滤器是实现了javax.servlet.Filter接口的类。它们通过在...
在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...
Servlet过滤器是基于Java的Servlet API实现的,主要通过实现`javax.servlet.Filter`接口来创建。`Filter`接口定义了三个核心方法:`doFilter()`, `init()`, 和 `destroy()`。`doFilter()`方法是过滤器的核心,每当有...
下面将详细解释`Filter`的工作原理以及如何运用它来实现登录验证。 ### Filter工作原理 `Filter`是Java Web应用程序中的一个接口,位于`javax.servlet`包下。它提供了一种机制,可以在HTTP请求被处理前和处理后...
Servlet是Java提供的一个用于扩展服务器功能的接口,而Filter则是一种动态web资源过滤机制,它允许我们在数据处理流程中进行预处理和后处理,比如登录验证、日志记录、GZIP压缩等。本篇文章将深入探讨如何使用Filter...
使用Java Servlet实现自动登录退出功能需要了解Java Servlet、自动登录退出功能、Cookie、Filter、UserDao、UserService、Servlet的生命周期、Filter的生命周期、HttpServletRequest和HttpServletResponse等概念。
在本实例中,我们将深入探讨Servlet过滤器(Filter)的使用和实现,以及它在实际应用中的重要性。 一、Servlet过滤器简介 Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤...
根据提供的文件信息,我们可以深入探讨Java Web开发中的登录过滤器(Login Filter)概念与实现细节。下面将详细解析登录过滤器的基本原理、实现步骤以及在实际项目中的应用场景。 ### Java Web开发中的过滤器概述 ...
在实际项目中,Filter的应用非常广泛,例如实现登录验证、字符集编码转换、GZIP压缩、安全控制等。通过理解和熟练使用Filter,开发者可以更好地控制和优化Web应用程序的行为。 由于提供的压缩包文件名为`webfilter`...
本示例讲解了如何使用JSP和Servlet来实现一个登录验证过滤器,确保只有已登录用户才能访问特定的受保护资源。 1. **创建项目结构** 首先,我们需要创建一个Dynamic Web Project,这是Java Web应用的基础。在这个...
而`过滤器(Filter)`是Servlet API的一部分,它提供了一种机制来拦截请求和响应,实现诸如登录验证、字符编码转换、性能监控等功能。在这个场景中,我们关注的是使用过滤器进行登录验证,以及如何利用`session`来...
1. **过滤器接口实现**:首先定义一个实现了`javax.servlet.Filter`接口的类`Filter`。 2. **初始化方法`init()`**:在过滤器创建时被调用,可以用来进行一些初始化操作。 3. **销毁方法`destroy()`**:在过滤器销毁...
而Filter(过滤器)是Servlet API的一部分,它提供了一种机制,可以在请求到达目标资源之前或之后对请求和响应进行拦截处理。Filter在处理Web请求时扮演着不可或缺的角色,比如日志记录、权限验证、内容压缩等。以下...
在某些场景下,我们可能需要对多个Servlet进行过滤,以实现统一的处理逻辑,如登录验证、权限控制等。"过滤多个Servlet"这个主题就涉及到如何在Web应用程序中设置过滤器(Filter)来拦截和处理多个目标Servlet的请求...
它可以用来实现诸如登录验证、编码转换、压缩、加解密等功能。过滤器可以通过web.xml文件或者注解的方式进行配置。 #### 三、注解配置过滤器的优点 - **简化配置**:使用注解配置过滤器可以避免在web.xml文件中...
以下是一个简单的登录验证过滤器示例: ```java public class LoginFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws...
本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下 1.新建一个Dynamic Web Project项目,里面新建1个filter文件、1个servlet文件和2个jsp文件,整体的框架如图所示: 2.LoginFilter.java里面...