Jsp学习总结(一)

最近老是失眠,还好我灵鸡一动,学习了jsp(得劲)。

Jsp和Servlet的本质是一样的,Jsp最终被编译成Servle才能运行,或者说jsp只是生成Servlet的草稿文件。

Jsp特点就是在HTML中嵌入java代码,或者使用各种Jsp标签,包括自定义标签,动态的提供页面内容,现在发展为表现层技术。
(其他表现层的技术:FreeMarker,Velocity,Tapestry等,其中Jsp应用最为广泛)

Jsp的本质是Servlet。Jsp页面由两部分组成:        
        静态部分:标准的HTMl标签,静态的页面内容,与HTML页面相同
        动态部分:受Java代码控制的内容,这些内容由java脚本动态生成

Jsp变异之后会变成Servletjava代码,比如原本一个叫zpoor.jsp,编译之后就变成了zpoor_jsp.java和zpoor_jsp.class文件,Tomcat的work下的localhost文件夹中编译之后的代码。

Jsp工作原理结论:
    Jsp文件必须在jsp服务器内运行。
    每个Jsp文件都必须生成Servlet才能执行
    每个Jsp页面的第一个访问者速度很慢,因为必须等待Jsp编译成Servlet
    Jsp页面的访问者无需安装任何客户端,不需要安装可以运行java的环境,因为Jsp页面输出的标准的HTMl页面

Jsp注释:(源代码看不到)
    <%-- 注释内容 --%>

HTML注释:(源代码可以看到)
    <!-- 注释内容 -->

Jsp声明:(声明变量和方法:当然他自然会装换成Servlet的成员变量和成员方法,Jsp声明依然符合java语法)
    <%! 声明部分 %>

注意:jsp声明定义的方法和变量可以使用private 、public修饰符也可以使用static,将其变成类属性或者类方法,但是不能使用
         abstract修饰部分的方法,因为抽象方法会导致Jsp对应Servlet变成抽象类,倒置无法实例化。
         (Jsp中声明中独立存在的方法,知识一种假象)

Jsp输出表达式:
    <%= 表达式 %>
    输出表达式语法后面不能有分号

Jsp的3个编译指令:    
    page:该指令是针对当前页面的指令
    include:用于指定包含另一个页面
    taglib:用于定义和访问自定义标签(Jsp新特性)

语法:
            <%@ 编译指令名  属性名="属性值"%>

page指令(一般位于Jsp页面的顶端,一个Jsp可以包含多个page指令):
    language:声明脚本语言类型,一般是java,只能是java
    extends:指定jsp页面编译之后所产生的java类所继承的父类或者接口
    import:用来导入包
    session:jsp页面是否需要HttpSession
    buffer:指定jsp页面的缓冲区的大小,默认值为8kb
    autoFlush:缓冲区溢出时,是否强制输出缓冲区的内容
    info:设置该jsp程序的信息
    errorPage:指定错误处理界面
    isErrorPage:设置本jsp程序是否为错误处理程序
    pageEncoding:设置生成网页的字符集编码

include指令:
        把一个外部文件嵌入当前的jsp页面中,同时解析这个页面的Jsp语句,这是静态include语句,他会把目标页面的其他编译指令也包含进来如果两个页面的编译指令冲突,页面就会出错,但是动态的include则不会。

语法<%@ include file="文件路径/文件名"%>

Jsp的7个动作指令:
        编译指令是通知Servlet引擎处理消息
        动作指令知识运行时的动作

jsp:forward:执行页面转向,将请求的处理转发到下一个页面
        jsp:param:传递参数,必须和其他支持参数的标签一起使用
        jsp:include:动态的引入一个jsp页面
        jsp:plugin:下载javaBean和Applet到客户端执行
        jsp:useBean:创建一个useBean的实例
        jsp:setProperty:设置javaBean实例的属性值
        jsp:getProperty:输出javaBean实例的属性值

