JSP基础知识_1

一.JSP简介

JSP是简化Servlet编写的一种技术,它将Java代码和HTML语句混合在同一个文件中编写,只对网页中的要

动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写

JSP 页面的文件扩展名必须为.jsp

在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),

没有嵌套在<%和%>之间的内容被称之为JSP的模版元素

JSP中的Java代码可以使用out.println语句将其他Java程序代码产生的结果字符串输出给客户端,也可以使用

System.out.println语句将它们打印到命令行窗口。

在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%= 和 %>之中,

就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号。

二.JSP运行原理

•WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。

•每个JSP 页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet

的class类文件,然后再  由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP

页面翻译成的Servlet程序。

•JSP规范也没有明确要求JSP中的脚本程序代码必须采用Java语言,JSP中的脚本程序代码可以采用Java语言之外的其他

脚本语言来编写,但是,JSP页面最终必须转换成Java Servlet程序。

•可以在WEB应用程序正式发布之前,将其中的所有JSP页面预先编译成Servlet程序。

从上得出:JSP本质上是一个Servlet,看源代码更能理解

若项目发布在tomcat中,可以到tomcat的work文件-->Catalina-->localhost-->项目名-->jsp-->org

-->apache-->jsp下找到jspname_jsp.java和jspname_jsp.class

Jsp与Servlet的关系

1、 JSP文件必须在JSP服务器内运行。

2、 JSP文件必须生成Servlet才能执行。

3、 每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。

4、 JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。

5、 JSP页面的静态内容、JSP脚本都会转换成Servlet的xxxService()方法,类似于自行创建Servlet时service()方法。

6、 JSP声明部分,转换成Servlet的成员部分。所有JSP声明部分可以使用private,protected,public,static等修饰符,其他地方则不行。

7、 JSP的输出表达式(<%= ..%>部分),输出表达式会转换成Servlet的xxxService()方法里的输出语句。

8、 九个内置对象要么是xxxService()方法的形参,要么是该方法的局部变量,所以九个内置对象只能在JSP脚本和输出表达式中使用。

三.JSP九个内置对象

在以下每个jspname_jsp.java中_jspService方法中声明这九个内置对象,所以JSP页面才能在不声明该对象的情况下在<% %>中使用他们

 1 public void _jspService(HttpServletRequest request, HttpServletResponse response)
 2         throws java.io.IOException, ServletException {
 3
 4       PageContext pageContext = null;//页面上下文,很重要,可以获取页面的一切信息,可以获取其他八个隐藏对象
 5      HttpSession session = null;//代表浏览器和服务器的一次会话
 6      ServletContext application = null;//代表当前web应用,能获取web应用的初始化参数
 7      ServletConfig config = null;//代表当前JSP对应的servlet的对象,几乎不使用,因为需要为该JSP配置初始化参数
 8      JspWriter out = null;//JspWriter对象,常调用out.println()方法,将字符串打印到浏览器,eg out.println("<br/>")换行
 9      Object page = this;//指向当前JSP对应的Servlet对象的应用,但为Object类型,只能调用Object的方法,几乎不用
10     JspWriter _jspx_out = null;
11     PageContext _jspx_page_context = null;
12
13    ... ...
14     Throwable exception =
15     org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
16    if (exception != null) {
17     response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
18      //exception只有在声明了page指令的isErrorPage=true时,才能使用,如下声明:
19      //在JSP文件首部声明<% page isErrorPage="true" %>
20 }

上面九个内置对象中,以下4个称为域对象

pageContext,request,session,application,他们都有以下属性相关方法:

1.Object getAttribute(String name):获取指定的属性

2.Enumeration getAttributeNames():获取所有的属性的名称组成的Enumeration

3.removeAttribute(String name):移除指定的属性

4.void setAttribute(String name,Object o):设置属性

它们的作用域范围如下:

pageContext:属性的作用范围仅限于当前JSP页面

request:属性的作用范围仅限于同一个请求

session:属性的作用范围仅限于同一次会话,即浏览器从打开到关闭称为一次会话(在此期间会话不失效)

application:属性的作用范围限于当前web应用,最大的属性作用范围,只要在一处设置访问,在各个JSP或Servlet中都可以获取到

四.JSP与Servlet的应用比较

•JSP是一种以产生网页显示内容为中心的WEB开发技术,它可以直接使用模版元素来产生网页文档的内容。
    •JSP页面的源文件要比Servlet源文件简单,并且JSP页面的开发过程要比Servlet的开发过程简单得多。
    •JSP引擎可以对JSP页面的修改进行检测,并自动重新翻译和编译修改过的JSP文件。
    •JSP技术是建立在Servlet技术基础之上的,所有的JSP页面最终都要被转换成Servlet来运行。

•在大型WEB应用程序的开发中,Servlet与JSP经常要混合使用,各司其职,Servlet通常用作控制组件,并处理

一些复杂的后台业务,JSP则作为显示组件。

•一次响应过程可以划分成几个功能模块来协同完成,首先由Servlet完成流程控制和业务处理,并将结果数据存储

在request或session域中,然后将请求转发(forward)到JSP页面,再由JSP页面从request或session域中取出结

果数据并完成响应内容的输出。通过这种方式实现业务逻辑与显示内容的分离,从而将应用程序开发者和网页作者的

工作分离。

五.请求的转发与重定向

   1)请求转发

      Servlet请求转发实现过程:

1 public void doGet(HttpServletRequest request, HttpServletResponse response)
2             throws ServletException, IOException {
3
4         System.out.println("forwardServlet doGet");
5         //1.在doXxx()中调用HttpServletRequest的getRequestDispatcher(String path),并传入转发地址
6         RequestDispatcher requestDispatcher=request.getRequestDispatcher("testServlet");
7         //2.调用HttpServletRequest的forward(request,response),进行请求转发
8         requestDispatcher.forward(request, response);
9     }

