jsp概述
JSP技术简介

第1章JSP技术简介JSP(Java Server Pages)技术是由Sun公司发布的用于开发动态Web应用的一项技术。
它以其简单易学、跨平台的特性,在众多动态Web应用程序设计语言中异军突起,在短短几年中已经形成了一套完整的规范,并广泛地应用于电子商务等各个领域中。
在国内,JSP 现在也得到了比较广泛的重视,得到了很好的发展,越来越多的动态网站开始采用JSP技术。
本章就对JSP及其相关技术进行简单的介绍。
1.1 认识HTTP协议HTTP协议(Hypertext Transfer Protocol,超文本传送协议)是WWW服务器使用的主要协议,对HTTP协议细节的基本理解是编写JSP或Java小程序的开发人员所必需的。
因此在学习JSP技术之前有必要更加仔细地研究一下HTTP消息的格式(这里的讨论源自HTTP/1.1协议规范。
参见规范2616,网址为/rfc/rfc2616.txt)。
HTTP 协议的关键部分有HTTP请求和HTTP响应,以及客户端Web程序设计的一些基础知识,在第4章4.4节将会具体介绍。
1.2 客户端Web程序设计介绍Web浏览器现已成为深受大多数用户喜爱的用户界面。
HTML语言提供了丰富的控件,第三方厂商提供了Visual Basic编写的数百个额外的控件,这些都使得Web浏览器独具特色。
虽然Web浏览器与传统的GUI界面有一定的差距,但它提供了一种独立而又简单的方法来访问分布式资源,尤其是Internet资源。
而且越来越多的客户端Web程序扩展技术变得更加成熟,出现了包括CSS、JavaScript、VBScript、动态HTML、Java1.1.Applet应用程序等技术在内的客户端Web程序设计技术,它们的相互结合使得Web程序更加迷人。
下面简单介绍几种常用的客户端Web程序设计技术的特点。
本书假定读者对这些技术都有一定的了解,不对这些技术作详细介绍。
1.2.1 CSSCSS(Cascading Style Sheets)称为层叠样式表,是动态HTML技术的一个部分,但可以和HTML结合使用。
5.1 JSP概述

5.1 5.2 5.3 5.4 5.5 5.6
JSP概述 JSP语法 JSP隐含对象 JSP中的Java Bean组件 JSP连接数据库 JSP应用实例
1
5.1 JSP 概述
1、JSP技术简介 2、JSP运行环境 3、JSP组成 4、JSP使用范围 5、JSP生命周期 6、JSP开发示例
3
1、JSP技术简介
(3) JSP有什么优点? JSP简化了Web动态内容的传输,可以让Web 网页开发人员和设计人员非常容易的创建和维 护动态网页。JSP(Java Server Page)的出现使网 页的设计与开发变得更为灵活。 JSP技术把用户界面的设计与实现从系统中分 离出来,使得网页设计人员能够在不改变底层 动态内容的前提下改变整个网页布局。 对客户端的要求很低,只要有浏览器即可。
19
6、JSP开发示例
<title>用于定义标题,显示在浏览器的顶端。 <body>定义文件的格式,并在其中书写正文。 <h1>为一级标题标记,将字体变粗变大加宽 , 程度与级数反比。 <h3>为三级标题标记,将字体变粗变大加宽。 <!--注解--> 注释,不会在浏览器中显示出来。 <p> 段落标记,用于分段。
18
6、JSP开发示例
(4) 注意事项 注意url地址中的jsp后缀不要忘了。 运行jsp程序无需事先编译。只要将jsp程序放 在正确的目录中,并启动服务器即可。 (5) JSP程序相关内容 例5-1中的html标记成对出现。例如,以<html> 开头,以</html>结尾。 <html>标记用于声明一个html文件。 <head>用于提供文件的整体说明信息。
JSP简介

JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。
用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。
网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。
插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP与Java Servlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。
目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
Java Servlet 是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。
JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
1.JSP技术的强势(1)一次编写,到处运行。
在这一点上Java比PHP更出色,除了系统之外,代码不用做任何更改。
JSP技术介绍

