JSP概述
- 格式:ppt
- 大小:704.50 KB
- 文档页数:88
第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结合使用。
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技术介绍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 技术概述 在 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 引擎时所必须遵从的⼀些规则。
什么是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本质上是⼀个servlet: Jsp在进⾏展⽰数据时,web容器会先将jsp转换给⼀个Servlet,然后再将servlet转换成字节码⽂件,最后再进⾏运⾏,因此jsp 的效率是⽐较低的。
JSP指令: 指令的作⽤:1配置jsp页⾯ 2导⼊外部资源 格式: <$@ 指令名称:属性名:属性值 %> 指令的分类: 1page:配置jsp页⾯ 属性:contentType,属性值(text/html;charset=utf-8)//⽤于设置jsp页⾯编码格式 import:导包和java中的导包⼀样 errorPage:当页⾯发送异常,跳转到指定页⾯ isErrorPage:表⽰当前页是否是错误页,当值为true时,则可以使⽤exception对象 指令2 include:页⾯包含,导⼊页⾯的资源⽂件,可以导⼊Healde footer等 语法:<%include file='页⾯⽂件路径'%> 指令3 taglib:导⼊资源(⼀般可以导⼊标注标签库 jstl等) <%@taglib prefix="c" uri=“标签库路径”%> * prefix:前缀,⾃定义的 jsp九⼤内置对象 pageContext 作⽤:在当前页⾯进⾏数据共享,可以获取其他⼋个对象 request :⼀次请求访问多个资源,可以进⾏请求转发 session :⼀次会话间进⾏数据共享。
application :全局对象,所有⽤户进⾏数据共享, respone 响应对象: out 输出对象 Config servilet的配置对象 exception 异常对象。