一、filter过滤器的作用

  • 如果想要获取中文字符,或者是显示提交的中文,就需要添加以下代码,来防止乱码的情况发生。
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
  • 如果只是设置一个页面的情况,上述方法是可以实现的。但是,要是很多个页面要显示中文的话,上述方法就过于繁琐。这种情况下要实现显示中文的功能,就要用到filter过滤器。这样就实现了,一处编码,到处执行的用途。

二、实现简单用户登录验证

  • (1)登录界面:login.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<form action="LoginServlet" method="post"> 用户名:<input type="text" name="username"/><br/>密码:<input type="password"  name="pwd"/><br/><input type="submit" value="提交"/></form><a href="result1.jsp">验证登录</a>
</body>
</html>
  • (2)servlet交互文件:LoginServlet.java
package com.filter.servlet;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;/*** Servlet implementation class LoginServlet*/
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public LoginServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("进入servlet......");String username = request.getParameter("username");String pwd = request.getParameter("pwd");//获取SessionHttpSession session = request.getSession();//验证用户名和密码是否有效//将用户名放入session    并且设置名称为uname(在过滤器中获取时,直接获取uname)session.setAttribute("uname",username);//设定session的有效期session.setMaxInactiveInterval(10);//将获取的用户名和密码打印在页面上response.getWriter().print("用户名:"+username);response.getWriter().print("<br/>");response.getWriter().print("密码:"+pwd);System.out.println("退出servlet......");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
  • (3)filter过滤器文件:LoginFilter.java
package com.filter.servlet;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.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;/*** Servlet Filter implementation class LoginFilter*/
//设置不被过滤的信息
@WebFilter(filterName="LoginFilter",urlPatterns = "/*",initParams = {@WebInitParam(name="noFilterUrl",value="login.jsp,LoginServlet")     })
public class LoginFilter implements Filter {//定义一个字符串数组private String[] noFilter;/*** Default constructor. */public LoginFilter() {// TODO Auto-generated constructor stub}/*** @see Filter#destroy()*/public void destroy() {// TODO Auto-generated method stub}/*** @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)*/public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stub// place your code hereHttpServletRequest req = (HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse) response;//获取用户的sessionHttpSession session = req.getSession();//session是用来保存服务端的用户信息String username =(String) session.getAttribute("uname");if(username != null) {chain.doFilter(request, response);}else {//用户没有登录String url = req.getRequestURI();//获取用户请求地址for(String temp : noFilter) {if(url.indexOf(temp)!= -1){chain.doFilter(request, response);return ;}}resp.sendRedirect("login.jsp");}}/*** @see Filter#init(FilterConfig)*/public void init(FilterConfig fConfig) throws ServletException {// TODO Auto-generated method stub//使用字符分割函数,对noFilter进行赋值noFilter = fConfig.getInitParameter("noFilterUrl").split(",");}}
  • (4)验证结果文件:result.jsp文件
<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>用户名:${uname}
</body>
</html>

使用filter过滤器实现简单用户登录验证(不用配置web.xml文件)相关推荐

  1. web.xml过滤html,Servlet过滤器两种配置方法(注解、配置web.xml文件)

    方法一(注解) /** * 使用注解标注过滤器 * @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器 * 属性filterName声明过滤器的名称,可选 * ...

  2. Springboot简单用户登录验证

    目录 初版(代码糅在一块) mvc三层架构 bean层 数据访问层(持久层dao),负责数据库中的信息操作管理 业务逻辑层service 表现层controller 初版(代码糅在一块) 结合了spr ...

  3. 过滤器实现单一用户登录

    单一系统的登录要保证同一时间内不允许pc,app,微信同时登录,在一个时间内只保留最后一次登录状态.这样的设计是我们容易忽略的.下面通过过滤器的方式进行实现: 首先在web.xml文件中添加: < ...

  4. Filter过滤器~~~编码过滤和登陆验证

    Filter过滤器··简介: Filter过滤器是一个小型的web组件(web三大组件之一), 可以动态地拦截url请求和响应, 以便查看.提取或操作包含在url请求和响应中的信息. Filter过滤 ...

  5. 使用SSH框架实现用户登录验证

    今天,写一个非常简单的通过struts+hibernate+spring的集成来实现用户登录验证的例子,让大家了解一下三者是如何是整合的. 我们可以通过myeclipse的向导,生成相应的环境搭建,如 ...

  6. php 语法验证_PHP用户登录验证模块

    这篇文章介绍的内容是关于PHP用户登录验证模块 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 实现用户登录 >>>1 创建登录表单 登录表单的HTML代码如下: U ...

  7. JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入)

    JAVASE基础模块三十四( 菜鸡版简单登录验证模块系统IO流文件写入) 开发流程:需求文档 接口文档 效果图 开发环境统一:JDK1.8 IDEA win10 GIT SSM SSH SpringB ...

  8. 基于 JSP + Servlet 的用户登录验证

    综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...

  9. jsp java 登陆_jsp+java servlet实现简单用户登录

    jsp+java servlet实现简单用户登录(使用数据库,包括注册页面) 功能介绍 本项目通过使用jsp和servlet实现简单的用户登录.主要逻辑为:如果用户不存在,则首先进行注册(注册信息同步 ...

最新文章

  1. C#枚举系统安装的所有打印机
  2. 添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加
  3. 2017计算机考研教材,【考研】2017计算机考研:四大科目参考书推荐
  4. 五分钟带你了解Django框架设计思想!
  5. 设计模式 -- (14)中介者模式
  6. pringMVC“Ambiguous mapping found. Cannot map 'XXXController' bean method”解决方法
  7. 002 模板实参推断、重载与模板
  8. python定义变量名的时候、需要注意问题_第39p,Python模块的名称空间问题,应该讲完了吧...
  9. 【LeetCode】Merge Two Sorted Lists(合并两个有序链表)
  10. linux怎么新建系统用户名,在 Linux 中不使用 useradd 命令如何创建用户账号
  11. Python入门--第三方模块的安装与使用,pip,import
  12. [收藏]Linux 常用命令
  13. dj打碟怎么学_学DJ打碟怎么提高学习进度
  14. 内联函数的常识性问题
  15. 信息收集知识及工具梳理
  16. 全球搜索引擎集合(主要有移动搜索APP的)
  17. 操作系统-io设备基本概念和分类
  18. 吴昊品工程级别软件项目 Round 1 —— 吴昊教你玩字幕
  19. MatLab 计算开根号
  20. 为什么三棱锥体积是三棱柱的三分之一?

热门文章

  1. 自媒体制作视频封面工具
  2. Ae 效果:CC Threshold RGB
  3. 联通、移动、电信分析
  4. Scrapy项目之自动爬取网页信息
  5. 某项目标书写作经历之一
  6. 写作技巧~100段作文排比句(21-40段),考试一定用得上,赶紧收藏!
  7. 数学建模学习笔记(三)熵权法Excel实现
  8. 百度地图爬取城市经纬度:KeyError: ‘result——‘对于百度地图API地理编码返回值result为空的问题
  9. How-to-formulate-lumped-mass-matrix-in FEM
  10. JSZip解压PDF文件并批量下载