JSP技术介绍1.技术介绍JSP即Java Server Page,中⽂全称是Java服务器语⾔。
它是由Sun Microsystems公司倡导、许多公司参与建⽴的⼀种动态⽹页技术标准,它在动态⽹页的建设中有强⼤⽽特别的功能。
JSP是Java阵营中最具代表性的解决⽅案。
使⽤JSP,不仅能够制作HTML静态页,还能够制作包含动态数据的⽹页。
2. JSP的运⾏原理在JSP第⼀次获得来⾃于客户端浏览器的请求时,JSP⽂件将被JSP引擎(JSP engine)转换成⼀个Servlet,即将”.jsp”⽂档编译成Java Class⽂档。
当Servlet引擎接收到请求后,如果设置了使⽤最新的JSP,它就会去找JSP⽂档,检查该⽂档在上次编译后是否改动过。
如果改动过,就会重新编译⽣成新的Servlet,最终将请求转交给编译好的Servlet引擎执⾏。
如图2所⽰。
图2 JSP运⾏原理图在编译时如果发现JSP⽂件有任何语法错误,转换过程将中断,并向客户端发出出错信息,如果编译成功,则所转换产⽣的Servlet代码被编译,然后该Servlet被JSP引擎加载到内存中。
此时JSP引擎还请求了jspInit()⽅法的执⾏,并对此Servlet初始化。
JspInit()⽅法在Servlet的⽣命周期中只被请求⼀次,然后将被调⽤来处理客户端的请求和回复操作。
对于所有随后对该JSP档的请求,服务器将检查该JSP档⾃最后⼀次被存取后是否经过修改。
如果没有修改,则将请求交还给还在内存中的Servlet的jspService()⽅法,执⾏回复操作。
由于Servlet始终驻于内存,所以响应是⾮常快的。
Jsp页⾯在第⼀次访问时由于要转化和编译,运⾏速度较慢,但是当第⼆次访问该页时,由于⽂件已经被编译成字节码⽂件,所以速度⾮常得快。
3. JSP的⽣命周期.jsp⾸先会被服务器编译为.java档,然后服务器⾃动编译.java档⽣成.class档,如果.jsp档的内容改变,服务器会重新⽣成.java⽂件和.class⽂件。
JSP技术简介

JSP技术简介⼀、 JSP 技术概述 在 Sun 正式发布 JSP(JavaServer Pages) 之后,这种新的 Web 应⽤开发技术很快引起了⼈们的关注。
JSP 为创建⾼度动态的 Web 应⽤提供了⼀个独特的开发环境。
按照 Sun 的说法, JSP 能够适应市场上包括 Apache WebServer 、 IIS4.0 在内的 85% 的服务器产品。
即使您对 ASP "⼀往情深",我们认为,关注 JSP 的发展仍旧很有必要。
㈠ JSP 与 ASP 的简单⽐较 JSP 与 Microsoft 的 ASP 技术⾮常相似。
两者都提供在 HTML 代码中混合某种程序代码、由语⾔引擎解释执⾏程序代码的能⼒。
在 ASP 或 JSP 环境下, HTML 代码主要负责描述信息的显⽰样式,⽽程序代码则⽤来描述处理逻辑。
普通的HTML 页⾯只依赖于 Web 服务器,⽽ ASP 和 JSP 页⾯需要附加的语⾔引擎分析和执⾏程序代码。
程序代码的执⾏结果被重新嵌⼊到 HTML 代码中,然后⼀起发送给浏览器。
ASP 和 JSP 都是⾯向 Web 服务器的技术,客户端浏览器不需要任何附加的软件⽀持。
ASP 的编程语⾔是 VBScript 之类的脚本语⾔, JSP 使⽤的是 Java ,这是两者最明显的区别。
此外, ASP 与 JSP 还有⼀个更为本质的区别:两种语⾔引擎⽤完全不同的⽅式处理页⾯中嵌⼊的程序代码。
在 ASP 下, VBScript 代码被 ASP 引擎解释执⾏;在 JSP 下,代码被编译成 Servlet 并由 Java 虚拟机执⾏,这种编译操作仅在对 JSP 页⾯的第⼀次请求时发⽣。
㈡运⾏环境 Sun 公司的 JSP 主页在 /products/jsp/index.html ,从这⾥还可以下载 JSP 规范,这些规范定义了供应商在创建 JSP 引擎时所必须遵从的⼀些规则。
第1章 JSP简介