JSP请求转发实现:

同理

1 <body>
2     <%
3       //请求转发
4      request.getRequestDispatcher("/jsp_result.jsp").forward(request, response);
5     %>
6 </body>

2)重定向

Servlet重定向实现过程:

1 public void doGet(HttpServletRequest request, HttpServletResponse response)
2             throws ServletException, IOException {
3
4         System.out.println("RedirectServlet doGet");
5         //在doXxx()中执行请求的重定向,直接调用response.sendRedirect(String path),并传入要重定向的地址
6         response.sendRedirect("testServlet");
7     }

JSP重定向实现过程:

1 <body>
2     <%
3        //重定向
4        response.sendRedirect("jsp_result.jsp");
5     %>
6  </body>

3)两者的区别

  本质区别是:请求转发只发送一次请求,而重定向则发送两次请求
  具体如下
  (1)转发:地址栏的请求地址是初次发出请求的地址
    重定向:地址栏的请求地址显示为最后重定向的地址
  (2)转发:在最终的Servlet中,request对象和中转的那个request是同一个对象
    重定向:在最终的Servlet中,request对象和中转的那个request不是同一个对象
  (3)转发:只能转发给当前web应用的资源
    重定向:可以重定向到任何资源
  (4)转发:path中/ 代表当前web应用的根目录
    重定向:path中/ 代表当前web站点的根目录

时间: 2024-10-29 19:09:41

JSP基础知识_1的相关文章

Java学习-033-JavaWeb_002 -- 网页标记语言JSP基础知识

JSP 是 Sun 公司提倡的一门网页技术标准.在 HTML 文件中,加入 Java 代码就构成了 JSP 网页,当 Web 服务器访问 JSP 请求的时候,首先执行其中的 Java 程序源码,然后以 HTML 形式返回, Java 程序运行在服务端,最终显示在客户端.JSP 源于 Java,因而 JSP 的运行环境依赖JDK,当然也需要服务器软件(例如 Tomcat 等). 一.运行环境搭建 1.安装 JDK,请参阅之前的博文:Java学习-001-JDK安装配置 2.Tomcat部署及环境变

jsp基础知识(1)

1.JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. 2.JSP技术也是一种动态web资源的开发技术 因为JSP技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp时,web服务器会传递web开发相关的对象给jsp,jsp通过这些对象,可以与浏览器进行交互,所以jsp当然也是一种动态web资源开发技术. 3.JSP和Servlet的比较       本人是先学Servlet的,Servlet

Deep learning:一(基础知识_1)

前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下machine learning的基础知识,见网页:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning.内容其实很短,每小节就那么几分钟,且讲得非常棒. 教程中的一些术语: Model repr

转载 Deep learning:一(基础知识_1)

前言: 最近打算稍微系统的学习下deep learing的一些理论知识,打算采用Andrew Ng的网页教程UFLDL Tutorial,据说这个教程写得浅显易懂,也不太长.不过在这这之前还是复习下machine learning的基础知识,见网页:http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=DeepLearning.内容其实很短,每小节就那么几分钟,且讲得非常棒. 教程中的一些术语: Model repr

JSP基础知识?Cookie和Session(五)

JSP Cookie 处理 Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持.JSP脚本通过request对象中的getCookies()方法来访问这些cookie,这个方法会返回一个Cookie对象的数组. 1.public void setDomain(String pattern) 设置cookie的域名,比如w3cschool.cc 2.public String getDomain() 获取coo

jsp基础知识一

jsp技术是在html文件内容中嵌入java代码,jsp页面发布后,由web容器的jsp引擎将jsp页面转化成java类(实际是servlet类的子类),并编译生成class文件(页面第一次访问时). 1.jsp注释 格式: <%--  注释内容  --%> jsp注释与html注释内容不同,jsp注释不会输出到客户端(浏览器),而html注释会输出到客户端. html注释格式: <!-- 注释内容 --> 2.jsp声明 格式: <%! 表达式1; 表达式2; %>

JSP基础知识

1.JSP    [1] 简介      > HTML      - HTML擅长显示一个静态的网页,但是不能调用Java程序.      > Servlet     - Servlet擅长调用Java程序和后台进行交互,但是它不擅长显示一个完整的HTML页面. > 我们希望创建一个新的技术 HTML + Servlet 强强联合 > JSP全称Java Server Pages,顾名思义就是运行中java服务器中页面,也就是在我们JavaWeb中的动态页面,其本质就是一个Serv

jsp 基础知识之指令元素

由于考研和结业的事情,这里荒废了许久,而如今重新捡起来,是因为带到公司的碳素笔没有油了......    jsp的指令元素:通常以<%@开始,以%>结尾. jsp主要包括三种指令元素:page指令,include指令,taglib指令.指令元素在客户端是不可见的,它是被服务器解释并执行的. page:页面指令,用于定义整个JSP页面的属性和这些属性的值.例如:<%@ page contentType="text/html";charset="GB2312&q

JSP基础知识(一)

web.xml的作用: 1.配置JSP,Servlet,Listener,Filter,标签库,JSP属性 2.配置JAAS授权认证,资源应用,web首页设置JSP的本质是Servlet(web应用中每个JSP页面都会由Servlet容器生成对应的Servlet)JSP包括静态的html页面代码和动态的Java脚本两部分Servlet类源代码包括init(),destroy(),service()方法JSP的四种基本语法: jsp注释:<%--注释--%> jsp声明:<%!--%>