引言:当你想入门java web后,一定会查阅到很多相关的名词:Servlet,HTML,Spring...等等之类的,但是对于他们之间的关系总是比较混乱的,这篇文章就是理清这些名词的关系。

什么是web应用?

web应用是一种可以通过Web访问的应用程序。在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序。

最简单的web应用什么样?

2个文件夹、1个xml文件就能成为一个web应用 第一个文件夹:应用名,如test 第二个文件夹:在test文件夹中创建名为WEB-INF的文件夹 XML文件:在WEB-INF文件夹下创建web.xml文件,文件内容只需<web-app></web-app>

Servlet规范

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。

狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

Servlet是J2EE 规范中的一种,主要是为java程序提供一个统一的web应用的规范,方便程序员统一的使用这种规范来编写程序,应用容器可以使用提供的规范来实现自己的特性。

因此,基本上所有的java web应用都是基于Servlet规范,哪些常用框架如Struts,Spring MVC只是对Servlet规范的封装而已。

web.xml

web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。由web容器(如Tomcat)读取加载。

web.xml配置详解

web.xml配置详解

web.xml加载过程:

  • 启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.先读取<context-param></context-param> 节点。

  • 紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.

  • 容器将<context-param></context-param>转化为键值对,并交给ServletContext.

  • 容器创建<listener></listener>中的类实例,即创建监听。在监听中会有contextInitialized(ServletContextEvent args) 的初始化方法,在这个方法中可以获得context-param 节点的参数:

    ServletContext = ServletContextEvent.getServletContext();
    context-param的值 = ServletContext.getInitParameter("context-param的键");
    复制代码

得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早.换句话说,这个时候,你对<context-param>中的键值做的操作,将在你的WEB项目完全启动之前被执行。举例.你可能想在项目启动之前就打开数据库.那么这里就可以在<context-param>中设置数据库的连接方式,在监听类中初始化数据库的连接.

web.xml节点加载顺序:

可以肯定的是,节点的加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。 加载顺序是:[context-param -> listener -> filter -> servlet] ,而同类型节点之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。

Servlet

这里的Servlet是指Java语言实现的一个接口,也就是Servlet规范的实现。

通过下面一个例子体会一下Servlet(实现接口的对象)的作用:

一个网络请求的过程

有这样一个场景:当用户向浏览器地址栏输入一个网址 1、 浏览器使用ip:port(端口号)连接服务器;
2、 浏览器将请求数据按照http协议打成一个数据包(请求数据包)发送给服务器, 请求数据包的内容包含了请求资源路径(如:/helloweb/sayHello?name=zs),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息;
3、 服务器(web容器,如Tomcat)创建两个对象:请求对象(Request)和响应对象(Response)服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便servlet读取请求数据(因为servlet不用解析请求数据包,如果要解析,需要理解http协议)。请求对象是HttpServletRequest接口的一个实现。响应对象是HttpServletResponse接口的一个实现,响应对象由于存放servlet处理的结果;
4、 依据请求资源路径找到相应的servlet配置,通过反射创建servlet实例。然后调用其service()方法;在调用service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参数进行传递。在servlet内部,可以通过request获得请求数据,或者通过response设置响应数据,在这里完成你所需要的操作并放回结果;
5、服务器从response中获取数据,按照http协议打成一个数据包(响应数据包)。发送 给浏览器; 6、浏览器会解析响应数据包,取出相应的数据,生成相应的界面。

filter

也即Servlet过滤器,它具有客户端(浏览器)请求的功能,Servlet过滤器可以改变请求中的内容来满足实际开发中的需求。

它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。例如实现URL级别的权限控制、过滤敏感词汇、压缩响应信息等一些高级功能。

著名框架Struts就是基于filter实现的。

listener

监听器的作用是监听Web容器的有效事件,他是由容器管理的,可以监听Application、Session、Request对象,当这些对象发生变化就会调用对应的监听方法。

Struts2

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Spring

Spring 框架的核心特性可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

Spring MVC

Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合的一部分,它享有 Spring IoC容器紧密结合Spring松耦合等特点,因此它有Spring的所有优点。


Servlet是一个java web应用的核心,而我们访问网页看到的界面可不是完全由java代码生成的,这个页面是由HTML+CSS构成,但这只能是静态页面,动态的页面由JavaScript,JSP等技术提供支持。

HTML

超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页的标准标记语言。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。

简单点说就是页面的结构是怎样的,这里显示一张图片,那边是一个按钮。

CSS

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

其实也就是控件的样式了,比如按钮是什么颜色,什么大小之类的。

JavaScript

JavaScript(也可以简写为js)一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能,可以把静态页面转变成支持用户交互并响应应用实践的动态页面。经常应用JavaScript进行数据验证、控制浏览器以及生成时钟、日历和时间戳文档等。

js主管动作,减轻后台的操作,可以很简单的就实现对输入的数据的验证。比如说注册的时候,用js中的ajax到后台实时验证本用户名是否已经被注册,验证码是否正确或者用来实现异步更新,为用户带来更好的体验。用jquery来验证密码的合法性,输入密码与确认密码是否一样,从而反馈到html页面上,可以通过操控css或者html页面内容来确认输入内容是否有错。但是ajax和jquery都是js的一个库。

JSP

