过滤器(filter)helloworld

Java Web程序设计课后习题答案 第九章 4.ServletFileUpload类的parseRequest()方法可以将HTML中每个表单提交的数据封装成一个FileItem对象,然后以List列表的形式返回。1.在 Filter配置信息中,不属于 dispatcherTypes元素的可选值是()。4.下面用于将请求消息实体中的文件封装成 FileItem 对象的是() C。3.下面选项中,能够返回Filter设置的所有初始化参数名称的方法是()D。5.下面用于获取文件上传字段中的文件名的方法是() A。 阅读详情
首先我们明确一点,我们只说最有用的基础部分,高级篇自己去找资料。所以,下面的内容会很简单。

HelloWorld
·学了Servlet了么?
·有时候我们想在到达Servlet之前预处理一些事情。最简单的例子就是,我们想判断访问者有没有资格看到他想看到的地址。
·那么怎么做到的呢?
先不讲概念,因为太抽象。
看个demo来了解下filter是个啥。。。

public class ViewFilter implements Filter {
    private static int count = 1;
    @Override
    public void destroy() {
        System.out.println("ViewFilter destroy");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain filterChain) throws IOException, ServletException {
        count++;
        if(count%2 == 0){
            filterChain.doFilter(request, response);
        }
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        System.out.println("ViewFilter init");
    }

}



