学习要点

  • B/S架构的基本概念
  • Web项目的创建和运行
  • JSP页面元素
  • MyEclipse创建和运行Web项目
  • Web程序调试

Web简史

web前端技术演进三阶段

  • WEB 1.0:信息广播。
  • WEB 2.0:信息交互。 微博、博客等。
  • WEB 5.0:移动互联网。

动态网页服务器端技术演进

主流web程序应用平台

性能比较

LAMP

JavaEE

ASP.NET

运行速度

较快

一般

开发速度

非常快

一般

运行损耗

一般

较小

较大

难易程度

简单

简单

运行平台

Linux/Unix/Windows

绝大多数平台

仅Windows平台

软件架构

C/S架构

优点:响应速度快;个性化定制;事务处理能力强,减轻服务器压力;安全性高。

缺点:C端维护工作量大;不利于企业快速部署应用。

B/S架构

优点:分布广,只要有互联网的浏览器即可。部署灵活;维护方便。跨平台。

C/S与BS混合架构

企业内部操作数据采用C/S架构:外部用户不直接访问数据库服务器,保证企业数据库的相对安全。企业内部用户的交互性较强,数据操作响应速度较快。

企业外部采用B/S架构:企业外部用户修改和维护数据时,速度较慢,较烦琐,数据的动态交互性不强。适合简单数据查询和确认。

B/S架构

定义

常见web服务器分成三类:不带应用程序的服务器(存放html文件等)、带应用程序的服务器(例如可以存放JSP文件)、带应用程序和数据库的服务器(例如JSP+数据库)。

工作原理

B/S结构采用请求/响应模式进行交互。

HTTP

HTTP协议概述

HTTP规范1.0和1.1定义了HTTP消息格式。HTTP报文由从客户机到服务器的请求和从服务器到客户机的相应构成,所以HTTP消息分为请求消息和响应消息两类。

请求行

状态行

  • 状态行格式如下:

HTTP-Version Status-Code Reason-Phrase CRLF

其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

  • 常见状态码:
  1. 200 OK:客户端请求成功。
  2. 400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
  3. 401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
  4. 403 Forbidden:服务器收到请求,但是拒绝提供服务。
  5. 404 Not Found:请求资源不存在,举个例子:输入了错误的URL。
  6. 500 Internal Server Error:服务器发生不可预期的错误。
  7. 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OK(CRLF)。

在浏览器查看请求和响应信息

URL

Uniform resource Locator,统一资源定位符

格式:

http://<IP地址>:[端口号]/路径/[?<查询信息>]

例如:

http://www.etc.com/book/index.html

http:超文本传输协议。FTP,telnet

www:代表一台web服务器

etc.com:服务器域名

book:站点上的目录

index.html:book文件夹中的一个HTML文件,即网页。

Web应用程序的部署

JavaEE

  • Java EE,Java 平台企业版(Java Platform Enterprise Edition),之前称为Java 2 Platform, Enterprise Edition (J2EE),2005年6月更名为JavaEE,2018年3月更名为 Jakarta EE。是 Sun 公司(2009年被Oracle公司收购)为企业级应用推出的标准平台,用来开发B/S架构软件。
  • Java EE 是一种规范,包括:JDBC(Java Database)数据库连接、JNDI(Java Naming and Directory Interfaces)Java的命名和目录接口、EJB(Enterprise JavaBean)、RMI(Remote Method Invoke)远程方法调用、Java IDL(Interface Dexcription Language)/CORBA(Common Object Broker Architecture)Java接口定义语言/公用对象请求代理程序体系结构、JSP(Java Server Pages)、Servlet、XML(Extensible Markup Language)可扩展标记语言、JMS(Java Message Service)Java消息服务、JTA(Java Transaction API)Java事务API、JTS(Java Transaction Service)Java事务服务、JavaMail。
  • JavaEE 是 Java 应用最广泛的部分。
  • JavaEE运行的基础是JavaSE。
  • JavaEE常见容器:Tomcat 容器(JSP/Servlet),JBoss容器(Servlet和EJB容器),Resin容器(Servlet,轻量级web容器;同级别商用容器:Weblogic、Websphere),Glassfish(Sun公司推出的JavaEE容器)。

Tomcat和JDK的版本配套关系