SUN首先发展出Servlet,其功能比较强劲,体系设计也很先进,只是,它输出HTML语句还是采用了老的CGI方式,是一句一句输出,所以,编写和修改HTML非常不方便,并且不能把网站的逻辑和页面的输出分开。为了解决Java Servlet的这种缺点, 推出了类似于ASP的镶嵌型的JSP,把JSP TAG镶嵌到HTML语句中,这样,就大大简化和方便了网页的设计和修改,这就是Java Server Pages—JSP。

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。

JSP文件会被编译器编译成Servlet的class类,所以我的理解是:为了方便编写页面设计的另一形式的java代码编写方式。


最后就是是数据相关的技术,在网站上注册的用户,肯定是记录下来的,不然下次就不能登录了,数据存储使用了数据库。java层要访问数据库就需要用到JDBC。

JDBC

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

MyBatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合。

java web入门——概念理解、名词解释相关推荐

  1. 区块链基本概念和名词解释

    区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 一切要从Web3说起 Web1时代特点 Web2 ...

  2. 计算机等级考试(三级网络)基本概念与名词解释

    计算机等级考试(三级网络)基本概念与名词解释 作者:yt125 发表时间: 2005/07/26 22:04 点击:1329次 发帖得万元!   活动官方论坛 修改  精华  删除  置顶  来源   ...

  3. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  4. 计算机网络解释概念,2017年计算机三级网络技术基本概念与名词解释:计算机网络的基本概念...

    计算机网络的基本概念 112. 计算机网络:计算机网络是利用通信设备和线路将分布在不同地点.功能独立的多个计算机互连起来,通过功能完善的网络软件,实现网络中资源共享和信息传递的系统.计算机网络由资源子 ...

  5. 计算机技术基础概念,2017年计算机三级网络技术基本概念与名词解释:计算机基础知识部分...

    计算机基础知识部分 1. 计算机系统发展历程:电子管计算机.晶体管计算机.集成电路计算机.大规模及超大规模集成电路计算机. 2. 电子计算机时代开始的标志:以美国1945年生产.1946年2月交付使用 ...

  6. Java web入门——Servlet

    Java web入门--Servlet Servlet基础 Servlet是运行在服务器上的java小程序,B/S架构的应用需要访问数据库.或一些逻辑处理,均由servlet进行处理,他用来扩充基于h ...

  7. java web入门经典 pdf_Java Web入门经典 (王国辉陈英) PDF

    资源名称:Java Web入门经典 (王国辉,陈英) PDF 第一篇 起步篇 第1章 开启jave web之门 2 第2章 不可不知的客户端应用技术 12 第3章 驾驭Java web开发环境 53 ...

  8. Java Web入门项目之“网络交友”的设计与实现

    前言:这个小项目是我刚学习JSP时,参考"JSP程序设计"这本书写的.这里之所以说参考这本书而不是照着这本书写,主要是因为我自己完成的时候删掉了不少繁琐的写法(比如:文件上传):同 ...

  9. Java Web入门之JSP的基本语法解析及实战(超详细 附源码)

    创作不易觉得有帮助请点赞关注收藏~~~ JSP页面是指扩展名为.JSP的文件  在一个JSP页面中 可以包括指令标识 HTML代码 JavaScript代码 嵌入的JAVA代码 注释和JSP动作标识等 ...

最新文章

  1. java拉姆达表达式事例,Java Lambda表达式详解和实例
  2. POJ 3620-Avoid The Lakes
  3. Express全系列教程之(五):Express的中间件
  4. 一文带你了解腾讯位置服务的开发与接入
  5. jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)
  6. 华为云企业级Redis评测第二期:大Key操作的影响
  7. [凯立德]2014秋季版C1204-C7K05-3321J0L(SP2)WinCE版
  8. 第三百九十一节,Django+Xadmin打造上线标准的在线教育平台—404,403,500页面配置...
  9. LaTex笔记二:visio画图并保存为eps格式
  10. Python常用模块12-python的xlsxwriter模块(操作excel)
  11. 数据科学-Matplotlib(直方条形和散点作业)
  12. 终极解决苹果开发者中心Edit Phone Number
  13. 解决ipad uiwebview显示网页超过屏幕宽度
  14. 人工智能,落地为王!深圳人工智能企业百强榜超七成为应用层
  15. 各类排序算法汇总及动画演示(C语言)
  16. 开机启动计算机时 屏幕无显示桌面,开机时电脑黑屏没有出现桌面怎么处理
  17. 美甲实体行业没有客户?想做线上引流?这些渠道千万别错过!
  18. 用Raphael在网页中画圆环进度条
  19. 极客时间——数据结构与算法(39) 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想
  20. 解析电子墨水屏技术(工作原理与LCD的区别)【转】

热门文章

  1. oracle 12c创建可插拔数据库(PDB)与用户详解
  2. node实战学习纪录
  3. CentOS6.8下使用yum安装mysql,并远程登陆mysql
  4. VC++编译zlib
  5. poj 3352 双连通分量
  6. Delphi 与 DirectX 之 DelphiX(12): TPictureCollectionItem.DrawAlpha
  7. 【转载】防范SQL注入式攻击
  8. 进入公司前与Boss的会谈话
  9. Python第四章-字典
  10. 【Java 虚拟机原理】栈帧 | 局部变量表 | 操作数栈 | 方法出口 | JVM 指令逐条解析