服务器端技术及JSP

本章主要介绍JAVA平台下服务器端的网页技术---JSP,JSP属于J2EE,学习了JSP就跨进了J2EE的门槛。

前面介绍的HTML和DHTML都是客户端的技术,即用户发一个请求,服务器把请求的网页(含DHTML脚本)发送到客户端浏览器上运行,除此之外,服务器不再进行其他计算。

要使WEB技术能用于商业核心应用,服务器应承担更多的计算任务,比如能访问数据库,把结果返回WEB客户端,这种技术叫WEB服务器端技术。

传统和经典的叫WEB服务器端技术主要有:CGI、ASP、SERVLET/JSP、PHP等。

1 CGI(公用网关接口)

CGI可能是最早的WEB服务器端技术,它是个HTTP过滤器程序,其大致的原理是:

CGI是在WEB服务器上运行的一个程序,该程序定义了           WEB客户请求与应答的一种方法。客户向服务器的请求(主要是HTML表单)只要属于CGI定义范围,就启动CGI程序,其任务是把客户的请求从网关的环境变量中取出并加以转换,提交给服务器上的CGI应用程序,这些程序可以用C/C++/PERL等语言编写,这些程序具备访问服务器资源(比如数据库)的能力,这些程序的运行结果,通过CGI转换成HTML格式,发送到客户端。

CGI程序很容易实现对服务器资源的访问,但是向客户端输出则比较麻烦,程序员不能使用“所见即所得”的网页制作工具,只能一行行手写HTML代码,向客户端输出,不适合生成复杂页面,这项技术现在使用的人不多。

但是,CGI的基本原理却被后续的服务器端网页技术沿用。

2 ASP

ASP是微软研发的技术,出现于1997年前后。它解决了CGI的输出麻烦。

ASP允许HTML和服务器端脚本混合编程。可以在HTML中插入<%  %>括起的代码段,这些代码段可以用JavaScript\VBScript等脚本语言编写,但它们是在服务器上执行的。

ASP编程是非常方便的,你可以先用“所见即所得”的网页制作工具把页面效果做出来,然后再在其中插入服务器端脚本输出服务器计端计算结构。它的缺点是:HEML和脚本混合编程,使程序的可读性很差,不利于维护大型WEB项目,脚本程序的调试也是个问题。2003年前后推出的ASP.NET基本解决了上述问题。

ASP还内置了几个对象,这些对象不需实例化即可使用,实现网页的状态维护、HTTP模拟等功能,这些对象后来大都出现于JSP中。

3 Servlet

Servlet是JAVA早期的WEB服务器端技术,用JAVA语言编写。无论是从原理和编程方式上,几乎就是CGI的翻版,具有CGI的缺点和优点,与CGI主要不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。

(1)下面的例子,演示SERVLET如何接受客户端表单提交的数据

import java.io.*; //引用了JAVA SE库
import javax.servlet.*;  //引用了servlet库
import javax.servlet.http.*;   
public class SomeServlet extends HttpServlet {     //继承
public void doGet(HttpServletRequest request,
               HttpServletResponseresponse)
                throws ServletException, IOException

。。。。。。其它属性和方法声明}

程序员可以重写HttpServlet的doGet方法,该方法可或取HTML表单的GET提交。

如果要接收HTML表单的POST提交,则应用doPost方法,该方法也是HttpServlet类中的方法。

使用doGet/doPost方法,可使Servlet获取表单提交的数据。

(2)Servlet程序中普通的JAVA代码

在Servlet程序中,可以使用Servlet API中的类(比如获取HTML表单提交的数据等),这些类属于JAVE EE;也可以使用JAVASE的 API的类,还可以写其它普通的JAVA代码执行某些算法,并可以将结果以HTML的形式输出到客户端。

(3)JavaServlet API

要全面掌握Servlet,应该查阅Java Servlet API手册(网上可以下载)。

Java Servlet API包含了两个软件包。
第一个软件包:javax.servlet

提供了控制 Servlet生命周期所必需的Servlet接口,是编写 Servlet时必须要实现的。

第二个软件包:javax.servlet.http