Tomcat、JDK、JavaEE、Servlet版本间的配套关系

eclipse和jdk的配套关系

参考eclipse安装文档

https://wiki.eclipse.org/Eclipse/Installation#Install_a_JVM

配套参考表

Eclipse 4.8 (Photon)    Java8
Eclipse 4.7 (Oxygen)   Java8
Eclipse 4.6 (Neon)       Java8
Eclipse 4.5 (Mars)       Java7
Eclipse 4.4 (Luna)       Java7
Eclipse 4.3 (Kepler)     Java6

通常,在软件项目中,需要调整集成开发环境程序编译的JDK版本、JRE版本、以及tomcat使用的JRE版本。保持三个版本一致。

tomcat服务器的安装(以7为例)

  • 解压缩版本tomcat注意事项

添加系统变量,名称为CATALINA_HOME,设置值为Tomcat的安装目录。

  • 启动和停止tomcat服务器

在IE地址栏中输入http://localhost:端口号。

tomcat服务器目录

目录

说明

/bin

存放各种平台下用于启动和停止Tomcat的脚本文件

/conf

存放Tomcat服务器的各种配置文件

/lib

存放Tomcat服务器所需的各种JAR文件

/logs

存放Tomcat的日志文件

/temp

Tomcat运行时用于存放临时文件

/webapps

当发布Web应用时,默认情况下会将Web应用的文件存放于此目录中

/work

Tomcat把由JSP生成的Servlet放于此目录下

tomcat端口配置

通过配置tomcat目录下conf中的server.xml文件修改Tomcat端口号

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

  

上机练习

安装tomcat,启动和停止tomcat,修改tomcat端口号。并测试。

Web应用程序

手动创建和部署web项目

1、在开发环境中创建web项目

在web-inf/web.xml中配置默认访问启始页面。

2、发布为war文件,拷贝到Tomcat 7.0\webapps目录下,启动tomcat。观察webapps目录,可以看到war自动生成web应用程序。在ie中访问项目。

3、在服务器端web项目的目录结构:

目录

说明

/

Web应用的根目录,该目录下所有文件在客户端都可以访问(JSP、HTML等)

/WEB-INF

存放应用使用的各种资源,该目录及其子目录对客户端都是不可以访问

/WEB-INF/classes

存放Web项目的所有的class文件

/Web-INF/lib

存放Web应用使用的JAR文件

上机练习

1、手动创建一个Web项目,实现项目发布,并能通过浏览器输入网址访问。

2、在myeclipse中创建一个项目导出为war文件,部署到服务器中并访问。

开发环境myeclipse和tomcat的整合

myeclipse和tomcat的整合

进入:windwos->prefereces->myeclipse->servers->tomcat7.x

启用tomcat7服务器,关联JDK。

关闭内置tomcat服务器。

注意:设置只针对工作空间有效

创建项目和部署项目

在myeclipse中启动tomcat服务器

上机练习

在myeclipse中创建项目,在myeclipse中部署项目,在myeclipse中启动服务器,在ie浏览器中访问项目。

JSP概念

JSP:Java Server Pages。在HTML中嵌入Java脚本代码。

例如:

在ie地址栏输入http://localhost:8080/chapter01/index.jsp

运行原理

JSP页面元素

page指令

  • 作用

通过设置内部的多个属性定义整个页面的属性。

  • 语法格式(一个属性中的多个值采用“,”号隔开)
<%@ page 属性1="属性值" 属性2="属性值1,属性值2"… 属性n="属性值n"%>

  

  • 常用属性
属性 描述 默认值
language 指定JSP页面使用的脚本语言 java
import 通过该属性来引用脚本语言中使用到的类文件
contentType 用来指定JSP页面所采用的编码方式

text/html,ISO-8859-1

小脚本与表达式

表达式:显示数据,系统将其作为一个值来进行计算和显示。(不能以;结尾)

上机练习

需求描述:编写JSP页面,计算1—100之间的所有素数之和

提示:1、素数——在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。2、使用out内置对象输出信息。

声明

在编写JSP页面程序时候,有时需要为Java脚本定义成员变量和方法,这时就需要使用JSP声明来实现。

声明语法格式:

<%! Declaration;[ Declaration;]…%>

  

