摘要: 1、过滤器的基本概念和作用在网站的页面访问时,我们往往需要做一些控制,如普通用户无法访问VIP用户的页面。如果在每一个需要访问控制的文件中都加上判断代码,那么代码将会很冗余,一旦需要统一修改时也极其繁琐。过滤器就可以解决这样的问题,配置完成的过滤器,会强制让指定的页面在访问之前先从过滤器走一趟。2、过滤器相关的APIServlet API中,与过滤器有关的API共有三个接口,分别是:FilterF... 阅读全文
posted @ 2017-09-01 13:59 Dulk 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 1、事件1.1 事件的概念在Servlet中有一个概念叫做监听,顾名思义,就是监听某种事件是否发生。就如你是一家娱乐媒体公司的老板,你派出狗仔队去跟着某些明星,比如你想了解他们的绯闻,或者活动进展情况。这里的绯闻和活动进展情况,就是所谓的事件。在Web编程中,某些操作总会触发一种事件的发生,如启动或关闭容器、创建和销毁对话等。我们说过,Java是面向对象的语言,所以当发生了某种事件,容器将会创建对... 阅读全文
posted @ 2017-09-01 13:57 Dulk 阅读(429) 评论(0) 推荐(0) 编辑
摘要: 在HttpServletRequest、HttpSession、ServletContext中有三个相同的方法,都与属性有关:public Object getAttribute(String name);public void setAttribute(String name, Object o);public void removeAttribute(String name);对这三者而言,实... 阅读全文
posted @ 2017-09-01 13:56 Dulk 阅读(1686) 评论(0) 推荐(0) 编辑
摘要: 1、上下文的概念我们在说到Servlet的继承关系时,提到自定义Servlet实际上间接实现了Servlet和ServletConfig两个接口,其中ServletConfig接口中定义了一个方法叫getServletContext,用以获取Servlet运行的上下文环境对象。这里就要先说明一下,如何理解所谓的 “上下文”。每个Web项目,运行时部署在Web应用服务器(如Tomcat、Jetty、... 阅读全文
posted @ 2017-09-01 13:54 Dulk 阅读(3557) 评论(1) 推荐(4) 编辑
摘要: 1、为什么有Session和Cookie根据早期的HTTP协议,每次request-reponse时,都要重新建立TCP连接。TCP连接每次都重新建立,所以服务器无法知道上次请求和本次请求是否来自于同一个客户端。因此,HTTP通信是无状态的。服务器认为每次请求都是一个全新的请求,无论该请求是否来自同一地址。但是这也带来了问题,假如不使用Session或Cookie,那么就意味着假如你登录了某个购物... 阅读全文
posted @ 2017-09-01 13:52 Dulk 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 1、Session是什么除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态,即Session是服务器端使用的一种保存客户端状态的机制。Cookie在客户端,Session在服务器端。围绕以上的概念来说,其实Session还包含不同的语义:(1)Session会话我们通常都会把Session翻译成会话,因此我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Ses... 阅读全文
posted @ 2017-09-01 13:51 Dulk 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 1、Cookie是什么Cookie,中文名称为“小型文本文件”或“小甜饼”,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。很多网站在你浏览后,会在你电脑中留下小小的档案,也就是我们说的Cookie,以便你再次浏览时,网站会读取它上次给你留下的Cookie资料,如果有的话,就可以根据内容来判断使用者,送出特定的网页内容。因为HTTP协议是无状态的,即服务器不知道用户上一次做... 阅读全文
posted @ 2017-09-01 13:46 Dulk 阅读(1423) 评论(1) 推荐(1) 编辑
摘要: 1、Servlet的继承关系假如现有我们自定义的一个Servlet,继承HttpServlet,那么实际上它的继承链如下图: 可以看到,核心的部分在于:两个顶级接口ServletServletConfig接口的实现类GenericServlet基于HTTP协议的实现类HttpServlet我们剥离一下,把不需要看的去掉,再把方法显示一下,可清晰知道Servlet的整体继承关系如下: 其中重点摘录部... 阅读全文
posted @ 2017-09-01 13:44 Dulk 阅读(3772) 评论(5) 推荐(4) 编辑
摘要: 1、Tomcat和Servlet的关系之前提到过,Servlet是运行在Web容器里的,Tomcat作为容器的一种,在这里自然也要大概说说两者之间的大致关系。 首先,如上所述,Tomcat是Web应用服务器,是一个Servlet/JSP容器。它负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传回给客户。而Servlet是运行在支持Java语言的服务器上的组件。从HTTP协议中... 阅读全文
posted @ 2017-09-01 13:42 Dulk 阅读(1511) 评论(0) 推荐(0) 编辑
摘要: 1、Servlet是什么 Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。1.1 广义上来讲从本质上来讲,Servlet就是一个特殊的Java类,说它特殊是因为这个Java类必须直接或间接地实现Servlet接口(javax.servlet.Servlet),我们自定义的S... 阅读全文
posted @ 2017-09-01 13:41 Dulk 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 1、AnnotatedElement接口如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。Java用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。如在java.lang.reflect包中有一个... 阅读全文
posted @ 2017-09-01 11:54 Dulk 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 1、实现功能我们已经对注解有了基本的认识,知道了如何自定义注解,如何使用和最基本的处理注解。本篇主要介绍,如何使用运行时级别的注解,配合反射来自动生成建表的sql语句。如下例:我们有实体类Student,并添加相应的注解 @Table、@Column,最终可以获取到创建对应表的sql语句@Table(name = "t_student") public class Student { ... 阅读全文
posted @ 2017-09-01 11:54 Dulk 阅读(1543) 评论(0) 推荐(0) 编辑
摘要: 1、自定义注解的方式注解的定义和接口的创建比较相似,但注解需要以@开头,用@interface来声明一个注解,其中:每一个方法实际上是声明了一个配置参数方法的名称就是参数的名称,方法不带参数,可以省略public返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)可以通过default来声明参数的默认值定义注解的基本格式:public @interface 注解... 阅读全文
posted @ 2017-09-01 11:53 Dulk 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 1、什么是注解用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。@Override public String toString() { return "This is String Representation of current object."; } 4 1@Override 2public String toString() {3 ... 阅读全文
posted @ 2017-09-01 11:52 Dulk 阅读(962) 评论(0) 推荐(0) 编辑
摘要: 在Java中,有个java.util.regex包,这是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它主要有两个类:Pattern 一个正则表达式经编译后的表现模式,可以理解为某正则的对应类Matcher 匹配检查器,根据Pattern对象作为匹配模式对字符串进行匹配检查1、Pattern1.1 获取Pattern对象Pattern类用于创建一个正则表达式,或者说创建一个匹配... 阅读全文
posted @ 2017-09-01 11:50 Dulk 阅读(944) 评论(0) 推荐(1) 编辑
摘要: 1、什么是反射在了解反射之前,我们都是如何使用一个Java类的?已知一个类的类名,以及类中的方法、属性和构造方法等调用构造方法创建对象使用对象调用方法或者属性那么问题来了,如果我们只知道一个类的类名,能否动态得到类的信息,包括其方法和属性?通过反射所以反射的概念是:在运行状态中,对任意类都可知道其所有属性和方法,对任意对象都可调用其方法和属性。这种动态获取信息以及动态调用对象方法的功能,称之为Ja... 阅读全文
posted @ 2017-09-01 11:49 Dulk 阅读(1647) 评论(0) 推荐(0) 编辑
摘要: 因为代码经验和见识等原因,说实话现在对于异常的使用,我也算是理解甚少。为什么用?什么时候用?即便是在查阅了部分资料以后,也只能在这里提炼出部分自己能够理解的,以供参考和讨论。1、使用异常的好处1.1 隔离常规代码和错误处理代码实际上,我们希望程序不要出现问题,用户操作永远逻辑清晰而正确,一切都按照我们祈祷的那样运行,然而这是不可能的。必然会有错误必然会要我们去处理,但是错误的处理并不是我们代码的... 阅读全文
posted @ 2017-09-01 11:47 Dulk 阅读(1431) 评论(1) 推荐(1) 编辑
摘要: 1、异常链1.1 throw我们之前比喻过,说异常的抛出就像棒球中的投球,其中RuntimeException是发生意外后程序自行抛出的,假如我们想要自己抛出异常,就要使用 throw 关键字。显式地抛出异常通常写为:throw new xxxException(); 1 1throw new xxxException(); 异常抛出后,有两种处理方式:立即处理,使用 try catch ... 阅读全文
posted @ 2017-09-01 11:40 Dulk 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 1、异常和错误Java作为面向对象的语言,自然把系统发生的不正确的事件也封装成了Java对象。比如一个不存在的对象,我们却试图调用它的方法,自然是行不通的,这个不正确的事件,也就被封装成为了我们常见的NullPointerException对象。即是说,在Java程序的运行过程中,如果发生了意外事件(发生了错误或异常),则该意外会被封装成为一个对象,并把它提交给运行时的系统,寻求相应的代码来处理。... 阅读全文
posted @ 2017-09-01 11:33 Dulk 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 1、节点流和处理流的概念根据输入输出方式不同,我们划分了输入流和输出流;根据处理数据流的单位不同,我们划分了字节流和字符流;现在我们根据数据封装类型的不同划分节点流和处理流。节点流如果流封装的是某种特定的数据源,如文件、字符串、字符串数组等,则称为节点流处理流如果流封装的是其他的流对象,称之为处理流。处理流提供缓冲功能,提高读写效率2、节点流和处理流的常用类节点流中常用类:字节输入流 FileIn... 阅读全文
posted @ 2017-09-01 11:18 Dulk 阅读(895) 评论(0) 推荐(0) 编辑