1.2修正文件编码

进入preferences修正JSP文件的编码:

1.3 编写大略的JSP文件

新增一个JSP文件到WebContent目录,如下

然后检讨并修正编码,该当都是UTF-8,如下图:

jsp的模板经典技巧回想和借鉴JSP编程 Vue.js

如果不是,就修正。

1.4运行和测试

选中项目名称,点邮件菜单的Run as ...-->Run on server

之后涌现如下界面:

若没有现存的tomcat server,就自己加一个。
点Finish。
然后自动调用chrome,界面如下:

自动调用浏览器设置的地方是windows-->Web browser菜单:

1.5增加功能:显示IP地址

(1)显示ip地址:getRemoteAddr

(2)变量声明<%! %>

(3)表达式<%=%>

2.JSP措辞先容2.1语法

语法

描述

<%-- 注释 --%>

JSP注释,注释内容不会被发送至浏览器乃至不会被编译

<!-- 注释 -->

HTML注释,通过浏览器查看网页源代码时可以瞥见注释内容

<\%

代表静态 <%常量

%\>

代表静态 %> 常量

\'

在属性中利用的单引号

\"

在属性中利用的双引号

2.2指令

指令

描述

<%@ page ... %>

定义页面的依赖属性,比如脚本措辞、error页面、缓存需求等等

<%@ include ... %>

包含其他文件

<%@ taglib ... %>

引入标签库的定义,可以是自定义标签

2.3Page指令属性

属性

描述

buffer

指定out工具利用缓冲区的大小

autoFlush

掌握out工具的 缓存区

contentType

指定当前JSP页面的MIME类型和字符编码

errorPage

指定当JSP页面发生非常时须要转向的缺点处理页面

isErrorPage

指定当前页面是否可以作为另一个JSP页面的缺点处理页面

extends

指定servlet从哪一个类继续

import

导入要利用的Java类

info

定义JSP页面的描述信息

isThreadSafe

指定对JSP页面的访问是否为线程安全

language

定义JSP页面所用的脚本措辞,默认是Java

session

指定JSP页面是否利用session

isELIgnored

指定是否实行EL表达式

isScriptingEnabled

确定脚本元素能否被利用

2.4行为标签

行为标签语法:<jsp:行为名称 attribute="value" />

语法

描述

jsp:include

用于在当前页面中包含静态或动态资源

jsp:useBean

探求和初始化一个JavaBean组件

jsp:setProperty

设置 JavaBean组件的值

jsp:getProperty

将 JavaBean组件的值插入到 output中

jsp:forward

从一个JSP文件向另一个文件通报一个包含用户要求的request工具

jsp:plugin

用于在天生的HTML页面中包含Applet和JavaBean工具

jsp:element

动态创建一个XML元素

jsp:attribute

定义动态创建的XML元素的属性

jsp:body

定义动态创建的XML元素的主体

jsp:text

用于封装模板数据

利用bean是最好用的行为标签,例如,我们创建一个java类:

然后,在JSP中利用useBea/setProperty/getProperty三个行为标签:

测试:

2.5隐含工具(默认创建的工具)

工具

描述

request

HttpServletRequest类的实例

response

HttpServletResponse类的实例

out

PrintWriter类的实例,用于把结果输出至网页上

session

HttpSession类的实例

application

ServletContext类的实例,与运用高下文有关

config

ServletConfig类的实例

pageContext

PageContext类的实例,供应对JSP页面所有工具以及命名空间的访问

page

类似于Java类中的this关键字

Exception

Exception类的工具,代表发生缺点的JSP页面中对应的非常工具

2.6判断语句

判断语句包括两种:if else和switch case

示例如下:

2.7循环语句

循环语句包括两种:for和while

示例如下:

2.8运算符

种别

操作符

结合性

后缀

() [] . (点运算符)

左到右

一元

++ - - ! ~

右到左

可乘性

/ %

左到右

可加性

+ -

左到右

移位

>> >>> <<

左到右

关系

> >= < <=

左到右

相等/不等

== !=

左到右

位与

&

左到右

位异或

^

左到右

位或

|

左到右

逻辑与

&&

左到右

逻辑或

||

左到右

条件判断

?:

右到左

赋值

= += -= = /= %= >>= <<= &= ^= |=

右到左

逗号

,

左到右

2.9变量类型

布尔值(boolean):true 和 false;

整型(int):与 Java 中的一样;

浮点型(float):与 Java 中的一样;

字符串(string):以单引号或双引号开始和结束;

Null:null。

2.10表单处理

以下供应一个例子来解释:

(1)创建FormProcess.jsp文件:

个中供应了两个input输入框。

(2)再创建FormProcessMain.jsp文件,如下:

个中利用request工具的getParameter方法来获取Get参数。

2.11过滤器

JSP过滤器实际上和Servlet过滤器一样。

以下通过示例来解释:

(1)在web.xml中增加一个过滤器:

(2)然后创建过滤器处理类com.hunting.LogFilter,如下:

2.12JSTL(JSP标准标签库)

(1)核心标签:

标签

描述

<c:out>

用于在JSP中显示数据,就像<%= ... >

<c:set>

用于保存数据

<c:remove>

用于删除数据

<c:catch>

用来处理产生缺点的非常状况,并且将缺点信息储存起来

<c:if>

与我们在一样平常程序中用的if一样

<c:choose>

本身只当做<c:when>和<c:otherwise>的父标签

<c:when>

<c:choose>的子标签,用来判断条件是否成立

<c:otherwise>

<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被实行

<c:import>

检索一个绝对或相对 URL,然后将其内容暴露给页面

<c:forEach>

根本迭代标签,接管多种凑集类型

<c:forTokens>

根据指定的分隔符来分隔内容并迭代输出

<c:param>

用来给包含或重定向的页面通报参数

<c:redirect>

重定向至一个新的URL.

<c:url>

利用可选的查询参数来创造一个URL

(2)格式化标签:

标签

描述

<fmt:formatNumber>

利用指定的格式或精度格式化数字

<fmt:parseNumber>

解析一个代表着数字,货币或百分比的字符串

<fmt:formatDate>

利用指定的风格或模式格式化日期和韶光

<fmt:parseDate>

解析一个代表着日期或韶光的字符串

<fmt:bundle>

绑定资源

<fmt:setLocale>

指定地区

<fmt:setBundle>

绑定资源

<fmt:timeZone>

指定时区

<fmt:setTimeZone>

指定时区

<fmt:message>

显示资源配置文件信息

<fmt:requestEncoding>

设置request的字符编码

(3)SQL标签:

标签

描述

<sql:setDataSource>

指天命据源

<sql:query>

运行SQL查询语句

<sql:update>

运行SQL更新语句

<sql:param>

将SQL语句中的参数设为指定值

<sql:dateParam>

将SQL语句中的日期参数设为指定的java.util.Date 工具值

<sql:transaction>

在共享数据库连接中供应嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

(4)XML标签:

标签

描述

<x:out>

与<%= ... >,类似,不过只用于XPath表达式

<x:parse>

解析 XML 数据

<x:set>

设置XPath表达式

<x:if>

判断XPath表达式,若为真,则实行本体中的内容,否则跳过本体

<x:forEach>

迭代XML文档中的节点

<x:choose>

<x:when>和<x:otherwise>的父标签

<x:when>

<x:choose>的子标签,用来进行条件判断

<x:otherwise>

<x:choose>的子标签,当<x:when>判断为false时被实行

<x:transform>

将XSL转换运用在XML文档中

<x:param>

与<x:transform>共同利用,用于设置XSL样式表

3.JSP历史

下面从前后端分离角度展现JSP的产生和发展脉络。

3.1互联网的产生

1957年美国国防部(DoD)组建了高等研究操持局(ARPA)。
1961年7月,MIT工程师Leonard Kleinrock揭橥Information Flow in Large Communication Nets论文。
1962年8月, MIT工程师J.C.R. Licklider和W. Clark揭橥On-Line Man Computer Communication论文。
1967 2月,在ARPA IPTO PI会议上,Larry Roberts组织了有关ARPANET设计方案的谈论。
互联网雏形ARPANET由此产生。

互联网最初的目的是访问和复制文件从一台打算机到另一台远程打算机,两台打算机之间有网络,但速率慢,而且常常专用于大学或者研究机构是昂贵的,不支持大规模用户。
1970年,ARPANET主机开始利用网络掌握协议(NCP),这便是后来的传输掌握协议(TCP)的雏形。

人们基于TCP/IP构建了更快的网络,个中运用层文件传输协议(FTP)规范供应了交流这些文件的标准方法。
1973年,文件传输协议(FTP)推出,用于在异构系统之间交流文件。
FTP传输的文件并不能有效查看,因此发明了超文本标记措辞(HTML),使我们能够在互联网上看到文档。

3.2万维网的产生

1989年蒂姆伯纳斯-李写了一份关于建立一个通过网络传输超文本系统的报告,个中创建了单行 HTTP 协议,这个协议在1991年被命名为HTTP/0.9,万维网由此产生,1996年超文本传送协议HTTP 1.0发布。