示例:假如以下代码需要在页面中多次使用,如何处理?

<%
SimpleDateFormat formater = new SimpleDateFormat("yyyy年 MM月dd日");
String strCurrentTime = formater.format(new Date());
%>

  

使用声明

JSP中的注释

注意:HTML注释在JSP文件被编译后保留,JSP注释则被丢弃。重要信息的注释不要使用HTML注释。

总结

上机练习

需求描述:

编写JSP页面,计算2000—3000年中存在几个闰年。

实现思路:

1. 声明方法boolean leapYear(int year),用于判断是否是闰年

2. 声明一个变量count ,用于统计闰年的个数

3. 设置循环,条件是从2000至3000年

4. 在循环内调用boolean leapYear(int year),根据返回结果,改变count的变量值

提示信息:

闰年的判断条件:能够被4整除而不能被100整除,或者能够被400整除。

JSP执行过程

Web容器处理JSP文件请求需要经过3个阶段

  1. 翻译阶段
  2. 编译阶段
  3. 执行阶段

第一次请求之后,Web容器可以重用已经编译好的字节码文件

如果对JSP文件进行了修改,Web容器会重新对JSP文件进行翻译和编译。

Web程序的调试与排错

运行Web程序时常犯的错误

  • 未启动tomcat
  • 未部署web应用
  • URL输入错误
  • 目录不能被引用
  • JSP脚本错误

错误调试

  • 未启动tomcat

如果服务器无法启动,需要修改端口号。

  • 未部署web应用

确认项目已经部署到tomcat服务器上。

  • URL输入错误

404错误,访问了不可访问的url资源。

  • 目录不能被引用

例如把文件创建到web-inf中,导致404错误。

  • JSP脚本错误

500错误。

按照java程序调试方式排错:阅读代码逻辑、输出数据、debug。

上机练习

需求描述:

  • 将新闻发布系统的静态页面转换成JSP页面后部署到Web项目中,并且可以通过浏览器访问各JSP页面。
  • 创建新闻发布系统数据库。
  • 通过MyEclipse统一设置字符集编码格式为“UTF-8
  • 在HTML页面中加入page指令
  • 将HTML的后缀名改为.jsp

提示:

  • 通过MyEclipse统一设置字符集编码格式为“UTF-8
  • 在HTML页面中加入page指令
  • 将HTML的后缀名改为.jsp

数据库模型图

新闻主题表:topics

字段

数据类型

是否为空

备注

tid

int

新闻主题编号,主键,自增

tname

char(50)

新闻主题,非空,唯一约束

新闻表:news

字段

数据类型

是否为空

备注

nid

int

新闻编号,主键,自增

ntid

int

新闻主题编号,外键

ntitle

char(100)

新闻标题

nauthor

char(50)

作者

ncreatedate

datetime

发布日期,默认当前时间

npicpath

char(200)

图片路径

ncontent

text

新闻内容

nmodifydate

datetime

编辑日期

nsummary

char(255)

新闻概要

新闻评论表:comments

字段

数据类型

是否为空

备注

cid

int

评论编号,主键,自增

cnid

int

新闻编号,外键

ccontent

text

评论内容

cdate

datetime

评论日期,默认当前时间

cip

char(100)

评论人IP地址

cauthor

char(100)

评论作者

系统用户表:users

字段

数据类型

是否为空

备注

uid

int

用户编号,主键,自增

uname

char(20)

用户名,非空,唯一约束

upwd

char(20)

用户密码,非空