forward指令:
        将页面的请求转发到一个新的页面,可以是静态的HTML页面,也可以是动态的jsp页面,或者转发到容器中的Servlet
        语法:
            对于jsp1.0:
                <jsp:forward page="URL">
            对于jsp1.1:(用于转发时增加额外的请求参数)
                <jsp: forward page="URL">
                    <jsp:param.../>
                </jsp:forward>

注意:
            执行forward指令转发请求时,客户端的请求参数不会丢失。表面上他是将用户请求转发到另一个新的页面,实际上知识采用了新的界面来对用户生成相应,所以说,请求还是一次请求,作用请求参数和请求属性都不会改变。

include指令:
        他是一种动态的include指令,用于包含某个页面,他不会导入被include页面的编译指令,只导入页面的body内容插入本页面。
            语法(常用):
                <jsp:include page="URL" flush="true|false">
                    <jsp:param.../>
                </jsp:include>

其中flush属性:指定输出缓存是否转移到被导入的文件中,如果为true,则包含在被导入的文件中,如果为false,则包含在原文件中。

静态导入和动态导入的三个区别:
    1、静态导入是将被导入页面的代码完全融合,两个页面融合成一个整体的Servlet;动态导入则在Servlet中使用include方法来引入被导入的页    
      面的内容。

2、静态导入时,被导入的页面的编译指令会产生作用;动态导入时被导入的编译指令则会失去作用,只是插入被导入页面的body内容

3、动态导入还可以增加额外的参数

forward动作指令和include动作指令的区别:
    执行forward时,被forward的页面将完全代替原有页面,执行include时,被include的页面知识插入原有的页面
    一句话:forward拿目标页面代替原有页面,include则拿目标页面插入原有的页面。

useBean、setProperty、getProperty指令:
    三个指令都是与javaBean相关的指令
        
        useBean语法:
            <jsp:useBean id="name" class="classname" scope="page|request|session|application"/>
            id属性就是Javabean的实例名,class属性确定了JavaBean的实现类
        
        scope属性指定javaBean市里的作用范围:
            page:该javaBean实例只在该页面有效
            request:在本次请求内有效
            session:在本次session内有效
            application:在本应用内一直有效

(下面的两个标签的底层实现还是基于getter和setter方法实现)
        setProperty(语法):
            <jsp:setProperty name="BeanName" property="propertyName" value="value"/>
            name属性确定了javaBean的实例名;property属性确定需要设置的属性名;value属性则确定需要设置的属性值

getPeoperty(语法)  :
            <jsp:getProperty name="BeanName" property="propertyName"/>
            name属性确定了需要输出的javaBean的实例名;property属性确定需要输出的属性名。

把JavaBean放在指定的scope中:
        //放在page范围中
    pageContext.setAttribute("p1", p1);
        //放在request范围中
    request.setAttribute("p1", p1);
        //放在session范围中
    session.setAttribute("p1", p1);
        //放在application范围中
    application.setAttribute("p1", p1);

plugin指令:
    主要用于下载服务端的javaBean或者Applet到客户端执行,客户端必须装虚拟鸡(嘿嘿嘿)。
    当然这玩意用的很少,现在HTML对Applet的支持很好,基本上用不到这个动作指令。

param指令:
    用于设置参数值,本身不能单独使用,没有什么意义。
    一般都结合下面的三个指令使用:
        1、jsp:include
            param指令把参数传入被导入的页面
        2、jsp:forward
            param指令把参数传向被转入的页面
        3、jsp:plugin
            param指令把参数传入页面中的javabean或者Applet

时间: 2024-07-31 17:45:09

Jsp学习总结(一)的相关文章

servlet和jsp学习指南(一)servlet

近期接触了些纯servlet与jsp的编程项目,顺便把<servlet和jsp学习指南>这本书拿出来看看,感悟良多.记下随笔,以便会议. 要编写一个servlet首先要实现Servlet或者继承HttpServlet package test.com.servlet; import java.io.IOException; import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet

