当前位置 : 主页 > 编程语言 > java >

写一篇博文介绍JSP

来源:互联网 收集:自由互联 发布时间:2021-06-25
一、JSP概述 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有

一、JSP概述

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

JSP全名为Java Server Pages,其根本是一个简化的Servlet设计。它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件。

  JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。 

jsp是什么?

sun公司制定的一种服务器端动态页面技术规范。
JSP其实是一个以“jsp”为后缀的文件,该文件的内容主要是html和少量的java代码,容器会将jsp文件自动转换成一个servlet然后执行。

    • jsp的组成 
      • jsp = html + java脚本 + jsp标签(指令)
      • jsp中可直接使用的对象一共有9个,被称之为9大内置对象
    • 3种java脚本:  <%…%>:写java代码片段,(类似方法)  <%=…%>:用于输出,用于输出一条表达式(或变量)的结果。  <%!…%>:声明,用来创建类的成员变量和成员方法(类似与类)
    • jsp注释:<%– … –%>  当服务器把jsp编译成java文件时已经忽略了注释部分!

二、JSP处理过程

  • 就像其他普通的网页一样,您的浏览器发送一个HTTP请求给服务器。
  • Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
  • JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
  • JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
  • Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
  • Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
  • Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。


三、JSP和SERVLET关系、JSP技术原理

四、JSP三大指令
1.page指令

用于定义JSP页面的各种属性

 

可以在一条page指令的import属性中引入多个类或包,其中的每个包或类之间使用逗号分隔:

<%@ page import="java.util.Date,java.sql.*,java.io.*"%>

上面的语句也可以改写为使用多条page指令的import属性来分别引入各个包或类:

<%@ page import="java.util.Date"%>

<%@ page import="java.sql.*"%>

<%@ page import="java.io.*"%>

JSP 引擎自动导入下面的包:

java.lang.*

javax.servlet.*

javax.servlet.jsp.*

javax.servlet.http.*

<%@ page 
[ language="java" ]  指定语言为java
[ extends="package.class" ]  指定继承的类,当指明继承普通类时需要实现Servlet接口的相应方法
[ import="{package.class | package.*}, ..." ]   //指定引入的包 
[ session="true | false" ]    //默认session为true,表示内置存在session对象,可以直接调用,如果没有,也可以通过request.getSession()获取
[ buffer="none | 8kb | sizekb" ]  //缓存默认为8kb
[ autoFlush="true | false" ]  //缓存默认自动清空
[ isThreadSafe="true | false" ] //是否是线程安全的,默认是true,就是是否支持多线程调用.
[ info="text" ]  //提示信息,热字符串
[ errorPage="relative_url" ]  errorPage 的意思是设置当前页面要引入错误页面。也就是浮面当前页面如果出现错误就会跳转到errorPage所指定的页面。 
 [ isErrorPage="true | false" ]  //当前页面是否是错误页面,默认为false 
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]   //设置页面内容编码
[ pageEncoding="characterSet | ISO-8859-1" ]  //当前页面编码
[ isELIgnored="true | false" ]  //是否支持EL表达式
%>

2.Include指令

include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。

语法:

<%@ include file="relativeURL"%>

其中的file属性用于指定被引入文件的路径。路径以“/”开头,表示代表当前web应用。

细节:

被引入的文件必须遵循JSP语法。

3.taglib指令

Taglib指令用于在JSP页面中导入标签库

五、九大内置对象

  • 在jsp中无需声明即可直接使用的9个对象 
    • out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
    • config(ServletConfig):对应“真身”中的ServletConfig;
    • page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象,引用为Object类型;
    • pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
    • exception(Throwable):只有在错误页面中可以使用这个对象;
    • request(HttpServletRequest):即HttpServletRequest类的对象;
    • response(HttpServletResponse):即HttpServletResponse类的对象;
    • application(ServletContext):即ServletContext类的对象;
    • session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。
  • pageContext
    • Servlet中有三大域,而JSP中有四大域!  ServletContext:整个应用程序  session:整个会话(一个会话中只有一个用户)  request:一个请求链!  pageContext:一个jsp页面!这个域是在当前jsp页面和当前jsp页面中使用的标签之间共享数据!  域对象  代理其他域:pageContext.setAttribute(“xxx”, “XXX”, PageContext.SESSION_SCOPE);  全域查找:pageContext.findAttribute(“xxx”);从小到大,依赖查找!  获取其他8个内置对象
网友评论