<%=sum %>
<h5;HTML>
4.Web服务目录
必须将编写好的JSP页面文件保存到Tomcat服务 器的某个Web服务目录中,只有这样,远程的客 户才可以通过浏览器访问该Tomcat服务器上的 JSP页面 . 根目录: E:\Tomcat5.5\webapps\Root webapps下的任何一个子目录都可以作为一个 Web服务目录 修改Tomcat服务器安装目录下conf目录中的 server.xml文件来设置新的Web服务目录。
<%@
page
contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan>
<h3>这是一个简单的JSP页面</h3>
<% int i, sum=0;
for(i=1;i<=100;i++)
{ sum=sum+i;
}
%>
<h5> 1到100的连续和是:
5.端口号
1. 8080是Tomcat服务器的默认端 号口
2. 修改Tomcat服务器的conf目录 下的主配置文件server.xml可以 更改端口号.
6.JSP运行原理
当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首 先将JSP页面文件转译成一个java文件,并编译这个java文件生成字节码文 件,然后执行字节码文件响应客户的请求.
<Java实用教程>(第2版)
第1章 JSP简介
1. 什么是JSP JSP(Java Server Pages)是基于Java 语言的一种Web应用开发技术,利用这 一技术可以建立安全、跨平台的先进动 态网站。如今,许多著名的Web网站都 使用了JSP技术。
什么是jsp

