登录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>
分享到:
相关推荐
servlet 过滤器做的简单登陆demo 初学者的简单例子。
本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下 1.新建一个Dynamic Web Project项目,里面新建1个filter文件、1个servlet文件和2个jsp文件,整体的框架如图所示: 2.LoginFilter.java里面...
Servlet过滤器,主要配置了中文乱码及未登陆验证过滤器。 代码简单明了,易学。 过滤器实现类 1、Filter接口:所有的Servlet过滤器类都必须实现javax.servlet.Filter接口 a、init(FilterConfig): 这是Servlet...
login登录界面,出现验证码,验证码是servlet后台生成的, 有一个验证码生成bean供大家使用。 filter过滤验证验证码是否正确
MVC:Model View Controller ...Servlet过滤器(filter):能够在一个Request到达servlet之前预处理request,也可以在离开servlet时处理response Servlet监听器:给web中的各种操作绑定事件,并对事件进行处理
Servlet + JSP + MySQL + JDBCTempleat + Duird + BeanUtils+ tomcat实现用户信息的增删改查操作,过滤器登录验证,敏感词汇和谐等功能,打造用户信息管理系统
很有用的几个过滤器编程的例子,验证非法文字、验证登录和统一编码
本篇文章是介绍javax.servlet包中Filter的几个功能,一是字符编码过滤,二是拦截指文件夹中的文件,实现登录验证
iBatis示例教程,使用Servlet过滤器实现用户登录验证
分析: 因为需要使用request方法中的getRequestURI()获取资源请求路径,Filter里的request是ServletRequest类型的而getRequsetURI()方法是...import javax.servlet.annotation.WebFilter; import javax
一、一般页面登录超时验证,可以用过滤器filter,如下: package com.lg.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet....
通过配置Servlet Filter激活SS中的过滤器链 实现Session一致性验证 实现免登陆验证(Remember-Me验证) 提供一系列标签库进行页面元素的安全控制 方法安全 通过AOP模式实现安全代理 Web安全与方法安全均可以使用...
Undertow-cors-filter 一个过滤器,用于在基于Underwow的服务器(Wildfly,JBOSS EAP)中正确处理CORS标头Java EE的过滤器处理似乎有所疏忽,因为当容器配置了容器管理的授权并且尚未(尚未)通过身份验证的用户尝试...
6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 ...
定义Servlet过滤器时,要实现位于javax.servlet包中的Filter接口。Filter接口定义了3个抽象方法:init()、doFilter()和destroy()。自己定义的Servlet过滤器必须具体化这3个抽象方法。 《Java-Web应用开发基础》教学...
6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 ...
6.1.2 servlet相关接口与实现类 197 6.2 几个实例 205 6.2.1 实例一:simplehello 205 6.2.2 实例二:welcomeyou 210 6.2.3 实例三:outputinfo 216 6.2.4 实例四:loginservlet 220 6.3 servlet异常 223 ...
考试系统 类 Bean类 ...AdminBean 管理员 ResultBean 结果 TestBean 试题 TestsBean 试卷 UserBean 用户 ...DataBean 数据库操作 ...Com.gton.servlet.admin.* ... StringFilter 字符编码过滤器 Com.gton.util.*
主要有快速绑定模型到数据库,快速验证,过滤器Filter等代码。 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心...
给使用某些没有filter框架java系统接入cas单点登录样例,导入工程到eclipse即可运行,查看main servlet 调用CasValidate类与cas服务器进行交互验证获取登录帐号