提供了从Servlet接口派生出的专门用于处理HTTP请求的抽象类和一般的工具类。

对于Servlet,只需一般性的了解其原理,阅读几个实例,课程设计中没做要求。Servlet能做的,JSP都可以做。JSP写程序更容易,但结构性不如Servlet+HTML,因为JSP与HTML混着写,可读性和可维护性都不好。

但是我们要知道的是:JAVA后续的WEB技术,比如JSP, STRUTS等,都是Servlet的包装,它们真正执行的是Servlet。

1.运行Servlet程序,需要一个WEB容器(JSP程序也需要),常用的是Tomcat,是一个免费的开源的Serlvet容器。2.WEB容器是WEB服务器的扩展,就像CGI是WEB服务器的扩展一样,其实CGI也是个WEB容器,类似的容器还有IIS的ASP扩展等等。3.容器是服务器端程序的运行环境,主要功能是处理从客户端发出的请求。

4 JSP

JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。

JSP程序从外观上很像ASP,但它实际上是Servlet,JSP程序运行时是由系统转化成servlet来执行的。

因为写Servlet程序,输出HTML太麻烦,所以出现了JSP。从编程人员的角度看,JSP程序的优缺点和ASP基本是一样的。

Servlet程序写后台代码很好,JSP程序输出HTML很方便,所以一种流行的开发方式是两者搭配,Servlet也可以用JAVA BEAN代替。

JSP程序可以将JAVA代码嵌入到网页<%%>标签中,下面的代码在网页上输出hello world。

<html>
<head>

<title>jsp程序</title>

</head>
<body>
  <% out.println(“helloworld”);%>
</body>

</html>

需要注意的是:<% %>标签中的内容是在服务器端运行的,只把结果输出到客户端,客户端看不到<% %>标签中的代码,只能看到其输出结果,所以上面的小例题,在客户浏览器上是这样的:

<html>
<head>

<title>jsp程序</title>

</head>
<body>
  hello world”

</body>

</html>

很容易想到,在<% %>嵌入JAVA代码,比如访问数据库的代码,将结果以out.println(“hello world”)(或=hello world)的形式输出,使网页有了与服务器资源交互的能力。

另外要注意的是,上面的程序执行顺序是:WEB服务器先执行<% %>中的代码,然后将代码的运行结果与JSP页面的HTML一起输出到客户端,一些初学者调试JSP程序中遇到一些困难,就是由于不了解JSP程序执行顺序造成的。

JSP内置对象

学习JSP,出了有HTML和JAVA语言基础外,最重要的学习JSP的内置对象的属性/方法,有关资料在网上很多。JSP的内置对象是已经实例化好了的现成对象,不需要用new操作符实例化它们。JSP的内置对象工作在JSP容器内(即支持JSP的WEB服务器)。

JSP主要有9个内置对象,这些对象大都是Servlet类的实例(从中可以看出JSP和Servlet的密切关系):

  1. request对象
    客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。

  2. response对象:
    response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。

  3. session对象:
    指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.

  4. out对象

out对象是JspWriter类的实例,是向客户端输出内容常用的对象。

  1. page对象

page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例。

  1. application对象

application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。

  1. exception对象

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。

(8)pageContext对象

pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。

(9)config对象

config对象是在一个Servlet初始化时,JSP容器向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)。

JSP编译指令

作用相当于高级语言的预处理指令。

JSP操作命令

注意JSP操作命令和JSP编译指令的不同,前者是运行时的,后者是编译时的。

JSP学习网址:http://www.w3cschool.cc/jsp/jsp-tutorial.html