什么是jsp1、什么是jsp呢?实际上jsp就是⼀个servlet在html页⾯中嵌⼊我们的java脚本jsp的执⾏过程1、翻译阶段jsp在进⾏请求的时候会先被翻译成java⽂件2、编译阶段在将java⽂件编译成.class⽂件3、执⾏将处理之后的结果推送到我们的页⾯进⾏展⽰如果我们jsp页⾯第⼆次访问直接加载编译好的.class⽂件,如果说第⼆次加载整整个⽂件,它修改了会再次进⾏翻译,在编译在执⾏2、jsp页⾯元素组成1、page指令作⽤:设置内部的多个属性定义整个页⾯的属性设置的属性在整个页⾯都可以使⽤2、⼩脚本和表达式⼩脚本: <% ⼩脚本 ---java代码 %>表达式: <%= %> 你可以堪称是输出语句3、静态内容HTML静态⽂本4、指令:以“<%@ ” 开始,以“%> ” 结束5、声明 --⽅法的声明<%! ⽅法 %>6、注释<%-- 客户端不能查看到 --%>2、jsp中使⽤jdbc访问数据库需求:查询学⽣表信息展⽰到我们的jsp页⾯ jsp+jdbc 采⽤三层架构⽅式采⽤的是三层架构的格式1、将我们⽤的三层架构的包打出来2、编写我们的basedaoz直接将我们之前写好的basedao拿过来使⽤3、编写我们的实体对象(student)public class StudentEntity {private int stuId;private String stuName;private String gender;private int age;private Date birthday;private int studentNO;private int ClassID;private String city;private String email;public int getStuId() {return stuId;}public void setStuId(int stuId) {this.stuId = stuId;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public int getStudentNO() {return studentNO;}public void setStudentNO(int studentNO) {this.studentNO = studentNO;}public int getClassID() {return ClassID;}public void setClassID(int classID) {ClassID = classID;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}4、编写dao层接⼝//查询学⽣表中所有信息public List<StudentEntity> getStuList(String sql);5、编写dao接⼝实现PreparedStatement pst = null;ResultSet rs = null;@Overridepublic List<StudentEntity> getStuList(String sql) {//声明⼀个最终返回的集合List<StudentEntity> stulist = new ArrayList<StudentEntity>(); //连接数据库Connection connection=BaseDao.getConnection();//执⾏sql--先产⽣⼀个PreparedStatementtry {pst = connection.prepareStatement(sql);rs = pst.executeQuery(); //拿到结果集while(rs.next()) {//声明⼀个学⽣对象StudentEntity student = new StudentEntity();student.setStuId(rs.getInt("stuId"));student.setStuName(rs.getString("stuName"));student.setAge(rs.getInt("age"));student.setCity(rs.getString("city"));stulist.add(student);//将对象添加到集合中}} catch (SQLException e) {e.printStackTrace();}return stulist;}6、编写service接⼝//查询student表所有信息public List<StudentEntity> findAll();7、编写service接⼝实现//实例化dao层对象StudentDaoImpl StudentDao = new StudentDaoImpl();@Overridepublic List<StudentEntity> findAll() {//编写查询sqlString sql = "select * from studentinfo";//调⽤dao层中的查询⽅法List<StudentEntity> userlist =StudentDao.getStuList(sql);return userlist;}8、编写jsp---stuinf.jsp将我们学⽣信息展⽰到页⾯中<%@page import="java.util.List"%><%@page import="com.dzqc.testStu.entity.StudentEntity"%><%@page import="com.dzqc.testStu.service.impl.StudentServiceImpl"%> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><table border="2" align = "center"><caption>学⽣信息列表</caption><tr><td>学号</td><td>姓名</td><td>年龄</td><td>城市</td></tr><!-- 读取业务层数据 --><%//实例化业务层对象StudentServiceImpl studentServiceImpl = new StudentServiceImpl();//调⽤查询学⽣多有的信息⽅法// List<StudentEntity> stulist =studentServiceImpl.findAll();List<StudentEntity> stulist = studentServiceImpl.findAll();for(int i = 0 ; i<stulist.size();i++){StudentEntity stu =stulist.get(i);%><tr><td><%=stu.getStuId() %></td><td><%=stu.getStuName() %></td><td><%=stu.getAge() %></td><td><%=stu.getCity() %></td></tr><%}%></table></body></html>。
JSP脚本技术概述

三、JSP程序的运行原理与生命周期
JSP代码在JSP容器中的处理过程是,服务器在第一次 获 得 来 自 客 户 端 的 JSP 请 求 时 , JSP 容 器 将 被 请 求 的 JSP文件转换成一个Servlet,然后由容器将转换成的 Servlet程序编译成一个字节代码文件(.class)。 用户第一次请求一个JSP时,响应速度会比较慢。 如果对该JSP的请求不是第一次,则检查该JSP是否被 修改过,如果修改过则重新进行编译并装入。在生成 Servlet后,Web容器将为该Servlet创建一个实例。
上机实践题:
1. 编写网上书店。
响应客户请求的JSP实例:
14: 单位:
15: <INPUT TYPE=TEXT SIZE=60 NAME=work>
16: <BR>
17: 专业:
18: <SELECT NAME=prof SIZE=1 >
19:
<OPTION>计算机应用
20:
<OPTION>计算机软件技术
21:
<OPTION>网络工程
三、JSP程序的运行原理与生命周期
请求处理阶段:在初始化完成后,容器将调用Servlet的service() 方法,该方法会调用JSP的jspServiec()方法来处理客户的请求, 并且对该JSP的所有后继请求都由该JSP的实例来处理,由于该实 例一直驻留在内存中,所以响应速度会很快。如果有多个客户同 时请求该JSP时,JSP容器会创建多个线程,每个客户请求由一个 线程来处理。 终止阶段:当Web容器不再需要该JSP生成的Servlet或该Servlet 的一个新实例正在装入时,则Web容器调用Servlet的destroy()方 法,该方法会调用JSP的jspDestroy()方法,以释放JSP所占的资 源。在系统资源不足时,也可能会调用该方法,将Servlet从内存 中移去。