系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
代码如下(示例):
一、Http
1.网络协议包
传递都是以二进制存在的
浏览器/服务器接收到信息 就是解析二进制
数据量大 接收方很难收到一组连续的二进制得到对应的数据
网络协议包是一组有规律的二进制数据 固定的空间存放 特定的信息
2.常见的网络协议
-
FTP网络协议包
-
HTTP网络协议包
B/S通信模型都是保存在HTTP网络协议包中
HTTP请求协议包
浏览器发送请求 创建协议包 请求信息以二进制保存在协议包中各个空间 浏览器推送协议包给服务器
HTTP响应协议包
HTTP服务器定位到资源文件后 创建协议包 文件内容以二进制形式写入协议包各个空间 服务器推送协议包给浏览器
3.HTTP请求协议包空间
自上而下划分 4个空间
空间划分:
请求行:
url:请求地址
method:请求方式
请求头:
请求参数【GET】
空白行:
没有内容 隔离作用
请求体:
请求参数【POST】
4.HTTP响应协议包空间
自上而下划分 4个空间
空间划分:
状态码:
HTTP状态码
响应头:
Content-Type:采用对应的编译器对响应体二进制进行解析
空白行:
没有内容 隔离作用
响应体:
静态文件内容/命令
动态文件运行结果
5.HTTP服务器
HTTP服务器是服务器的一种 与HTTP协议相关
可以接收浏览器发送的请求协议包 并自动解析
解析后 定位文件 写入响应包
再将响应包推送给浏览器
二、Servlet
1.Servlet简介
> Server + let
> 意为:运行在服务器端的小程序。
> Servlet实际上就是一个接口。
- 狭义上的Servlet,指的就是Servlet接口
- 广义上的我们认为凡是实现Servlet接口的类,我们都称他是一个Servlet *****
> Servlet的作用:
1.接收用户发送的请求
2.调用其他的java程序来处理请求
3.根据处理结果,返回给用户一个页面
> Servlet的HelloWorld
1.创建一个类并实现Servlet接口
2.在web.xml文件中对Servlet进行配置
<servlet>
<servlet-name>别名</servlet-name>
<servlet-class>全类名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>别名</servlet-name>
<url-pattern>需要servlet处理的请求地址</url-pattern>
</servlet-mapping>
> Servlet的三个名字:
<servlet-name>
- Servlet的别名,程序员通过别名对Servlet进行配置
<servlet-class>
- Servlet的全类名,服务器通过全类名来创建Servlet的实例
<url-pattern>
- Servlet映射的请求地址,用户通过该地址访问Servlet
2.Servlet的生命周期
> Servlet的生命周期,指Servlet的对象从被创建到被销毁的过程。
> Servlet的生命周期方法:
1.构造器:
- Servlet第一次处理请求时,会调用构造器,来创建Servlet实例。
- 只会调用一次,Servlet是单例模式,他是以多线程的方式调用service()方法.
- Servlet不是线程安全,所以尽量不要再service()方法中操作全局变量。
2.init()方法:
- 构造器调用之后马上被调用,用来初始化Servlet,只会调用一次。
3.service()方法:
- Servlet每次处理请求时都会调用service()方法,用来处理请求,会调用多次。
4.destroy()方法:
- Servlet对象销毁前(WEB项目卸载时)调用,用来做一些收尾工作,释放资源。
3.相关接口
①ServletConfig
代表:当前Servlet的配置信息,每一个Servlet都有其唯一对应的ServletConfig。
<servlet>
<servlet-name>AServlet</servlet-name>
<servlet-class>com.atguigu.servlet.AServlet</servlet-class>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123123</param-value>
</init-param>
</servlet>
获取:由Tomcat服务器创建,最终作为参数传递到init()方法中,我们可以在init()方法直接使用。
当我们通过继承HttpServlet创建Servlet时,由于父类已经实现ServletConfig接口,
所以我们可以在Servlet中直接调用ServletConfig的方法。
功能:
【1】 获取Servlet的别名
【2】 获取当前Servlet的初始化参数。
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123123</param-value>
</init-param>
【3】 获取当前WEB应用的ServletContext对象。
②ServletContext
代表:当前的WEB应用,一个WEB应用对应一个唯一的ServletContext对象,
ServletContext对象在项目启动时创建,在项目卸载时销毁。
获取:通过ServletConfig的getServletContext()方法获取。
功能:
【1】 可以获取整个WEB应用的初始化参数
<context-param>
<param-name>phone</param-name>
<param-value>1388888888</param-value>
</context-param>
【2】 可以获取资源的真实路径(物理路径),主要在文件的上传和下载时使用。
【3】 可以作为一个域对象在不同的web资源之间共享数据。(下回分解)
4.GenericServlet
- 通用Servlet的父类
- 相比Servlet接口GenericServlet更加简单一些,但是我们最终实际上使用的HttpServlet
5. HttpServlet
- HttpServlet继承了GenericServlet,而GenericServlet实现Servlet接口
- 所以我们可以同构继承HttpServlet来创建一个Servlet。
- HttpServlet重写service()方法:
1.在该方法中先将ServletRequest和ServletResponse
强转为了HttpServletRequest和HttpServletResponse。
2.然调用重载的service()方法,并将刚刚强转得到对象传递到重载的方法中。
- 重载service(HttpServletRequest request , HttpServletResponse response)
1.在方法中获取请求的方式(get或post)
2.在根据不同的请求方式去调用不同的方法:
如果是GET请求,则调用doGet(HttpServletRequest request , HttpServletResponse response)
如果是post请求,则调用doPost(HttpServletRequest request , HttpServletResponse response)
- 结论:
当通过继承HttpServlet来创建一个Servlet时,我们只需要根据要处理的请求的类型,来重写不同的方法。
处理get请求,则重写doGet()
处理post请求,则重写doPost()
6. HttpServletRequest
代表:浏览器发送给服务器的请求报文。
获取:该对象由Tomcat服务器创建,最终作为参数传递到doGet或doPost方法中,我们可以在这两个方法中直接使用。
功能:
【1】获取用户发送的请求参数
request.getParameter("username");
【2】获取项目的名字(用来设置绝对路径)
request.getContextPath();
【3】作为一个域对象,在不同的WEB资源之间共享数据。
【4】请求的转发
request.getRequestDispatcher("target.html").forward(request, response);
7. HttpServletResponse
代表:服务器发送给浏览器的响应报文。
获取:该对象由Tomcat服务器创建,最终作为参数传递到doGet或doPost方法中,我们可以在这两个方法中直接使用。
功能:
【1】响应给浏览器一个网页或者是网页片段(设置的是响应报文的响应体)
response.getWriter("");
【2】请求的重定向
response.sendRedirect("target.html");
转发和重定向:(掌握)
转发 重定向
请求的次数: 1 2
发生的位置 服务器内部 浏览器
浏览器地址栏 不改变 改变
浏览器的感知 不知道 知道
[8] 字符编码
> 当用户通过表单向Servlet发送中文请求参数时,Servlet获取到内容会产生乱码,
当Servlet向浏览器响应中文内容时,也会产生乱码。
> 浏览器和服务器之间通信时,中文内容时不能直接发送的,需要对中文进行编码。
> 编码:
- 将字符转换为二进制码的过程叫编码。
> 解码:
- 将二进制码转换为普通字符的过程叫解码。
> 编码和解码所采用的规则我们称为字符集。
> 产生乱码问题的根本原因:
编码和解码所采用的字符集不同。
> 解决方法:
统一编码和解码的字符集为UTF-8。
> 常见字符集:
1.ASCII
2.ISO8859-1
3.GBK
4.GB2312
5.UTF-8
> 请求编码
- 请求是浏览器发送给服务器的。
- 浏览器 --> 服务器
- 浏览器 编码
> 浏览器的会自动使用网页的字符集对参数进行编码
UTF-8的张三:%E5%BC%A0%E4%B8%89
GBK的张三:%D5%C5%C8%FD
> 所以我们只需要统一网页的字符集为UTF-8即可。
- 服务器 解码
post请求
> request解码时默认字符集时iso8859-1,但是iso压根就不支持中文
> post请求在servlet中解码,所以我们只需要指定request的字符集即可。
> 我们可以通过如下方法,来设置request的字符集:
request.setCharacterEncoding("utf-8");
> 注意:
该方法要在request.getParameter()第一次调用之前调用
get请求
> get请求是通过url地址传递请求参数,url中的请求参数将会被Tomcat服务器自动解码。
> Tomcat的默认编码是iso8859-1,但是iso压根就不支持中文,所以必然乱码。
> 只需要修改Tomcat的解码的默认字符集,修改配置文件server.xml
> 在server.xml的Connector标签中(改端口号的那个标签)添加如下属性:
URIEncoding="utf-8"
> 修改完配置文件以后,get请求的编码就不用再处理的,但是post请求还是老样子。
> 响应编码
- 响应是服务器发送给浏览器
- 服务器 --> 浏览器
- 服务器 编码
> 指定服务器的编码字符集为UTF-8。
> 指定response的字符集
response.setCharacterEncoding("utf-8");
> 虽然我们已经指定了response的字符集为utf-8,但是浏览器并不是用utf-8解码。
浏览器默认使用gb2312解码的,所以依然乱码,只不过没有那么乱。
- 浏览器 解码
> 浏览器的解码字符集可以通过浏览器来设置(不靠谱)
> 我们可以通过服务器来告诉浏览器,我们的内容的编码格式为utf-8
> 我们可以通过一个响应头来告诉浏览器,内容的编码格式:
Content-Type:text/html;charset=utf-8
> 通过response的方法,来设置响应头:
response.setHeader("Content-Type", "text/html;charset=utf-8");
解决方案:
1.设置响应头
response.setHeader("Content-Type", "text/html;charset=utf-8");
2.设置response的编码格式
response.setCharacterEncoding("utf-8");
> 当我们设置Content-Type这个响应头时,服务器会自动使用响应头中的字符集为内容编码。
> 最终方案:
response.setContentType("text/html;charset=utf-8");
总结:
post请求:
- 在request.getParameter()方法第一次调用之前,调用如下代码:
request.setCharacterEncoding("utf-8");
get请求:
- 修改server.xml配置文件
- <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
响应:
- 设置一个Content-Type响应头
response.setContentType("text/html;charset=utf-8");
三、Cookie
1.Cookie概述
Cookie是什么?
Cookie 是一小段文本信息,
伴随着用户请求和页面在 Web 服务器和浏览器之间传递。
Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
为什么需要Cookie?
因为HTTP协议是无状态的,对于一个浏览器发出的多次请求,
WEB服务器无法区分 是不是来源于同一个浏览器。所以,需要额外的数据用于维护会话。
Cookie 正是这样的一段随HTTP请求一起被传递的额外数据。
Cookie能做什么?
Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,
所以应该保证它不要太大。 Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以, 不适合保存重要的或者涉及隐私的内容
例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。
而Web应用程序是使用HTTP协议传输数据的。__HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。
即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,
基本上所有的网站都采用Cookie来跟踪会话。
Java中把Cookie封装成了javax.servlet.http.Cookie类。每个Cookie都是该Cookie类的对象。
服务器通过操作Cookie类对象对客户端Cookie进行操作。通过request.getCookie()获取客户端提交的
所有Cookie(以Cookie[]数组形式返回),通过response.addCookie(Cookiecookie)向客户端设置Cookie。
Cookie对象使用key-value属性对的形式保存用户状态,一个Cookie对象保存一个属性对,
一个request或者response同时使用多个Cookie。因为Cookie类位于包javax.servlet.http.*下面,
所以JSP中不需要import该类。
Session
1. Session机制
除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。
Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,
相应的也增加了服务器的存储压力。
1.2.1 什么是Session
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,
而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。
这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。
如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,
那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。
Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。
1.2.2 实现用户登录
Session对应的类为javax.servlet.http.HttpSession类。每个来访者对应一个Session对象,
所有该客户的状态信息都保存在这个Session对象里。Session对象是在客户端第一次请求服务器的时候创建的。
Session也是一种key-value的属性对,通过getAttribute(Stringkey)和setAttribute(String key,Objectvalue)方法读写客户状态信息。
Servlet里通过request.getSession()方法获取该客户的 Session,
request还可以使用getSession(boolean create)来获取Session。区别是如果该客户的Session不存在,
request.getSession()方法会返回null,而 getSession(true)会先创建Session再将Session返回。
Servlet中必须使用request来编程式获取HttpSession对象,而JSP中内置了Session隐藏 对象,
可以直接使用。如果使用声明了<%@page session="false" %>,则Session隐藏对象不可用。
登录界面验证用户登录信息,如果登录正确,就把用户信息以及登录时间保存进Session,
然后转到欢迎页面welcome.jsp。welcome.jsp中从Session中获取信息,并将用户资料显示出来。
注意程序中Session中直接保存了Person类对象与Date类对象,使用起来要比Cookie方便。
当多个客户端执行程序时,服务器会保存多个客户端的Session。
获取Session的时候也不需要声明获取谁的Session。Session机制决定了当前客户只会获取到自己的Session,
而不会获取到别人的Session。各客户的Session也彼此独立,互不可见。
提示:Session的使用比Cookie方便,但是过多的Session存储在服务器内存中,会对服务器造成压力。
1.2.3 Session的生命周期
Session保存在服务器端。为了获得更高的存取速度,服务器一般把Session放在内存里。
每个用户都会有一个独立的Session。如果Session内容过于复杂,
当大量客户访问服务器时可能会导致内存溢出。因此,Session里的信息应该尽量精简。
Session在用户第一次访问服务器的时候自动创建。需要注意只有访问JSP、Servlet等程序时才会创建Session,
只访问HTML、IMAGE等静态资源并不会创建Session。如果尚未生成Session,
也可以使用request.getSession(true)强制生成Session。
Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,
并维护该Session。用户每访问服务器一次,无论是否读写Session,
服务器都认为该用户的Session“活跃(active)”了一次。
1.2.4 Session的有效期
由于会有越来越多的用户访问服务器,因此Session也会越来越多。为防止内存溢出,
服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。
如果超过了超时时间没访问过服务器,Session就自动失效了。
Session的超时时间为maxInactiveInterval属性,可以通过对应的getMaxInactiveInterval()获取,
通过setMaxInactiveInterval(longinterval)修改。
Session的超时时间也可以在web.xml中修改。
另外,通过调用Session的invalidate()方法可以使Session失效。
注意:新开的浏览器窗口会生成新的Session,但子窗口除外。子窗口会共用父窗口的Session。例如,在链接上右击,在弹出的快捷菜单中选择“在新窗口中打开”时,子窗口便可以访问父窗口的Session。
如果客户端浏览器将Cookie功能禁用,或者不支持Cookie怎么办?例如,绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写。
1.2.8 Session中禁止使用Cookie
既然WAP上大部分的客户浏览器都不支持Cookie,索性禁止Session使用Cookie,
统一使用URL地址重写会更好一些。Java Web规范支持通过配置的方式禁用Cookie。
四、JSP
1.什么是JSP?
JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,
html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
2.Web服务器是如何调用并执行一个jsp页面的?
浏览器向服务器发请求,不管访问的是什么资源,其实都是在访问Servlet,
所以当访问一个jsp页面时,其实也是在访问一个Servlet,服务器在执行jsp的时候,
首先把jsp翻译成一个Servlet,所以我们访问jsp时,其实不是在访问jsp,而是在访问jsp翻译过后的那个Servlet
HttpJspBase类是继承HttpServlet的,所以HttpJspBase类是一个Servlet,
而index_jsp又是继承HttpJspBase类的,所以index_jsp类也是一个Servlet,
所以当浏览器访问服务器上的index.jsp页面时,其实就是在访问index_jsp这个Servlet,index_jsp这个Servlet使用_jspService这个方法处理请求。
在jsp中编写的java代码和html代码都会被翻译到_jspService方法中去,在jsp中编写的java代码会原封不动地翻译成java代码,如<%out.print("Hello Jsp");%>直接翻译成out.print("Hello Jsp");,而HTML代码则会翻译成使用out.write("<html标签>\r\n");的形式输出到浏览器。在jsp页面中编写的html排版标签都是以out.write("<html标签>\r\n");的形式输出到浏览器,浏览器拿到html代码后才能够解析执行html代码。
3.Jsp页面中的java代码服务器是如何执行的?
在jsp中编写的java代码会被翻译到_jspService方法中去,当执行_jspService方法处理请求时,
就会执行在jsp编写的java代码了,所以Jsp页面中的java代码服务器是通过调用_jspService方法处理请求时执行的
五、JSTL与EL
1.EL相关概念
JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式
EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,
甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。
2.EL基本格式
EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;
例如: ${loginInfoBean.suser}
此外,可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;
例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}
3.EL语法组成-标识符
EL表达式由标识符、存取器、文字和运算符组成。
标识符用来标识存储在作用域中的数据对象。EL 有 11 个保留标识符,对应于 11个EL隐式对象。
除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。
4.EL隐藏对象
pageContext PageContext 实例对应于当前页面的处理
pageScope 与页面作用域属性的名称和值相关联的Map类
requestScope 与请求作用域属性的名称和值相关联的Map类
sessionScope 与会话作用域属性的名称和值相关联的Map类
applicationScope 与应用程序作用域属性的名称和值相关联的Map类
param 按名称存储请求参数的主要值的 Map 类
paramValues 将请求参数的所有值作为 String 数组存储的 Map 类
Header 按名称存储请求头主要值的 Map 类
headerValues 将请求头的所有值作为 String 数组存储的 Map 类
cookie 按名称存储请求附带的 cookie 的 Map 类
initParam 按名称存储 Web 应用程序上下文初始化参数的Map类
5.EL存取器
存取器用来检索对象的特性或集合的元素。
存取器: 通过 “[]” 或 “.” 符号获取相关数据
6.JSTL是什么
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,
是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。
core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。
format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。
xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而 sql 库定义了用来查询关系数据库的操作。 [
两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。
如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。
7.为什么要用JSTL
JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:
jsp维护难度增加;
出错提示不明确,不容易调试;
分工不明确;(即jsp开发者是美工,也是程序员);
最终增加程序的开发成本;
解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使分工更明确。
<% if (session.getAttribute(“user”).equals(“member”)) { %>
Welcome, member!
<% } else { %>
Welcome, guest!
<% } %>
JSTL一般配合EL一起使用,因此先看看EL.
JSTL部署
在EE应用程序中部署JSTL有两种方式:
已存在的工程上部署
将jstl.jar和standard.jar两个包考到现有工程
WebRoot / WEB-INF / lib 目录下
将相关的 .tld文件考到现有工程 WebRoot / WEB-INF 目录下;
也可通过eclipse在已存在
工程上部署
新建工程的时候直接部署
在JSP使用JSTL-format标签库
format在jsp中的使用:
在 web.xml 中添加
http://java.sun.com/jstl/fmt
/WEB-INF/fmt.tld
在jsp文件中添加
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jstl/fmt” %>
使用
<fmt:formatDate value=“” pattern=“yyyy-MM-dd” />
JDBC
Fiter
1.what
filter过滤器的作用:拦截请求
2.why
网页上的某些操作或数据只有用户登录之后才能访问,用filter来过滤掉未登录的用户,只让已经登录的用户继续访问
3.for
利于数据的管理
4.多个filter链传递流程
1.再多个filter中,按照web.xml中filter的配置顺序执行filter类
5.生命周期
Filter 的生命周期包含几个方法
1) 构造器方法
2) init 初始化方法
第 1, 2 步, 在 web 工程启动的时候执行(Filter 已经创建)
3) doFilter 过滤方法
第 3 步, 每次拦截到请求, 就会执行
4) destroy 销毁
第 4 步, 停止 web 工程的时候, 就会执行(停止 web 工程, 也会销毁 Filter 过滤器)
多个链在同一线程中,都可获取request中的参数
6. Filter 的拦截路径
–精确匹配
/target.jsp
以上配置的路径, 表示请求地址必须为: http://ip:port/工程路径/target.jsp
–目录匹配
/admin/
以上配置的路径, 表示请求地址必须为: http://ip:port/工程路径/admin/
–后缀名匹配
.html
以上配置的路径, 表示请求地址必须以.html 结尾才会拦截到
.do
以上配置的路径, 表示请求地址必须以.do 结尾才会拦截到
*.action
以上配置的路径, 表示请求地址必须以.action 结尾才会拦截到
Filter 过滤器它只关心请求的地址是否匹配, 不关心请求的资源是否存在! ! !
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。