服务器端技术及JSP
服务器端技术及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的密切关系):
request对象:
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。response对象:
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。session对象:
指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象。
page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例。
application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
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相关推荐
- mysql jsp分页技术_一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数
一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数 优点:1自己想出来的 2利用了MYSQL 数据库的本身 LIMIT 缺点:现在仅仅实现了 下一个页面功能 <% int ...
- JavaBean 技术与 JSP 开发模型练习题
<JavaBean 技术与 JSP 开发模型练习题> 文章目录 单选题 多选题 判断题 填空题 JavaBean 技术与 JSP 开发模型 单选题 1. JSP Model2模型就是MVC ...
- JAVA-SUST实验一 JSP技术及JSP语法基础
一.实验目的 1 了解MyEclipse 开发环境的构成 2 掌握MyEclipse 下JAVA EE开发环境的设置 3 掌握JSP技术及JSP语法的基础内容 二.实验内容 1.测试简单 jsp 文件 ...
- 我对服务器端技术开发的一点了解
从事服务器端开发所需要了解的技术有如下: 1)tcp/ip协议,http协议 2)c or java or both 3)linux 4)数据结构和算法 从事服务器端开发的内容较多,我这里分为如下几类 ...
- 什么是JSP技术,JSP和Servlet的区别和联系?
了解一项技术,首先要了解它为什么会出现,解决了之前的什么问题,作用是什么. 学习JSP技术之前,先看它出现的背景技术:Servlet点击打开链接 为什么会出现JSP技术? 使用Servlet产生动态页 ...
- JavaWeb技术之JSP
目录 1. 什么是JSP 2. JSP为什么会出现 3.JSP中如何嵌套java代码 示例 jsp中的注释 4. JSP的原理 5. JSP的内置对象 1.request对象 2.response对象 ...
- 动态页面技术(JSP/EL/JSTL)
1 JSP技术 1.1 jsp脚本和注释 jsp脚本: 1) <%java代码%> ----- 内部的java代码翻译到service方法的内部 2) <%=java变量或表 ...
- mysql jsp分页技术_一个非常简单的分页技术MYSQL+JSP 利用了mysql的LIMIT参数
一个非常简单的分页技术MySQL(和PHP搭配之最佳组合)+jsp(SUN企业级应用的首选) 利用了MySQL(和PHP搭配之最佳组合)的LIMIT参数 优点:1自己想出来的 2利用了MySQL(和P ...
- JavaWeb——动态页面技术(JSP/EL/JSTL)
静态页面与动态页面: 1.动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了--除非你修改页面代码.而动态网页则不然,页面代码 ...
最新文章
- ZJU-java进阶笔记 第七周(异常处理)
- 朴素贝叶斯(NaiveBayes)算法总结
- ASP.NET MVC5微信公众平台整合开发实战教程
- CSS实现的阴影效果
- Linux内存管理:内存描述之高端内存
- JavaScript 工作必知(九)function 说起 闭包问题
- 使用 Autofill 插件快速提交BUG
- 120 Python程序中的线程操作-队列
- WORD出错:UNDO之后布局错乱
- 计算机进入端口模式命令提示符,Win10使用命令提示符删除端口占用方法Win10查看端口占用状态...
- C语言银行排队系统仿真
- go 连接服务器 并存放图片_[本站大事件] 又更换服务器了 – 小文's blog
- 帝国cms弱口令登录(帝国cms后台密码忘记怎么办?)
- 树莓派 pcf8591 AD转换模块使用
- Redis学习之setex命令
- html盒子移动动画代码,详解盒子端CSS动画性能提升
- 《OnlineChat996》基于微信群聊的在线实时通信工具
- ie退出全屏快捷键_IE浏览器快捷键,IE浏览器全屏快捷键
- 华为 社招 C语言笔试,华为笔试C语言笔试题之3
- py218-基于Python+django的零食销售商城网站#毕业设计
热门文章
- Yearning SQL审核平台使用分享
- 开源企业内部IM系统搭建
- Scurity and Network-signature
- 01-Jsfiddle Vue start
- opencv对光流法的实现(python3)
- 视频| 什么是区块链,本质、意义和发展 8月22日(本周三)晚8点, 微信群在线讲座---区块链存储(下)...
- qemu运行虚拟机无反应,只输出一行提示信息:VNC server running on 127.0.0.1:5900
- Voronoi泰森多边形的实现
- 【Bug】No validator... javax.validation.constraints.NotBlank validating type java.lang.Integer
- 【Android】ImageView的maxWidth,maxHeight的使用