JavaWeb从0开始学(一)-----搭建第一个Web应用程序与JSP工作原理
以往学习的时候大多是看完书或者看完视频,动手实践一下就OK了。然而过了一段时间我发现东西都忘差不多了,需要复习才能重新掌握。现在开始学习JavaWeb了,我将在这里记录自己的学习的一点一滴,不仅便于自己以后回顾知识点,也希望能对JavaWeb初学者有所帮助。文章的大部内容是我对李刚老师的《轻量级JavaEE企业应用实战》一书的学习总结,并非个人原创。本系列文章为Java新手的学习总结,大神请自动路过。
JSP/Servlet是Java EE规范的两个基础成员,也是Java EE开发的基础知识,同时也是Java Web开发的重点知识。JSP与Servlet的本质相同,JSP最终必须编译成Servlet才能运行。JSP的特点就是在HTML代码中嵌入Java代码或者使用各种JSP标签,动态的提供页面内容。
(一)创建第一个Web应用
在开始学习之前首先需要搭建Tomcat服务器,关于服务器的搭建请自行百度。我选择的集成开发环境是Idea。下面我将手动建立一个Web应用:
- 在任一目录下新建名为myFirstWebApp的文件夹
- 在myFirstWebApp文件夹内新建一个名为WEB-INF的文件夹(注意区分大小写)
- 在WEB-INF文件夹下新建一个名为class和一个名为lib的文件夹
- 打开Tomcat的webapps文件夹,将任一示例的Web应用的WEB-INF下的web.xml文件复制到WEB-INF目录下
将该文件根元素
<web-app></web-app>
内的其他节点全部删除,修改后的XML文件如下所示:<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
在myFirstWebApp目录下新建一个index.jsp文件,注意是jsp格式,使用记事本打开该文件添加以下内容:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>我的第一个Web应用</title>
</head>
<body>
Hello,my first WebApp!
</body>
</html>
至此,我们就构建完成了一个基本的Web应用。myFirstWebApp是Web项目对应文件夹的名字。classes与lib文件夹的作用一致,都是用于保存Web应用所需要的Java类文件,其中classes文件夹用于保存单个的.calss文件,lib文件夹用于保存打包的JAR文件。web-xml文件被称为配置描述符,它的作用将在下面作详细介绍。index.jsp是Web项目在有多个JSP页面时首先访问的页面,它其实就是一个静态页面,我们可以通过浏览器访问它。
下面我们将在Tomcat服务器上部署这个这个应用:
- 将该Web应用复制到Tomcat的webapps路径下,这样Web应用就可以自动部署到Tomcat服务器中。
- 启动Tomcat,对于Windows平台,只需要双击Tomcat安装路径下bin目录中的startup.bat文件即可启动Tomcat。
- 使用浏览器访问http://localhost:8080/myFirstWebApp/index.jsp。
你会看到刚才那个HTML代码被浏览器渲染了
至此我们就成功把Web应用部署到Tomcat上了。
(二)配置描述符web.xml
web.xml文件对于整个项目十分重要。在servlet2.5之前,每个Java Web应用必须包含一个web.xml文件且必须是在WEB-INF目录下。但是从servlet3.0开始,此文件夹不再是必须的,但是为了同一性,通常我们还是保留这个文件。web.xml有很多配置管理作用,以后会逐步学到。
web.xml文件的根元素是<web-app.../>
,在Servlet3.0中新增了metadata-complete属性:该属性接受true和false两个值,为true时,该Web应用将不会加载注解配置的Web组件(Servlet、Filter、Listener)。
在web.xml文件中配置首页使用welcome-file-list
元素,该元素包含多个welcome-file
子元素,每个元素匹配一个首页。
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
依次匹配每个页面,不存在就使用下一个,以此类推。
其实每个Web容器都会提供一个系统的web.xml文件,用于描述所有Web应用共同的配置属性。在Tomcat中,web.xml文件放在了conf路径下。
(三)JSP的基本原理
JSP的本质就是Servlet。当用户向指定的Servlet发送请求时,Servlet利用输出流动态的生成HTML页面。其实,在每次的输出流中存在大量的静态文本,这些都极大的拖累了Servlet的开发效率。随着JSP的出现,JavaWeb的开发效率大大提高:JSP通过在HTML代码中嵌套java代码,从而使静态的部分不再需要Java程序控制,Java只控制那些需要从数据库读取或者需要动态生成的内容页面。
所以,一个JSP页面内容一般由静态和动态两个部分组成。静态的部分就是一般的HTML代码,动态的就是<% %>包裹的Java代码,看起来JSP页面与Java类没有任何关系,其实JSP的本质依然是Servlet(一个特殊的类)。JSP页面由系统编译成Servlet,由Servlet响应用户的请求。由此可见,每个JSP页面就是一个Servlet实例,是Servlet的简化,因为每个页面都会被Servlet容器生成对应的Servlet类。
JSP页面的基本工作原理如下:
首先由客户端发起请求,JSP服务器判断被请求的页面是否是第一次收到请求,如果是,则先编译JSP文件,生成对应的Servlet来响应请求,返回标准的HTML页面。如果不是,那么表示该JSP页面已有对应的Servlet,则会根据请求动态的生成HTML代码返回给客户端。
下面深入学习一下JSP的运行原理:
一个JSP运行体系至少包括Web服务器、JSP引擎和JVM三个部分,其运行过程如下图所示:
用户从客户端向Web服务器发送请求时,服务器端首先判断该请求是否包含JSP内容,如果只是请求HTML页面,则直接把结果返回给客户端,完成服务器端的响应工作。如果请求还包含JSP内容,那么先传递给JSP/Servlet引擎,该引擎解释请求页面中的JSP标记和脚本,把源代码转换为以".java"为后缀的Servlet代码,并且传送给JVM;JVM把这些Servlet代码编译成以".class"为后缀的可执行字节码文件,并且存放在服务器上,接着执行字节码,然后把结果传送给JSP引擎,JSP引擎再把结果传递给Web服务器,最后Web服务器把结果以HTML页面的形式传送给客户端,完成服务器端的响应工作。
当后继请求相同的JSP页面时,JSP容器加载之前生成的Servlet类,并且通知JVM去执行已经存在的字节码,从而省去了转换的过程,这也是第一次执行JSP页面时间较长的原因。在JSP执行期间,JSP容器会检查JSP文件,看是否有更新,如果有更新,JSP容器会再次编译JSP或Servlet。
现在我们学会了如何建立一个web项目和了解了JSP的基本工作原理,接下来我们将学习JSP的基本语法和编译指令。
JavaWeb从0开始学(一)-----搭建第一个Web应用程序与JSP工作原理的更多相关文章
- 使用Yii 1.1框架搭建第一个web应用程序
我已经安装好了WampServer,web项目根目录是 D:\wamp\www. 1.下载Yii 1.1的源码 yii-1.1.14.f0fee9.tar.gz: 2.解压源码包,放在web项目的根目 ...
- Spring Boot从入门到精通(一)搭建第一个Spring Boot程序
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过 ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- JavaWeb从0开始学(二)-----JSP基本语法与编译指令
在上一节中我们学习了如何搭建一个简单的Web应用,并且已经知晓了一个JSP页面主要由静态的HTML内容和动态的Java脚本共同组成.JSP的基本语法共有JSP注释.JSP声明.输出JSP表达式与JSP ...
- vue2.0+element+node+webpack搭建的一个简单的后台管理界面
闲聊: 今天是六一儿童节哟,小颖祝大家节日快乐哈哈哈.其实这个demo小颖断断续续做了将近两个礼拜了,心塞的,其实这个也没有多难,主要是小颖有点最近事情有点多,所以就把这个一直拖着,今天好不容易做好了 ...
- 建立一个node.js服务器(使用express搭建第一个Web环境)
一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...
- 使用express搭建第一个Web应用【Node.js初学】
来源:http://jingyan.baidu.com/article/bad08e1ee501e009c8512106.html express是一个开源的node.js项目框架,初学者使用expr ...
- Asp.Net Core 2.0 之旅---在Ubuntu上部署WEB应用程序
1.Ubuntu 上 安装NET Core 2.0 SDK 第一步的安装,微软大佬已经写的非常详细了=>直达链接,按照教程来即可. 2.将我们的WEB 发布到一个文件夹,将这个文件夹打包成 压缩 ...
- cocos2d-x v3.0的window平台搭建和编译成andriod程序
首先添加这个地址到系统环境变量,path 然后打开CMD,输入如下语句 现在就可以创建一个新项目了 这样一个空的cocos2d-x v3.0的项目就创建好了 接下来编译andriod程序 先在系统环境 ...
随机推荐
- Python3基础 filter()第一个参数为NONE时 结果只返回为True的对象
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Visual Studio Team Services 帐户管理操作
Visual Studio Team Services 网址: https://www.visualstudio.com/ 1.登陆 2.登陆后新建账户 3.删除团队项目 (1)点击自己的Visual ...
- 配置Log4J(转载)
Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...
- Repeated Substring Pattern Leetcode
Given a non-empty string check if it can be constructed by taking a substring of it and appending mu ...
- Windows与Linux文件系统互访的几种方法
首先,我们知道基于文件的几种服务:ftp,sftp,这两种服务都是文件传输服务,偏重于网络传输,并不是实时互访.通常,我们需要在远程和本地 同时操作同一个目录,如:在Windows下使用各种强大的ID ...
- Oracle 去掉重复字符串
create or replace function remove_same_string(oldStr varchar2, sign varchar2) return varchar2 is /** ...
- HTTP协议系列(3)---包括WebSocket简单介绍
一.HTTPS HTTP是超文本传输协议,那HTTPS是什么尼?要明白HTTPS是什么先要明白HTTP的缺点,想一下我们在使用HTTP的时候会有那些缺点尼? 1.通信使用的明文(不加密),内容 ...
- eclipse自定义new建
Window->Perspective->Customize Perspective->Shortcuts 找到适合的选中然后OK即可
- 001.MVC基本概述
MVC的基本概念 一.NET平台下开发web应用程序的方案(方法) 方案A:ASP.NET webForm1.web窗体:臃肿(胖)性能低 优点:有很多的web控件可以使用,能够方便的和服务端交互(数 ...
- Yii框架上传后展示图片
在视图层index.php展示代码中加入[ 'attribute' => 'file', 'format' => 'raw', 'value' => function($model) ...