只管FTP可以传输HTML文件,但是并没有供应有效小文件传输机制和无状态管理能力,超文本传输协议(HTTP)才被发明出来专门用于传输HTML文档,HTTP是一种无连接/无状态协议,这使得许多短连接更加有效,而且可以不该用密码就可以获取HTML文档,这让万维网真正到来,真正表示了互联网的快捷、免费思维。

3.3通用网关接口的产生

上面提到了TCP/IP,HTTP,FTP都是通信管道,后来大家把把稳力转向内容。
我们感兴趣的文件随着IT技能的发展而快速爆发,例如数据库快速发展导致各种运用系统快速发展。
同时,数据的更新频度更加快速,这种即时信息推动了互联网流量快速增长。
通过基于HTTP的HTML,终极用户可以浏览位于远程做事器上的文件。

当时,远程做事器属于局域网,局域网连接到互联网须要专用设备,可惜的是这种专用设备并不好用(直到后来路由器和交流机被思科发明出来),因此通用网关接口(CGI)规范被制订出来,它许可Web做事器超越文件做事器并从内部数据库中获取数据,并动态变动HTML。

最初,CGI是在1993年由美国国家超级电脑运用中央(NCSA)为NCSA HTTPd Web做事器开拓的,当年NCSA内部有一份大略的CGI规范解释,后来在1997年Ken Coar领导的团队制订了CGI1.1规范,并提交RFC。
CGI规范是Web运用程序开拓中的一个重大打破,确保了相同的CGI程序在不同的Web做事器上事情。

CGI成为通报动态内容的最常用手段。
只是互联网发展太快了,CGI的性能无法跟上,每个对CGI脚本的要求都会产生一个单独的进程。
这种设计让CGI在高峰负载时也花费大量资源。
办理方案非常多,功能性和可伸缩性成为关键。

许多CGI替代者都采取做事器端编程技能来实现业务逻辑,包括ASP、ColdFusion、PHP和Perl等等,个中至今仍旧在大量利用的是PHP ,PHP 继续自一个老的工程,名叫 PHP/FI,PHP/FI 在 1995 年由 Rasmus Lerdorf 创建,最初只是一套大略的 Perl 脚本,用来跟踪访问他主页的人。
然后,纵然是PHP,终极由于可移植性和面向工具的编程设计,Java超越了PHP和其他CGI平台。

3.4 JSP的产生

Java自1991年出身以来已经走过了很长的一段路,当时Sun公司推出了“绿色操持”,试图集成数字消费设备,如电视机、CD播放机和打算机。
OAK(名字来自高斯林窗外的一棵橡树!)出身了,但直到涌现HotJava和小程序,才开始生动起来。
1995年,Sun发布了开源Java,向微软发起了寻衅,反响巨大。
这匆匆使Java深入到做事器端开拓领域。

Sun在Java中加入了Internet功能,并在1997年6月发布了servlet接口。
servlet以CGI替代为目标。
与CGI为每个要求启动一个进程不同,servlet利用更细粒度的线程在单个进程中运行。
servlet采取了更有效的体系架构,能够应对互联网上的繁芜情形。
Java servlet为开拓Java Web组件供应了根本。
servlet优点是每个额外的并发要求带来的额外开销非常小。

servlet技能须要真正的Java编程技能才能有效运用,外不雅观和良好体验为web运用带来了巨大方便,但是图像支持还不是那么良好。
于是Sun公司在1998年发布了JavaServer Pages (JSP),这来自于微软ASP的启示,也有些人说是复制的,它使得编写动态HTML页面变得随意马虎。

利用JSP的利用非常大略,有些工具(例如Dreamweaver)能让非程序员来构建WWW网站前端页面,当然要servlet带动后端做事器代码(例如javabean)才能完成完全的WWW网站构建事情,这样构建的WWW网站具有模块化、可掩护、可伸缩和可移植优点,从而完成大略网站到繁芜Web运用程序的转变,从而实现前后端分离。

JSP官方版本1.0和1.1都涌如今1999年,都很受欢迎,版本1.2涌现于2001年,是目前最盛行的实现。

3.5 Node的产生

JSP究竟还是含有Java代码,前后端没有彻底分离,因此人们在2009年发明了node-js,这让前端开拓职员崛起,他们纯挚利用HTML+CSS+JavaScript前端措辞就能完成前端页面的开拓,而不须要利用含有各种后端交互印记的标签。

于是,基于node-js的React、Angela、VUE框架成为潮流。