web.xml
<filter>
    <filter-name>view_filter</filter-name>
    <filter-class>com.partner4java.web.filter.ViewFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>view_filter</filter-name>
    <url-pattern>/user/*</url-pattern>
</filter-mapping>



然后随便写个user目录下的界面访问,会发现一次显示一次不显示。

根据这个demo应该大体知道是做什么的了吧? 下面我们会围绕这个demo里面新出现的几个类进行介绍

什么是Filter?
Filter(过滤器)是Servlet规范2.3中新增的技术,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行相应处理的前后实现一些特殊的功能。

Filter的基本工作原理?
首先实现Filter接口
然后通个web.xml注册进servlet容器。(形成一道屏障)
拦截成功后,调用filterChain.doFilter(request, response)来放行,那么就可以通过你的需要来判断是否要执行这个方法。如果不想放行,你可以通过response.sendRedirect之类的方式跳转到请求的用户有权或者应该到的位置。
在一个Web应用程序中可以注册多个Filter。
如果多个Filter都对同一个Servlet请求进行拦截,会形成一个过滤器链。过滤器链会根绝web.xml里面的注册顺序挨个执行,只有当前的Filter执行了chain.doFilter(req, res),才会把请求传给下一个Filter。如果任意一个Filter没有执行chain.doFilter(req, res),请求就不能走到用户想访问的地址。

三个主要接口:
·Filter
想要成为Filter的象征,实现Filter。
·FilterChain
doFilter方法的提供者。用户定义一个代表Filter链的对象应该对外提供的方法。
·FilterConfig
用来获取ServletContext,以为在web.xml中为filter配置的初始化参数等

Filter接口:
一个Filter程序就是一个Java类,他必须实现javax.servlet.Filter接口,定义了三个方法:init(FilterConfig filterConfig)、doFilter(ServletRequest request, ServletResponse response,FilterChain chain)、destroy()
Init:和Servlet的机制基本一样。如果init方法抛出了ServletException异常,或者初始化时间超过了web容器规定的时间,将销毁本Filter对象。
doFilter:当Filter能够拦截的请求到达时,将走doFilter。
destroy:destory方法在web容器卸载filter之前执行。和init一样也是声明中只执行一次。(有人说这里可以放销毁资源的方法,本人不建议这么做,因为,我们有时是kill掉tomcat)

FilterChain接口:
用户定义一个代表Filter链的对象应该对外提供的方法。
doFilter方法用于通知Web容器把请求交给Filter链中的下一个Filter链或者Servlet。

FilterConfig接口:
用来获取ServletContext,以为在web.xml中为filter配置的初始化参数或友好名称
Web容器装载并创建一个Filter的实例对象后,接着调用该实例对象的init(FilterConfig arg0)方法,将FilterConfig对象传递给Filter对象。
FilterConfig接口定义的几个方法:
getFilterName:返回友好名称,也就是<filter-name>标签内的名称
getServletContext:返回FilterConfig对象中所包装的ServletContext对象的引用
getInitParameter:用于获取<init-param>中定义的指定名称的对应值,没有返回null
getInitParameterNames:返回上面参数的所有名称Enumeration集合对象

讲了一大堆“道理”之后,我们再详细的写个demo

Filter Demo:我们要在这个demo做的事情

示例1:各种使用
在init方法中,通过FilterConfig.getInitParameter获取指定参数的参数值
打印所有的请求头信息
在调用目标Servlet进行相应处理之前,先调用ServletRequest.getRemoteHost方法获取访问者IP,然后写入到ServletResponse中
在目标Servlet进行相应之后,获取ServletContext引用,调用getRealPath获取当前web应用程序的真实路径,然后将路径和前面的初始化参数值写入到ServletResponse中
实现步骤:
1、第一步写个类实现Filter
2、在FirstFilter中声明filterConfig、paramValue然后在init中获取赋值
3、打印我们所有的InitParameter、请求头信息
(注意,真是环境不要这么直接打印,因为Sys打印方式,可看源码)
4、在Servlet响应前后写入内容
package com.partner4java.web.filter;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import java.util.concurrent.TimeUnit;

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;

public class FirstFilter implements Filter {
    private FilterConfig filterConfig;
    String paramValue = null;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        paramValue = filterConfig.getInitParameter("encoding");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // -----------------------------------------------------
        System.out.println("being InitParameter....");
        Enumeration names = filterConfig.getInitParameterNames();
        while (names.hasMoreElements()) {
            String name = (String) names.nextElement();
            System.out.println("name:" + name + " value:"
                    + filterConfig.getInitParameter(name));
        }
        System.out.println("InitParameter end...");
        // -----------------------------------------------------

        System.out.println();

        // ===================================================
        System.out.println("begin headers...");
        Enumeration headerNames = ((HttpServletRequest) request)
                .getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String headerName = (String) headerNames.nextElement();
            System.out.println("name:" + headerName + " value:"
                    + ((HttpServletRequest) request).getHeader(headerName));
        }
        System.out.println("headers end...");
        // ===================================================

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        // 在调用目标Servlet前写入相应内容
        out.println("您的ip地址为:" + request.getRemoteHost() + "<br/>");// 注意,如果前段用了apache或者nginx进行跳转,这么是获得不到ip的

        chain.doFilter(request, response);

        // 在目标Servlet返回后写入响应内容
        out.println("<br/>名字为encoding的初始化参数为:" + paramValue);
        out.println("<br/>当前web程序的真实路径:"
                + filterConfig.getServletContext().getRealPath("/"));
    }

    @Override
    public void destroy() {
        filterConfig = null;
    }

}



5、在web.xml中注册filter
<filter>
    <filter-name>firstFiler</filter-name>
    <filter-class>com.partner4java.web.filter.FirstFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>


filter-name、filter-class是必要的;init-param是可选的;
init-param 包含param-name 、 param-value ,也就是值和名称,我们getInitParameter 用到和返回的数据。

6、映射filter
 filter-mapping用来指定我们前面的filter可以拦截到的资源:
 主要两个元素filter-name、 url-pattern用于指定对应filter标签定义的名称和拦截路径匹配;
 <servlet-name> 所拦截的servlet名称;
 还有一个高级元素dispatcher ,配置我们所拦截的请求方式
<filter-mapping>
    <filter-name>firstFiler</filter-name>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>*.jsp</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>


细说<dispatcher>:
<dispatcher>有四种选择:
1、通过正常的访问请求调用—REQUEST(默认值)
2、通过RequestDispatcher. include()方法调用--INCLUDE
3、通过RequestDispatcher. forward()方法调用--FORWARD
4、如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。—ERROR
Dispatcher可设置多个
注意:
1、<filter>和<filter-mapping>里的<filter-name>要一致
2、<servlet-name>元素是某个Servlet在web.xml文件中的注册名称,<url-pattern>元素中的访问路径的设置方式遵循Servlet的URL映射规范
3、<dispatcher>默认值REQUEST,本元素可以设置多个
4、在同一个web.xml文件中可以为同一个Filter设置多个映射,如果多个匹配拦截,doFilter就会被执行多次


来一个dispatcher为ERROR的例子:
可能这个比较难理解(下面理解有可能也是错的,只供参考)
我们的web.xml里面可以配置<error-page>标签,如:
<error-page>
    <error-code>404</error-code>
    <location>/NotFound</location>
</error-page>


这样,我们就会拦截404状态的请求,到/NotFound,我们就可以配置个ERROR级别的dispatcher:
<filter>
    <filter-name>errorFilter</filter-name>
    <filter-class>com.partner4java.web.filter.ErrorFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>errorFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>


如果你还有filter没有配置dispatcher为ERROR是不会拦截到<error-page>这个设置的。
(有时候你会莫名的感觉其他filter不是没有配置ERROR么,怎么也执行了,
有可能是你的这个ErrorFilter里加了类似代码((HttpServletResponse)response).sendRedirect("error.jsp");
就是说这个执行被其他filter拦截到了)
本demo具体代码:
package com.partner4java.web.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;

public class ErrorFilter implements Filter {
    FilterConfig filterConfig;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("oh,ye,抓到你了");
        ((HttpServletResponse)response).sendRedirect("error.jsp");
    }

    @Override
    public void destroy() {

    }

}

package com.partner4java.web.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 HelloFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        System.out.println("I'm hellofilter!");
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }

}


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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <display-name></display-name>

    <filter>
        <filter-name>helloFilter</filter-name>
        <filter-class>com.partner4java.web.filter.HelloFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>helloFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>helloFilter</filter-name>
        <url-pattern>/NotFound</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>errorFilter</filter-name>
        <filter-class>com.partner4java.web.filter.ErrorFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>errorFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

    <error-page>
        <error-code>404</error-code>
        <location>/NotFound</location>
    </error-page>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>


然后随便写个error.jsp界面
现在我们随便访问一个不存在的地址:
localhost/filter_demo4/adafsafdasdfasdfa.jsp

后台打印:
I'm hellofilter!
oh,ye,抓到你了
I'm hellofilter!

第一行“I'm hellofilter!”打印是因为访问了这个地址,
第二行“oh,ye,抓到你了”是因为配置了ERROR,
第三行是因为ErrorFilter做了个jsp跳转被HelloFilter拦截到了。

如果去掉errorfilter配置:
打印一行
I'm hellofilter!
然后前台啥也不显示


Java EE6的写法:(不需要再配置web.xml)
@WebFilter(
        dispatcherTypes = {
                DispatcherType.REQUEST,
                DispatcherType.FORWARD,
                DispatcherType.INCLUDE
        }
                    ,
        urlPatterns = { "/*" },
        initParams = {
                @WebInitParam(name = "encoding", value = "UTF-8"),
                @WebInitParam(name = "username", value = "hello_world")
        })
public class HelloFilter implements Filter {


看起来是不是很亲切?感觉似成相识?

Filter示例2:禁用缓存
在Filter里添加
要在request获取数据之前
response.setDateHeader("Expires",-1);
response.setHeader("Cache-Control","no-cache");?
response.setHeader("Pragma","no-cache");

Filter示例3:编码
就是两个form相互提交
首先filter设置编码
request.setCharacterEncoding(encoding);
当都是post方式提交的时候没问题。
当改为get的时候就乱码了,因为request.setCharacterEncoding(encoding);对get不起作用,需要如下方式获取
String username = request.getParameter("username");
out.println(new String(username.getBytes("iso-8859-1"),"UTF-8"));
具体代码:
package com.partner4java.web.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 EncodFilter implements Filter {
    private String encoding;
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        encoding = filterConfig.getInitParameter("encoding");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding(encoding);
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
        
    }

}


form1.jsp
<%=request.getParameter("username") %>
<br/>
<form action="form2.jsp" method="get">
    <input type="text" name="username"/>
    <input type="submit"/>
</form>


form2.jsp
<%
    String username = request.getParameter("username");
    out.println(new String(username.getBytes("iso-8859-1"),"UTF-8"));
%>
<br/>
<form action="form1.jsp" method="post">
    <input type="text" name="username"/>
    <input type="submit"/>
</form>



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">
    <display-name></display-name>

    <filter>
        <filter-name>encodFilter</filter-name>
        <filter-class>com.partner4java.web.filter.EncodFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodFilter</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>




2020-09-28 5、SpringCloud- Gateway 网关 1)简介 网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而 spring cloud gateway 作为 Spring Cloud 官方推出的第二代网关框架,取代了 Zuul 网关。 网关提供 API 全托管服务,丰富的 API 管理功能,辅助企业管理大规模的 API,以降低管理成本和安全风险,包括协议适配、协议转发、安全策略、防刷、流量、监控日志等功能。 Spring Cloud Gateway 旨在提供一种简单而有效的方式来 阅读详情

相关推荐

QGC 转发RTSP流 到RTMP服务器

需求: QGC安卓版在接收摄像机RTSP视频流的时候,需要将视频推送到指定的RTMP服务器。 分析: QGC在处理音视频的时候使用了GStreamer这套框架,本身这套框架是跨平台的,所以无需关系环境,只要想到相应位置,添加对应功能代码,然后配置好安卓端的依赖库即可。 添加位置: GstVideoReceiver.cpp -》start函数负责音视频的流的播放,只需在此处添加上封装好的推流函数即可。 同理在stop中添加停止推流功能。 方便起见,可在界面上配置rtmp的推流地.

qthello 2325

java日志框架总结(七、使用过滤器自动打印接口入参、出参)_java打印接口里所有的内容

学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的MyBtis知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的MyBtis知识脑图原件(包括上方的面试解析xmind文档)

pckzzy119的博客 1165

visual studio 2017编译Triangle库遇到的问题和解决办法

这段时间因为一个项目需要使用到Triangle这个三角剖分工具,需要在windows环境下进行对源码编译,中间踩了很多坑,特此记录下。 1、下载 下载链接是下边这个,需要翻墙 http://www.cs.cmu.edu/~quake/triangle.html 2、编译。。超。。。级。。。麻。。。烦。。。 在ubutu下安装一切顺利,完全没遇到什么麻烦,但是换到windows下就麻烦不断...

csubai07的博客 2440

黑马程序员JavaWeb高级开发技术第九章答案

本文是黑马程序员第九章答案

qq_68149578的博客 2262

从安装Eclipse 开始 开发第一个 CDS View

一篇超级简单快速的 创建CDS VIEW 入门步骤介绍文章。

IT小职员 4251

Android开发Intent详解

本文详解Android开发Intent。

qq_30725967的博客 2415

JavaWeb第十二章课后题 过滤器Filter详解

在DiskFileItemFactory类的方法中,用于设置临时文件的存放目录的是( )。9. 在Filter的配置信息中,不属于元素的可选值的是( )。2. 在FileItem接口的方法中,用于获取文件表单字段的文件名的是( )。10. 在Filter的配置信息中,用于映射将要拦截的URL的元素是( )。7. 下列接口中,用于调用过滤器链中下一个过滤器的是( )。12. 下列不属于Servlet过滤器的特点的是() [单选题] *

qq_64314976的博客 2008

RDkit入门

今天开始写RDkit的入门教程,每天学习和写一小点,相信一句话“不积跬步无以至千里,不积小流无以成江海”,所以就慢慢来,一点一滴积累叭,从最简单的开始喽希望自己每天都能保持写博客的好习惯,把自己的代码笔记就极在这里,RDkit一块啃了很久的骨头,今天终于要下定决心,好好总结一波了,希望保持这个更新的频率,每天都能有所学。............

博客而已 6685

JavaWeb『Filter过滤器』

Filter过滤器第一节 过滤器简介1、通过类比了解过滤器作用①坐地铁②登录检查2、过滤器的三要素①拦截②过滤③放行第二节 HelloWorld1、思路2、操作步骤①准备工作②创建Filter[1]创建Target01Filter类[2]配置Target01Filter类第三节 过滤器生命周期1、Filter生命周期第四节 过滤器匹配规则1、精确匹配2、模糊匹配①前杠后星②前星后缀[1]创建一组img标签[2]创建Filter③前杠后缀,星号在中间3、匹配Servlet名称第五节 过滤器链1、概念2、测试①

不会敲代码的z的博客 1135

Unity引擎开发:复杂动作系统_动作捕捉数据的应用与整合

通过以上步骤,我们可以在Unity中有效地应用和整合动作捕捉数据,以实现更加真实和流畅的动画效果。从导入文件格式的选择,到预处理和优化,再到实时应用和调试验证,每一步都至关重要。希望本文能帮助你在Unity项目中更好地利用动作捕捉数据,提升动画质量和性能。

chenlz2007的博客 959

【车载以太网】【AVB/TSN】IEEE802.1Qav队列及转发协议

目录 一、概述 二、优先级排队算法 三、基于信用的流量整形算法 一、概述 IEEE 802.1Qav 队列及转发协议(Qav)针对不同数据流选择不同的传输选择算法来保障对时间敏感的 AV 数据流的实时传输。为了避免传统的异步以太网数据流量与 AVB 流量之间对网络资源的竞争,AVB 交换机内使用优先级排队算法和基于信用的流量整形算法实现数据流的调度。 二、优先级排队算法 优先级排队算法主要用于传统以太网数据流(BE, Best Effort)的调度传输,BE 流通过基于优先级...

专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。 4688

【JavaWeb】8—过滤器

过滤器之所以能够对请求进行预处理,关键是对请求进行拦截,把请求拦截下来才能够做后续的操作。而且对于一个具体的过滤器,它必须明确它要拦截的请求,而不是所有请求都拦截。

一棵灬大树的博客 2048

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 830

SpringBoot---day01---整合Servlet和Filter

一:项目初步搭建 修改pom.xml 修改jdk的版本为1.7 二:编写一个controller的HelloWord 三:启动SpringBoot 此处一定要注意 启动类的包要包括controller的包,不然会报错,找不到页面,并且包也不能同级。如果将App.class发那个在controller包下也可以。 三:整合Servlet 1.通...

qq_40125268的博客 130

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Servlet基础

目录1、创建javaee项目2、HelloWorld3、tomcat乱码问题4、java配置实现映射5、Servlet生命周期init() 方法service() 方法destroy() 方法6、HttpServletResponsefilter过滤器 1、创建javaee项目 在idea中选择 File->Project->Maven 引入pom文件 <dependencies> <dependency> <group

liaoxianfu的博客 229

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot开发手册

SpringBoot 这篇文章,介绍了通过SpringBoot开发的具体流程,和SpringBoot中一些常见的知识点 1、第一个HelloWorld程序 SpringBoot项目创建 Spring官网创建 https://start.spring.io/ 不推荐 IDEA的Spring Initializr File->New->Project->Spring Initializr 中途可以选择需要的组件 SpringBoot目录介绍 初始化后项目的目录 一般情况下项目的目录结构 c

weixin_44062380的博客 1092

Servlet过滤器

Servlet过滤器过滤器是什么过滤器(Filter)是对(浏览器向jsp,servlet,html等这些web资源发出请求)和 (服务器回应给浏览器的内容),他可以进行过滤,对内容进行提取,或者进行修改。过滤器的作用 在HttpServletRequest到达Servlet 之前,拦截客户的HttpServletRequest。 根据需要检查HttpServletRequest ,也可以修改H

java成长指南 407

Apache Mod/Filter Development

catalog 0. 引言 1. windows下开发apache模块 2. mod进阶: 接收客户端数据的 echo 模块 3. mod进阶: 可配置的 echo 模块 4. mod进阶: 过滤器 0. 引言 Apache httpd 从 2.0 之后,已经不仅仅局限于一个 http 的服务器,更是一个完善而强大,灵活而健壮,且容易扩展的开发平台。开发人员通过定制 A...

weixin_30725315的博客 215

17、过滤器

过滤器: 过滤器 a) 基于概念 b) 写一个HelloWorld c) 总结Api及执行流程 过滤器案例 综合案例 1. 过滤器 基本概念 (3W1H: why, what, where,how) 为什么需用到过滤器? 项目开发中,经常会涉及到重复代码的实现! 注册 ----à ...

weixin_30872789的博客 65

javaweb基础

Javaweb 1.Servlet 1.1 servlet简介 servlet就是sun公司开发动态web的一门技术 sun在这些API中提供一个接口叫做:servlet,如果你想开发一个servlet程序,只需要完成两个步骤: 编写一个类,实现servlet接口 把开发好的Java类部署到web服务器中 把实现了servlet接口的Java程序叫做,servlet 1.2 helloservlet 1.构建一个普通的maven项目,删掉里面的src目录,在这个项目里面建立module;这个空的工

weixin_51134262的博客 173

Spring Boot 教程:Servlet 过滤器

【注】本文译自: https://www.tutorialspoint.com/spring_boot/spring_boot_servlet_filter.htm Spring Boot 入门(十四):Servlet 过滤器 过滤器是一种拦截应用中 HTTP 请求和响应的对象,使用过滤器,你可以执行以下两种情形下的两种操作: 在发送请求到到控制器之前 在发送响应到客户端之前 下面的示例代码是以 @Component 注解的类来实现 Servlet 过滤器: public class SimpleFilte

dancuowang的博客 292

JAVA_WEB 过滤器

目标:过滤器:1. 过滤器a) 基于概念b) 写一个HelloWorldc) 总结Api及执行流程2. 过滤器案例3. 综合案例  1. 过滤器基本概念(3W1H:  why, what, where,how) 为什么需用到过滤器?项目开发中,经常会涉及到重复代码的实现!注册 ----à Servlet 【1. 设置编码】 ----à  JSP修改 ----àServlet 【1. 设置编码】 -...

干饭银的足迹——博客 173
上一篇: java RMI helloworld
下一篇: Spring Security helloworld
partner4java
博客等级 码龄17年 481粉丝 183原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值