Java Web 从入门到"改行"(1)--基础准备

1. 背景

首先,说明一下,这是一篇关于 Java Web 基础入门的文章,上学期开始学习 Java Web ,看了不少有关 「XXX从入门到精通」的书籍,近期,要帮着导师带几名本科生,所以决定总结一下以前学的 Java Web 的基础知识,毕竟不能在本科生面前丢面子嘛。

2.Web开发相关知识

2.1 静态/动态 Web 资源

Web 即表示网页的意思,他用于表示Internet主机上供外界访问的资源,该资源可以被分为两类:

1.静态Web资源:是指是实际存在的,无需经过服务器的编译,直接加载到客户浏览器上显示出来,供人们浏览的数据始终不变。例如, *.html页面。

静态Web请求过程

执行流程:

  • 浏览器中输入所要请求的资源的 URL ,发送 HTTP 请求包,经过 DNS 域名解析返回IP地址,然后进过层层 Router 等网络设备的转发,到达服务器,服务对 HTTP 包头进行解析,例如,发现 * .html 的静态文件的请求,然后读取服务器相关目录下的资源文件,返回 HTTP 响应包,浏览器接受到 * .html 文件并解析,生成 Web 视图。

特点:

  • Web 页面中的内容是不能动态更新的,所有用户任何时刻看到的页面内容都是一致的。
  • 静态 Web 页面无法连接数据库,无法和用户实现实时交互。
  • 静态 Web 页面也可以通过添加 JavaScript 实现一些动态的视觉效果,这些都是在客户端实现的,在服务器端并不发生改变。

2.动态Web资源:与静态页面不同的是,其显示的内容是在访问该页面的时候动态生成的【改变的内容主要来自于数据库中数据的改变】,并不是指页面会动。 目前,比较流行的动态网页制作技术有:ASP、PHP、JSP

动态Web请求.jpg

执行流程:

  • 动态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 所在的路径:

iTerm2

如图所示,即可在本机开启 Tomact 服务器,打开浏览器,输入 127.0.0.1:8080 ,即可显示一下页面:

Tomact7

  • ** IIS **

Microsoft的Web服务器产品为Internet Information Services (IIS),IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。ⅡS是目前最流行的Web服务器产品之一,很多著名的网站都是建立在ⅡS的平 台上。IIS提供了一个图形界面的管理工具,称为Internet信息服务管理器,可用于监视配置和控制Internet服务。

IIS

  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 的基础语法以及简单的实例。

感悟: 发现写文章好累人啊,御魔了一晚上才写了这么点,每次想说的总是很宏达,可是一下笔就陷入无尽的细节中,自己的写作表达能力仍需努力啊!现在是真佩服那些能够坚持写完一个系列的博主。所以,遇到用心写的文章,也许文章并不完美,但不要吝啬你的喜欢、评论奥,因为正是你喜欢、评论鞭策他们走向优秀。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

Java NIO之NIO与传统IO的区别I/ONIO小结

I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上...

9210
来自专栏java一日一条

Web服务器、应用程序服务器、HTTP服务器区别

WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere 都各属于哪种服务器?这些问题困惑...

76910
来自专栏云计算教程系列

DokuWiki引擎

DokuWiki 是一个使用,用途多样的开源 Wiki 软件,并且不需要数据库。它因简洁易读的语法受到用户的喜爱。而容易维护、备份和整合则使它成为管理员的最爱。...

23120
来自专栏BestSDK

使用 JS 构建跨平台的原生应用(一):React Native for Android 初探

Facebook 于 2015 年 9 月 15 日推出 React Native for Android 版本。相比起 for iOS,for Android...

23950
来自专栏编程一生

PHP童鞋改JAVA代码怎么处理

15920
来自专栏大数据平台TBDS

Hiveserver2 性能优化与GC优化

最近发现hiveserver2(本质上是提供jdbc连接的driver进程)经常发生严重卡死故障,而且卡死分成两种现象。

1K100
来自专栏喵了个咪的博客空间

[喵咪Liunx(4)Monit进程监控

[喵咪Liunx(4)Monit进程监控 ? 前言 有一段时间没有更新博客了,最近因为公司项目全球化以及最近慢慢在偏向学习团队管理忙的有点不可开交了,不过这次要...

37990
来自专栏猿天地

Spring Cloud如何提供API给客户端

现在越来越多的公司开始拥抱Spring Cloud了,很多Java方向的同学也开始积极的学习Spring Cloud,其实这边还有一个问题就是说:虽然大家学了E...

38270
来自专栏butterfly100

Chris Richardson微服务翻译:构建微服务之微服务架构的进程通讯

Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯(本文) 微服务架构中的...

32260
来自专栏FreeBuf

SUpraudit:一款MacOS上的日志审计工具

你可能对BSM审计有所了解,也可能完全没有听说过。这是Solaris OS遗留下来的产物,它存在于FreeBSD,Linux,当然还包括MacOS上。在我的*O...

19540

扫码关注云+社区

领取腾讯云代金券