# Web 基本认识

# 什么是 web

Web 就是网页,网页其实是基于 B/S 模式的应用程序

B/S : Browser / Server(浏览器 / 服务器)
C/S : Client / Server(客户机 / 服务器)

# Web 组成

浏览器 :代替用户向服务器发送请求
服务器 :接收用户请求并响应
通信协议 :规范数据传输及打包方式

# 服务器

# 作用

接收用户请求并响应
存储数据
具有安全性功能

# 产品

  • Tomcat(本书中以此为教学)

  • Nginx

  • Nginx

  • ....


# 创建 Web 项目

文件用途:

  • src 目录:用来存放 Java 源文件。
  • WebRoot 目录:该 Web 应用的顶层目录,也称为文档根目录
    • META-INF 目录(重要目录,不可随意修改或者删除):系统自动生成,存放系统描述信息,一般情况下使用较少。
    • WEB-INF 目录(重要目录,不可随意删除):该目录存在于文档根目录下,但是不能被引用。
      • lib 目录:包含 Web 应用所需的.jar 或者.zip 文件,例如:SQLServer 数据库的驱动程序。
      • web.xml:Web 应用的配置文件,非常重要,不可删除。
      • classes 文件:包含 src 目录下 Java 源文件所编译生成的.class 文件
  • 静态文件:包括所有的 HTML 网页、CSS 文件、图像文件等,按照功能以文件夹形式分类。
  • JSP 文件:利用 JSP 可以很方便的在页面中生成动态的内容。

# HTML 基础

# HTML 简介

  • HTML 指的是超文本标记语言 (Hyper Text Markup Language)

  • HTML 不是一种编程语言,而是一种标记语言 (markup language)

  • 标记语言是一套标记标签 (markup tag)

  • HTML 使用标记标签来描述网页

详情请看 html


# JSP 编程

<% @ page language = "java" contentType = "text/html; charset = gh2312" %>
<hmtl>
    <body>
        <  %
           out.print("欢迎来到本系统!");
        %  >
    </body>
</hmtl>

里面的 out.print()函数是 java 代码,所以是由 <%%> 包围起来的

  • JSP 和 HTML 有什么区别?
  • HTML 是静态页面,JSP 页面是由 JSP 容器执行该页面的 java 代码部分,然后实时生成的 HTML 页面

# JSP 表达式

JSP 表达式用于定义 JSP 的一些输出,基本语法如下:

< % = 变量/返回值/表达式 % >

eg:“<% = mag %>” 等价于 < % out.print (“mag”);% >

使用 JSP 表达式需要注意的细节:

在 JSP 表达式中不需要以 ; 结束

在 JSP 表达式中不能出现多条语句

JSP 表达式中的内容一定是字符串类型,或者能通过 toString () 函数转换成字符串的形式。


# JSP 声明

JSP 程序段中变量必须先声明后使用

像:

< %
   out.print(str);
   String str="愧诗"
   % >

这样是会报错的

但是 JSP 可以定义全局声明和局部声明,像上面的就是局部申明

全局声明和局部声明的判断

JSP 中定义 <% ! x=0%> 与 <% y=0%>

JSP 在运行过程是只有第一次会翻译成 servlet,x 只会有第一次的会初始化为 o,** 以后都不会再次执行该语句 <% ! x=0%>,x 会一直存在。** 即 x 表示全局变量。

而 <% y=0%> 语句在每次调用该 JSP 的时候都会执行一遍,每次都会从先定义并初始化为 0,即 y 为局部变量

全局变量在任何地方都可以调用,在实际应用中,类、方法和全局变量都可以放在声明部分

# JSP 指令和动作

# 指令

JSP 指令是告诉 JSP 引擎对 JSP 页面如何编译,不包括控制逻辑,不会产生任何可见的输出

使用方法:

< % @ 指令类型 属性1 = “值” ... 属性n=“属性值n”  % >

属性名是大小写敏感的

JSP 指令有:pageincludetaglib

# page 指令作用

  1. 导入包

    < % @ page import ="包名.类名" % >
    
  2. 设定字符集

    < % @ page pagEncoding ="编码类型" % >
    
  3. 设定错误页面

    < % @ page errorPage ="名字.jsp" % >
    

    这样出现错误就会跳转到对应的 JSP 页面去处理异常,而在处理异常的 JSP 页面中需要下面的方法来说明可以对其他页面进行处理错误

    < % @ page isErrorPage ="true" % >
    
  4. 设定 MIME 类型和字符编码

    用户可以使用 contenType 属性设置 JSP 的 MIME 类型和可选字符编码

    < % @ page contenType ="MIME类型; charset=字符编码" % >
    

还有其他属性,但是使用较少

# include 指令

使用 include 指令可以在 JSP 程序中插入多个外部文件,这些文件可以是 JSP、Java 程序或者 HTML,甚至文本

< % @ include file = "文件名" % >

file 属性是 include 指令的必要属性,用于指定包含哪个文件

会把变量也包含进来,所以当有变量重名的时候就会有问题

# taglib 指令

定义一个标签库以及其自定义标签的前缀.

<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>

# JSP 动作

JSP 动作指使用 XML 语法格式的标记来控制服务器的行为

< JSP:动作名 属性1 = "属性1值" ... 属性n = "属性n值" />

或者

< JSP:动作名 属性1 = "属性1值" ... 属性n = "属性n值">相关内容</JSP:动作名>

JSP 动作如下:

  • jsp:include 表示当页面被请求的时候引入一个文件
  • JSP:forward 表示将请求转到另一个页面
  • JSP:useBean 表示获得一个 JavaBean 的实例
  • JSP:setProperty 表示设置 JavaBean 的属性
  • JSP:getProperty 表示获得 JavaBean 的属性
  • JSP:plugin 表示根据浏览器的类型为 Java 插件生成 OBJECT 或者 EMJECT 两种标记

# include 动作

和 include 指令差不多

< % jsp:include file = "文件名" % >

或者

< %jsp:include file = "文件名">相关信息</%jsp:include>
  1. include 动作只会把文件中的输出包含进来,因此指令出现的问题不会出现在这
  2. include 动作会自动检查被包含文件的变化,也就是说当被包含资源内容发生变化时,如果使用的是 include 指令,服务器可能不会检测到

# forward 动作

可以实现跳转

< % jsp:forward page = "文件名" % >

page 属性用于指定要跳转到的目标文件。

forward 动作执行后,就不会再执行当前页面的内容,而是会去执行跳转页面的内容