JavaEE-01 JSP动态网页基础的更多相关文章

  1. JSP技术基础(动态网页基础)

    前言:如果说html为静态网页基础,那么jsp就是动态网页基础,两者的区别就是jsp在html的前面多加了几行而已.当然,jsp里面对java的支持度更高.要明白,js只是嵌入在客户端的小程序小脚本而 ...

  2. 编写jsp动态网页

    默认情况下,jsp网页必须保存在TOMCAT_HOME/webapps 目录下才能被客户请求. JSP网页的主题仍然是html标签,在需要显示动态数据的地方添加<%%>标记,在其中编写合法 ...

  3. JSP/Servlet开发——第一章 动态网页基础

    1.动态网页:在服务端运行的使用程序语言设计的交互网页 : ●动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站(股票网站),一般情况下动态网站通过数据库进行架构. ●动态 ...

  4. JSP动态网页

    01.什么是服务器 02.什么是动态网页  动态网页是指在服务器端运行的,使用程序语言设计的交互式网页,它们会根据某种条件的变化,返回不同的网页内容.可以让用户和服务器交互的网站 动态网站可以实现交互 ...

  5. 【Asp.net入门01】动态网站基础知识

    本节将介绍: 网站搭建流程 动态网站相关基础概念 网页的访问原理 使用浏览器访问网站是我们几乎天天在做的事情.以前我们只需要关注网页内容,作为网站开发人员,从现在开始我们要关注更深层次的东西了. 1. ...

  6. 《The Django Book》实战--第二章--动态网页基础

    这章演示了一些最基本的Django开发动态网页的实例,由于版本不一样,我用的是Django 1.,6.3,有些地方按书上的做是不行的,所以又改了一些,写出来让大家参考. 这是一个用python写的一个 ...

  7. 第三章 Django之动态网页基础(1)

    前一章中,我们解释了如何建立一个 Django 项目并启动 Django 开发服务器.当然,那个网站实际并没有干什么有用的事情,它所做的只是显示 It worked!消息.让我们来做些改变.本章将介绍 ...

  8. jsp动态网页开发基础

    JSP基础语法 jsp页面元素构成 jsp页面组成部分有:指令,注释,静态内容,表达式,小脚本,声明. 1.表达式<%=     %> 2.小脚本<%       %> 3.声 ...

  9. 动态网页基础——JSP

    WEB项目的目录结构 META-INT  WEB-INF 对外都是不可访问的,不可把index.jsp/index.html 放这 JSP JSP是为了简化Servlet的工作出现的替代品,Servl ...

随机推荐

  1. Codechef SUMCUBE

    SUMCUBE code 给定无向简单图 G = (V, E)(即不存在自环和重边),以及 k = 1, 2, 或3 .求$$ \sum_{S \subseteq V} f(S)^k, $$其中 $f ...

  2. Vue scrollBehavior 滚动行为

    使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样. vue-router 能做到,而且更好,它让你可以自定义路由切换时页面如何滚动. 注意: 这个功能只 ...

  3. unix网络编程环境配置程序运行

    1 查看ubuntu版本 cat /etc/issue 2 查看版本 cat /proc/version 3 下载 你可以通过其他方式下载 这里下载好了 文件名为unpv13e 4 开始配置 (1)c ...

  4. 洛谷 - P1044 - 栈 - 简单dp

    https://www.luogu.org/problemnew/show/P1044 由于是用标签搜索进来的,所以这道题一定是有dp的解法. 很显然规定每次加入元素之前可以从栈中清理出任意数量的元素 ...

  5. Educational Codeforces Round 21 D - Array Division (前缀和+二分)

    传送门 题意 将n个数划分为两块,最多改变一个数的位置, 问能否使两块和相等 分析 因为我们最多只能移动一个数x,那么要么将该数往前移动,要么往后移动,一开始处理不需要移动的情况 那么遍历sum[i] ...

  6. Codeforces Round #408 (Div. 2) C.Bank Hacking(二分)

    传送门 题意 给出n个银行,银行之间总共有n-1条边,定义i与j有边相连为neighboring,i到j,j到k有边,则定义i到k的关系为semi- neighboring, 每家银行hack的难度为 ...

  7. = =写个prim希望能够巨巨们看的懂

    prim算法---典型的贪心算法 求最小生成树的算法 (Minimum Spanning Tree)最小生成树: 算法思想:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V, ...

  8. python 生成器 generator

    一.生成器定义 通过列表生成表达式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢? ...

  9. Spring事务引发dubbo服务注册问题

    文章清单 1. 问题 2. 查找bug过程 3. 解决方案 使用spring boot+dubbo写项目,一个服务,之前是正常的,后来调用方出现空指针异常,第一反应提供方出了问题. 1. 看控制台,服 ...

  10. 跟我一起玩Win32开发(10):绘图(C)

    今天我们来欣赏一下用于填充图形的函数,当然我不会逐个去介绍,因为我们参考MSDN直接套参数就可以了. SetDCBrushColor函数有必要扯一下,它的声明如下: COLORREF SetDCBru ...