当请求来的时候,首先经过拦截器/过滤器,在经过一系列拦截器/拦截器处理后,再由再根据URL找到Servlet.执行servlet中的代码.

过滤器:按照过滤的对象类型的不同,可分为按资源名过滤和按请求的分类过滤.

按请求的分类过滤:

  <filter-mapping>
      <filter-name>CharFilter</filter-name>
      <url-pattern>/*</url-pattern>
      <dispatcher>ERROR</dispatcher>
      <dispatcher>ASYNC</dispatcher>
      <dispatcher>FORWARD</dispatcher>
      <dispatcher>INCLUDE</dispatcher>
      <dispatcher>REQUEST</dispatcher>
   </filter-mapping>

首先建一个dynamic web project

然后在WebContent或webroot文件夹下面的WEB-INF文件夹下面再建两个文件夹classes和lib.

classes文件夹用来存放加载的字节码文件,lib文件夹用于存放jar包

接下来在WEB-INF目录下新建一个web.xml文件,用于配置拦截器信息和servlet.

然后处理请求页面,可以建一个文件夹专门存放.jsp文件或者.html文件

下面看登录信息字符串解码的程序:

建一个Filter的类,该类实现了Filter接口:

 package test.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;
public class CharFilter implements Filter {
/**
* 加载配置的方法
*/
public void init(FilterConfig config) throws ServletException {
System.out.println("CharFilter.init()");
}
/**
* 执行拦截的方法
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 将请求到的数据转化为UTF-8 将服务器输入到jsp的汉字进行转码
response.setContentType("text/html; charset=utf-8");
// 将form表单中的内容提交给服务器时进行解码
request.setCharacterEncoding("utf-8");
// 将拦截后处理过的内容转发给下一个filter
chain.doFilter(request, response);
}
/**
* 销毁拦截器
*/
public void destroy() {
}
}

下来在进行servlet中处理业务逻辑:

代码如下:

package test.servlet;

import java.io.IOException;
import java.io.PrintWriter; 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;
@WebServlet("/hello")
public class CharServlet extends HttpServlet{ private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String parameter = request.getParameter("username");//获取name参数
String pas = request.getParameter("pas");//获取password参数 System.out.println(parameter+"密码:"+pas);
if("huike".equals(parameter)&&"111".equals(pas)){
request.getRequestDispatcher("/JSP/login.jsp").forward(request, response);
}else{
PrintWriter writer = response.getWriter();
writer.write("账户或密码错误");
writer.close();
} }
}

登录界面的.jsp文件

<%@ page import="java.util.UUID" %>  <!-- 导入UUID的jar包 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>hello world!!你好</h1>
<form action="/Charset/hello" method="POST">
账户:<input type="text" name = "username" placeholder ="hello world" required/><br/><br/>
密码:<input type="password" name = "pas" /><br/><br/>
<input type="submit" />
</form>
</body>
</html>

