本学期的JavaWeb课程课时较多,分为理论课和实验课两部分,学习过程比较坎坷,主要原因是相关技术的原理晦涩难懂。在此之前,我对Web相关的技术也有一定的了解。我大一时开始学习Web开发技术,在大二下学期之前一直都在学习Web前端,在大二下学期开始学习Web后端技术,而JavaWeb是我学习后端开发的起点。因此,我学习JavaWeb尤为认真,从起初复习网页设计基础和java基础,到从零开始MySQL、JDBC、Servlet、JSP,再到MyBatis、Spring、SpringMVC,每一个技术点我都认真的学习了它的原理,花费了大量时间,可以说这学期我大部分课下时间都在学习web后端技术。根据我对自己的规划,我原本也是打算这学期开始学习web后端,恰巧学习在这学期开了JavaWeb这门课,二者的重合也让我学习web开发的过程容易许多。
本学期的理论知识我大多是通过参考资料书、配合课本以及线上教学视频来学习,在学习理论的同时我也做了大量的练习,以加深理解。本学期所有的实验我基本都是通过自己的理解和逻辑思路来完成,然后在配合教材加以优化。再次之前,我也想过我为什么要学习JavaWeb。在这学期我找出了答案。首先,肯定JavaWeb作为本学期课程是原因之一,但不是主要原因。在学习后端开发之前,我在网络上也看到了许多关于JavaWeb究竟是否值得学习的讨论,我以前也很纠结,因为有很多人说JavaWeb早已过时,不如学习新兴框架来得快,也有人说学习JavaWeb对后期开发有帮助。最终,我根据自己的情况,我选择学习JavaWeb,并且认认真真的学习,因为我认为我现在才大二,我需要的不是应付工作,而是去理解,理解这些技术的实现原理,理解项目的运行流程,并亲自实践。这学期在web开发方面获益良多,我JavaWeb相关的技术点的产生、原理、特点、优势以及应用做出了总结,大致分为以下几点:
HTML、CSS、JavaScript,主要用于构建Web项目的前台页面,也就是与用户进行交互的部分,负责获取用户的请求信息,展示服务器响应的数据。现如今有很多前端框架替代了以往的手写HTML、CSS,高度集成化的框架让前端开发效率大大提升,Bootstrap就是其中之一,它结合了HTML和CSS。在学习Bootstrap过程中让我印象最深刻的是它的“栅格系统”,它可能是我学习前端时,遇到的最惊艳CSS代码,作者对CSS的巧妙应用,我深感佩服!以下是对HTML、CSS、JavaScript和Bootstrap的功能介绍及主要作用。
HTML即“超文本标记语言”,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
CSS即层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。
JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。JavaScript的特点有:是一种解释性脚本语言(代码不进行预编译);主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为;可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离;跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等);JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架;JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字,而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
Bootstrap是基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得Web开发更加快捷。Bootstrap提供了优雅的HTML和CSS规范,它即是由动态CSS语言Less写成。
XML、Http、Tomcat是学习web应用开发前必备的基础知识,其中Tomcat用于构建运行后代服务器,Http用于规定客户端与服务器端的通信规则,XML大多用于数据传输和编写服务器的配置文件。它们的具体功能如下:
可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。
XML与HTML的主要区别有: ML是一种独立于软件和硬件的工具,用于传输和存储数据;它侧重于数据。HTML用于显示数据并关注数据的外观;XML提供了一个定义标记语言的框架,HTML 本身就是一种标记语言;XML 区分大小写。HTML 不区分大小写;XML既不是标签标记语言也不是编程语言。HTML是一种超文本标记语言;我们可以根据需要定义自己定义XML标签。HTML 有属于自己的预定义标签,不可以用户自己定义;XML 强制要求使用结束标记。在HTML中,没有必要使用结束标记;XML是动态的,因为它用于传输数据。HTML是静态的,因为它用于显示数据。XML 保留空格。HTML 不保留空格。
HTTP即“超文本传输协议”是一个简单的“请求—响应”协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
JavaWeb的核心组成包括:Servlet技术、会话技术、JSP技术、EL表达式、JSTL以及JavaBean。其中Servlet技术是重中之重,它是JavaWeb最核心的内容,也是其核心,是我本学期的重点学习对象。会话技术、JSP技术、EL表达式、JSTL、JavaBean都是依赖于Servlet的,Servlet也是其他后端框架(SSM、SpringBoot等)的基础。
Servlet是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
Servlet提供了两个用于保存会话数据的对象,分别是Cookie和Session。Cookie可以将会话过程中产生的数据保存到浏览器中,从而使浏览器保服务器可以更好地进行交互。在Web应用中,Cookie的功能类似于会员卡,当用户通过浏览器访问Web服务器时,服务器会给客户端发送一些信息,例如用户信息和商品信息,这些信息都保存在Cookie中。这样,当该浏览器再次访问服务器时,会在请求头中将Cookie '发送给服务器,以便服务器对浏览器做出正确的响应。
Session可以将会话数据保存到服务器。当浏览器访问Web服务器时,Servlet容器就会创建一个Session对象和ID属性,Session对象就相当于病历档案,ID就相当于就诊卡号。当客户端后续访问服务器时,只要将ID传递给服务器,服务器就能判断出该请求是哪个客户端发送的,从而选择与之对应的Session对象为其服务。
JSP是一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。在JSP中访问模型对象是通过EL表达式的语法来表达。所有EL表达式的格式都是以“${}”表示。例如,${ userinfo}代表获取变量userinfo的值。当EL表达式中的变量不给定范围时,则默认在page范围查找,然后依次在request、session、application范围查找。也可以用范围作为前缀表示属于哪个范围的变量,例如:${ pageScope. userinfo}表示访问page范围中的userinfo变量。
JSTL即JSP标准标签库是由JCP所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制(反射机制)发现和操作这些JavaBean的属性。
Servlet的高级特性主要是指Filter和Listener。Filter用于修改request、response对象;Listener用于监听context、session、request事件。网页的登录验证功能就是Filter和Listener的典型应用。
在Servlet 高级特性中,Filter被称为过滤器,它位于客户端和处理程序之间,能够对请求和响应进行检查和修改,通常将请求拦截后进行一些通用的操作,例如,过滤敏感词汇、统一字符编码和实施安全控制等。Filter好比现实中的污水净化设备,专门用于过滤污水杂质。
在Web程序开发中,经常需要对某些事件进行监听,以便及时做出处理,例如监听鼠标单击事件、监听键盘按下事件等。为此,Servlet 提供了监听器( Listener),专]用于监听Servlet事件。Listener 在监听过程中会涉及几个重要的组成部分:事件,用户的一个操作,例如单击一个按钮、调用一个方法、创建一个对象等;事件源,产生事件的对象;事件监听器:负责监听发生在事件源上的事件;事件处理器:监听器的成员方法,当事件发生的时候会触发对应的处理器(成员方法)。
经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。
M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
通过一学期的学习不难看出,web技术总是向着轻量化、可扩展化、具有良好的可维护性以及节省成本的方向发展。MVC设计模式最为一代典型,它的思想至今适用。现如今备受欢迎的Spring框架就是已成熟的开源框架之一,他的低成本、良好的扩展性、良好的可维护性是它受广大开发者及企业青睐的根本原因。