1. 背景
首先,说明一下,这是一篇关于 Java Web 基础入门的文章,上学期开始学习 Java Web ,看了不少有关 「XXX从入门到精通」的书籍,近期,要帮着导师带几名本科生,所以决定总结一下以前学的 Java Web 的基础知识,毕竟不能在本科生面前丢面子嘛。
2.Web开发相关知识
2.1 静态/动态 Web 资源
Web 即表示网页的意思,他用于表示Internet主机上供外界访问的资源,该资源可以被分为两类:
1.静态Web资源:是指是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来,供人们浏览的数据始终不变。例如, *.html页面。
执行流程:
- 浏览器中输入所要请求的资源的 URL ,发送 HTTP 请求包,经过 DNS 域名解析返回IP地址,然后进过层层 Router 等网络设备的转发,到达服务器,服务对 HTTP 包头进行解析,例如,发现 * .html 的静态文件的请求,然后读取服务器相关目录下的资源文件,返回 HTTP 响应包,浏览器接受到 * .html 文件并解析,生成 Web 视图。
特点:
- Web 页面中的内容是不能动态更新的,所有用户任何时刻看到的页面内容都是一致的。
- 静态 Web 页面无法连接数据库,无法和用户实现实时交互。
- 静态 Web 页面也可以通过添加 JavaScript 实现一些动态的视觉效果,这些都是在客户端实现的,在服务器端并不发生改变。
2.动态Web资源:与静态页面不同的是,其显示的内容是在访问该页面的时候动态生成的【改变的内容主要来自于数据库中数据的改变】,并不是指页面会动。
目前,比较流行的动态网页制作技术有:ASP、PHP、JSP
执行流程:
- 动态WEB中,程序依然使用客户端和服务端,客户端依然使用浏览器(IE、FireFox等),通过网络(Network)连接到服务器上,使用HTTP协议发起请求(Request),现在的所有请求都先经过一个WEB Server Plugin(服务器插件)来处理,此插件用于区分是请求的是静态资源(.htm或者是.htm)还是动态资源。
如果WEB Server Plugin发现客户端请求的是静态资源(.htm或者是.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。
如果WEB Server Plugin发现客户端请求的是动态资源(例如:.jsp、.asp/.aspx、.php等),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。
注意:
所谓静态页面,是基于访问页面时网页的内容有无变化而言的,与页面的视觉效果无关,因为动态的视觉效果主要是通过JavaScript、jquery等技术实现的。
2.2 Web 服务器
- Web服务器是指驻留于因特网上某种类型计算机的程序,是可以向发出请求的浏览器提供文档的程序。当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。
- 服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应。
2.2.1 常见的 Web 服务器:
-
Tomact
TomcatTomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且开源免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。学习JavaWeb开发一般都使用Tomcat服务器,该服务器支持全部JSP以及Servlet规范。
Mac 系统下是自带 Java 环境,安装Tomact服务器后,可以通过终端,进入系统中 Tomact 所在的路径:
如图所示,即可在本机开启 Tomact 服务器,打开浏览器,输入 127.0.0.1:8080 ,即可显示一下页面:
- ** IIS **
Microsoft的Web服务器产品为Internet Information Services (IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在ⅡS的平 台上。IIS提供了一个图形界面的管理工具,称为Internet信息服务管理器,可用于监视配置和控制Internet服务。
IIS是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作为扩展Web服务器功能的编程接口;同时,它还提供一个Internet数据库连接器,可以实现对数据库的查询和更新。
3 . JSP 简介
JSP 技术是由原 SUN 公司提出,他基于 Java Servlet 技术来实现开发的动态、高性能的 Web 应用程序,JSP 的网页实质就是在 Html 的基础上按照指定的语法格式添加 Java 代码片段与 JSP 的特殊标记,然后以 .jsp 为后缀保存。 JSP 实质上也是一个HTML页面,只不过他包含用于产生动态网页内容的 Java 代码,这些 Java 代码可以是 Java Bean、SQL语句等。
3.1 JSP 的执行流程:
** JSP执行的大体流程:** 首先,客户端向 Web服务器发出请求,然后 JSP引擎负责将页面转化为 servlet,此 Servlet 经过虚拟机的编译后生成类文件,然后再将类文件加载进内存中执行,最后,由服务器将处理的结果返回给客户端。
JSP 页面会被编译成 Servlet 代码,所以从执行效率上来说,肯定没有 Servle t快,但并不是每次都需要编译,当第一次编译完成之后,JSP 引擎会缓存已经编译后的类文件,所以,当重复调用的时候,就不需要重复的编译了。
下面我从一个 Java Web 项目中找出了一个简单 JSP 源代码,先熟悉一下JSP 页面的基本组成:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="net.sf.json.JSONArray"%>
<%@include file="is_login.jsp" %>
<head>
</head>
<body>
<table width="80%" border="0" cellpadding="4" cellspacing="1"
bgcolor="#464646" class="newfont03" align="center">
<tr bgcolor="#EEEEEE">
<td>编号</td>
<td>新闻标题</td>
<td>发布日期</td>
<td colspan="2">新闻管理</td>
</tr>
<%
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
if(request.getAttribute("json")!=null){
JSONArray json = JSONArray.fromObject(request.getAttribute("json"));
for (int i = 0; i < json.size(); i++) {
%>
<tr bgcolor="#FFFFFF">
<td><%=json.getJSONObject(i).getInt("news_id")%></td>
<td><%=json.getJSONObject(i).getString("news_title")%></td>
<td><%=json.getJSONObject(i).getString("news_date")%></td>
<td><a href="http://localhost:8080/iframework22/deleteNews.u?id=<%=json.getJSONObject(i).getInt("news_id")%>">删除新闻</a></td>
<td><a href="xiugai.jsp?id=<%=json.getJSONObject(i).getInt("news_id")%>&content=<%=json.getJSONObject(i).getString("news_content")%>&title=<%=json.getJSONObject(i).getString("news_title")%>" >更新新闻</a></td>
</tr>
<%
}
}
else{
%>
<%="出错了" %>
<% }
%>
</table>
</body>
</html>
从中我们可以看到,JSP 代码并不是直接写在 HTML 中的,而是写在 <% %> 中间的,与普通的 HTML 页面代码不同的是 JSP 引入了一些标签,引入了相应的类库。
Java Web 的入门基础就写到这里吧,下次有空开始写 JSP 的基础语法以及简单的实例。
感悟:
发现写文章好累人啊,御魔了一晚上才写了这么点,每次想说的总是很宏达,可是一下笔就陷入无尽的细节中,自己的写作表达能力仍需努力啊!现在是真佩服那些能够坚持写完一个系列的博主。所以,遇到用心写的文章,也许文章并不完美,但不要吝啬你的喜欢、评论奥,因为正是你喜欢、评论鞭策他们走向优秀。