跳转页面的.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>login</title>
</head>
<body>
<h1>login</h1>
${name} <!-- 通过servlet中设置的键获取name的值 ,进行参数传递-->
<a>你好</a>
</body>
</html>

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Charset</display-name>
<filter>
<filter-name>CharFilter</filter-name>
<filter-class>test.filter.CharFilter</filter-class> //filter类的权限定名称
</filter>
<filter-mapping>
<filter-name>CharFilter</filter-name>
<url-pattern>/*</url-pattern> </filter-mapping>
</web-app>

访问URL:http://localhost:8080/工程名/放.jsp文件的文件夹名/XX.jsp,另:在WEB-INF下面的jsp文件不能直接访问到

过滤器 拦截器 登录login实例的更多相关文章

  1. JavaWeb中监听器+过滤器+拦截器区别、配置和实际应用

    JavaWeb中监听器+过滤器+拦截器区别.配置和实际应用 1.前沿上一篇文章提到在web.xml中各个元素的执行顺序是这样的,context-param-->listener-->fil ...

  2. MVC中的过滤器/拦截器怎么写

    创建一个AuthenticateFilterAttribute(即过滤器/拦截器) 引用System.Web.Mvc; public class AuthenticateFilterAttribute ...

  3. Struts2自定义拦截器Interceptor以及拦截器登录实例

    1.在Struts2自定义拦截器有三种方式: -->实现Interceptor接口 public class QLInterceptorAction implements Interceptor ...

  4. struts2对拦截器使用带实例

    拦截器是struts2的核心.拦截器可以拦截请求,控制视图的走向.那么怎么来实现自定义的拦截器呢? 这里我们做一个例子. 首先假现在做了两个jsp页面一个是登陆的信息的(用session来模拟),一个 ...

  5. struts2学习(6)自定义拦截器-登录验证拦截器

    需求:对登录进行验证,用户名cy 密码123456才能登录进去:  登录进去后,将用户存在session中: 其他链接要来访问(除了登录链接),首先验证是否登录,对这个进行拦截: com.cy.mod ...

  6. struts自己定义拦截器--登录权限控制

    说明:该自己定义的拦截器实现用户登录的权限控制. login.jsp--->LoginAction--重定向-->MainAction--->main.jsp 一.1.整体的步骤: ...

  7. Struts2拦截器原理以及实例

    一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...

  8. Struts2拦截器登录验证

    Struts2拦截器 Struts2拦截器的概念和Spring Mvc拦截器一样. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截 ...

  9. springboot jsp,过滤器,拦截器

    springboot使用jsp,过滤器,拦截器(拦截器与过滤器区别重点) jsp使用配置 一 创建springboot项目在maven中暂时只添加两个Dependencies :devtools(热部 ...

随机推荐

  1. 学习笔记42—Win7下安装Linux双系统

    1.下载Linux镜像:http://mirrors.163.com/ubuntu-releases/18.04.1/ 方法一: 1.用软通牒软件将Linux的镜像写入空的优盘中, 具体如下: 1) ...

  2. Navicat for MySQL 查看BLOB字段内容

    转载地址:https://blog.csdn.net/lwei_998/article/details/41871329

  3. [Spring] Aspect Oriented Programming with Spring | AOP | 切面 | 切点

    使用Spring面向切面编程 1.介绍 AOP是OOP的补充,提供了另一种关于程序结构的思路. OOP的模块化的关键单位是 类 . AOP的则是aspect切面. AOP 将程序的逻辑分成独立的块(叫 ...

  4. C语言转义字符基础总结

    C语言转义字符总结 C语言中的转义字符,是字符常量中很特别的一类.初学者容易在这方面犯错误,比如说我. 错题1 答案:C解析:每一个转义字符具有一个长度,这个字符串中:\t, \x43, \', \ ...

  5. 雷林鹏分享:C# 基本语法

    C# 基本语法 C# 是一种面向对象的编程语言.在面向对象的程序设计方法中,程序由各种相互交互的对象组成.相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中. 例如,以 Rectan ...

  6. 2017-2018-2 20165327 实验三《敏捷开发与XP实践》实验报告

    2017-2018-2 20165327 实验三<敏捷开发与XP实践>实验报告 实验三 <敏捷开发与XP实践> 一.实验报告封面 课程:Java程序设计 班级:1653 姓名: ...

  7. Linux中符号总结

    常用符号~   登陆用户当前的家目录 .   当前目录..   当前目录的上一级目录cd -   返回上一次的目录;   命令分隔符#   表示注释 ?   通配符中表示任意一个字符*   通配符中表 ...

  8. 深刻理解Web标准,对可用性、可访问性、可维护性等相关知识有实际的了解和实践经验

    WEB标准不是某一个标准,而是一系列标准的集合.网页主要由三部分组成:结构(Structure).表现(Presentation)和行为(Behavior).对应的标准也分三方面:结构化标准语言主要包 ...

  9. vue核心之虚拟DOM

    一.前言 虚拟DOM概念随着react的诞生而诞生,由facebook提出,其卓越的性能很快得到广大开发者的认可:继react之后vue2.0也在其核心引入了虚拟DOM的概念,本文将以vue2.0使用 ...

  10. poj2891 扩展中国剩余定理

    求a1x1+r1=y...anxn+rn=y,crt合并 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optim ...