服务器端技术及JSP相关推荐

  1. mysql jsp分页技术_一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数

    一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数 优点:1自己想出来的 2利用了MYSQL 数据库的本身 LIMIT 缺点:现在仅仅实现了 下一个页面功能 <% int ...

  2. JavaBean 技术与 JSP 开发模型练习题

    <JavaBean 技术与 JSP 开发模型练习题> 文章目录 单选题 多选题 判断题 填空题 JavaBean 技术与 JSP 开发模型 单选题 1. JSP Model2模型就是MVC ...

  3. JAVA-SUST实验一 JSP技术及JSP语法基础

    一.实验目的 1 了解MyEclipse 开发环境的构成 2 掌握MyEclipse 下JAVA EE开发环境的设置 3 掌握JSP技术及JSP语法的基础内容 二.实验内容 1.测试简单 jsp 文件 ...

  4. 我对服务器端技术开发的一点了解

    从事服务器端开发所需要了解的技术有如下: 1)tcp/ip协议,http协议 2)c or java or both 3)linux 4)数据结构和算法 从事服务器端开发的内容较多,我这里分为如下几类 ...

  5. 什么是JSP技术,JSP和Servlet的区别和联系?

    了解一项技术,首先要了解它为什么会出现,解决了之前的什么问题,作用是什么. 学习JSP技术之前,先看它出现的背景技术:Servlet点击打开链接 为什么会出现JSP技术? 使用Servlet产生动态页 ...

  6. JavaWeb技术之JSP

    目录 1. 什么是JSP 2. JSP为什么会出现 3.JSP中如何嵌套java代码 示例 jsp中的注释 4. JSP的原理 5. JSP的内置对象 1.request对象 2.response对象 ...

  7. 动态页面技术(JSP/EL/JSTL)

    1 JSP技术 1.1 jsp脚本和注释 jsp脚本:   1) <%java代码%> ----- 内部的java代码翻译到service方法的内部   2) <%=java变量或表 ...

  8. mysql jsp分页技术_一个非常简单的分页技术MYSQL+JSP 利用了mysql的LIMIT参数

    一个非常简单的分页技术MySQL(和PHP搭配之最佳组合)+jsp(SUN企业级应用的首选) 利用了MySQL(和PHP搭配之最佳组合)的LIMIT参数 优点:1自己想出来的 2利用了MySQL(和P ...

  9. JavaWeb——动态页面技术(JSP/EL/JSTL)

    静态页面与动态页面: 1.动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了--除非你修改页面代码.而动态网页则不然,页面代码 ...

最新文章

  1. ZJU-java进阶笔记 第七周(异常处理)
  2. 朴素贝叶斯(NaiveBayes)算法总结
  3. ASP.NET MVC5微信公众平台整合开发实战教程
  4. CSS实现的阴影效果
  5. Linux内存管理:内存描述之高端内存
  6. JavaScript 工作必知(九)function 说起 闭包问题
  7. 使用 Autofill 插件快速提交BUG
  8. 120 Python程序中的线程操作-队列
  9. WORD出错:UNDO之后布局错乱
  10. 计算机进入端口模式命令提示符,Win10使用命令提示符删除端口占用方法Win10查看端口占用状态...
  11. C语言银行排队系统仿真
  12. go 连接服务器 并存放图片_[本站大事件] 又更换服务器了 – 小文's blog
  13. 帝国cms弱口令登录(帝国cms后台密码忘记怎么办?)
  14. 树莓派 pcf8591 AD转换模块使用
  15. Redis学习之setex命令
  16. html盒子移动动画代码,详解盒子端CSS动画性能提升
  17. 《OnlineChat996》基于微信群聊的在线实时通信工具
  18. ie退出全屏快捷键_IE浏览器快捷键,IE浏览器全屏快捷键
  19. 华为 社招 C语言笔试,华为笔试C语言笔试题之3
  20. py218-基于Python+django的零食销售商城网站#毕业设计

热门文章

  1. Yearning SQL审核平台使用分享
  2. 开源企业内部IM系统搭建
  3. Scurity and Network-signature
  4. 01-Jsfiddle Vue start
  5. opencv对光流法的实现(python3)
  6. 视频| 什么是区块链,本质、意义和发展 8月22日(本周三)晚8点, 微信群在线讲座---区块链存储(下)...
  7. qemu运行虚拟机无反应,只输出一行提示信息:VNC server running on 127.0.0.1:5900
  8. Voronoi泰森多边形的实现
  9. 【Bug】No validator... javax.validation.constraints.NotBlank validating type java.lang.Integer
  10. 【Android】ImageView的maxWidth,maxHeight的使用