Servlet&JSP学习笔记

Servlet&JSP学习笔记 */--> Servlet&JSP学习笔记 Table of Contents 1 Web容器 2 内置对象 2.1 内置对象分类 2.1.1 out 2.1.2 request 2.1.3 application 2.1.4 response 2.1.5 session 2.1.6 其他 3 JavaBean 3.1 JSP动作元素 3.2 javabean的四个作用於范围 4 JSP状态管理 4.1 Cookie 4.2 include 指令与动作

蜗牛—JSP学习之JavaBean初识

初识: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" +

Servlet&amp;Jsp学习笔记归纳图(一)

转载请注明出处!!!版权必究!! 以下是Servlet&Jsp的学笔记归纳图,详细内容以及相关代码会在后面整理完成 后给出 使用的是思维导图工具:MindManager 6 最新版本是2013,有兴趣的自己百度下载,功能更多,安装有点麻烦 以下提供版本6绿色版免安装版下载: http://pan.baidu.com/s/1jGqlnXc 本节思维导图文件下载:http://pan.baidu.com/s/1eQGbMSU Servlet&Jsp学习笔记归纳图(一),布布扣,bubuko.c

JSP 学习二

在基于昨天对JSP学习的基础上,今天我们来学习JSP的指令和JSP 对中文的处理. 一.JSP指令简介 JSP 指令是为JSP引擎而设计,它并不直接产生任何可见的输出,而只是告诉引擎如何处理JSP页面中其余的部分. JSP的指令共定义了三个指令: page指令 include指令 taglib指令 JSP指令的基本语法格式:<% @ 指令 属性名=“值” %> 例如: <% @ page contentType="text/html";charset="gb

JSP 学习

在WEB 项目开发中JSP 占据着举足轻重的地位,虽然其使用很简单,但是非常的重要.本节课开始学习JSP. 1 JSP 学习 问题: 在学习了Servlet 之后,使用Servlet 进行页面的展现,代码书写过于麻烦.极大的影响了开发的效率,那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢? 解决: 使用JSP 技术 概念: JSP 全名为Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的Servlet 设计,它 [1] 是由Sun Micr

jsp学习(Tomcat服务器+myeclipse)

阅读前提:了解Tomcat服务器和Servlet 在web开发中我们可以通过Servlet的Response对象对浏览器输出我们的网页内容 这样虽然可以进行网页输出,但是代码编写极其繁杂,冗余很多,所以jsp就出现了: 先描述一下现象,首先我们可以在myeclipse新建Manager的web project,在WebRoot下会有index.jsp文件: 1 <%@ page language="java" import="java.util.*" page

jsp——学习篇:初始激励

这几天开始学习JSP啦,感觉自己有点懒!就想着编写着随笔,边学习!将自己的学习过程与大家分享,一是来督促自己,二是与大家交流学习心得!一起进步,哪里有不对的地方,大家多多海涵哈! 这次就不说技术,只来激励!下节开始正式学习! 这里给大家分享一句我喜欢的话:学会理性,在任何情况下做最佳的选择!

JSP学习笔记(一):JSP标签

JSP的六大标签,分别是JSP命令标签.JSP申明标签.JSP script标签.JSP输出标签.JSP注释标签.JSP动作标签. 关于标签的具体用法,还是在实际运用中去体验比较可靠,用的过程中学习是一种很重要的方法.

servlet和jsp学习指南(三)监听器

监听器是为了能够在servlet/jsp应用程序中进行事件驱动编程(Event-Driven Programming),所有事件类源自java.util.Event,并且监听器在以下三个不同级别中均可用:ServletContext.HttpSession及ServletRequest. 我选择性的学习ServletContextListener.主要是其他的在项目中没有看到使用.有用到再来补充学习. javax.servlet.ServletContextListener.这是对Servlet