zoukankan      html  css  js  c++  java
  • JSP

    JSP简介

             JSP---JavaServer Pages

             拥有servlet的特性与优点(本身就是一个servlet)

             直接在HTML中内嵌JSP代码

             JSP程序由JSP Engine先将它转换成Servlet代码,接着将它编译成类文件载入执行

             只有当客户端第一次请求JSP时,才需要将其转换、编译

             优点:

             优良的性能
                       优于CGI,PHP,ASP

             平台无关性
                       操作系统无关,Web服务器无关(符合j2ee标准)

             可扩展性
                       tag的扩展机制,简化页面开发

    JSP编程—基本语法

          JSP传统语法

               Declaration        声明

                                基本语法:

                                         <%! %>

                                说明:在此声明的变量、方法都会被保留成唯一的一份,直到JSP程序停止执行

               Scriptlet        小程序段

                                基本语法:

                                         <%程序代码区%>

                                可以放入任何的Java程序代码

               Expression          表达式

                                基本语法:

                                         <%=……%>

                                =后面必须是字符串变量或者可以被转换成字符串的表达式

                                不需要以;结束

                                只有一行

               Comment           注释

                                <!--内容 -->  可以看到

                               <%--  内容  --%> 不可看到

                               以上两种不可在<%   %>内使用

                             <%  %>中使用普通java代码注释

               Directives           指令

                                Directive(编译指令)相当于在编译期间的命令

                                格式:

                                         <%@Directive属性=“属性值”%>

                         常见的Directive:

                                Page

                                                   指明与JSPContainer 的沟通方式

                                                   基本格式:

                                                   <%@pagelanguage=“script language”|

                                                                               extends=“className”|

                                                                               //import=“importList”|                引入进来的包 类

                                                                               buffer=“none|kb size”|   --none:不缓冲,默认8k缓冲区

                                                                               session=“true|false”|   --是否可以使用session,默认true

                                                                               autoFlush=“true|false”  --缓冲器是否自动清除,默认true

                                                                               isThreadSafe=“true|false”|  --默认false(永远不要设成true)

                                                                               info=“infoText”|    --任何字符        jsp相关的描述信息

                                                                             //errorPage=“errorPageUrl”|     页面出错,显示哪个页面内容

                                                                               //isErrorPage=“true|false”|       当前页面是否为显示错误的页面

                                                                               //contentType=“contentTyepInfo”|
                                                                               //pageEncoding=“gb2312”

                                                   %>

                                Include(效率比较高)

                                                   将指定的JSP程序或者HTML文件包含进来

                                                   格式:

                                                            <%@includefile=“fileURL%>

                                                   JSPEngine会在JSP程序的转换时期先把file属性设定的文件包含进来,然后开始执行转换及编译的工作。(原封不动的把文件的代码copy到该位置,然后进行转换和编译,只生成一个java和class)

                                                   限制:

                                                            不能向fileURL中传递参数(未运行不能拿到参数(会报错)

    )

                                                                     不能abc.jsp?user=aaa

                                taglib

               Action动作指令

                         Action(动作指令)在运行期间的命令

                         常见的:
                                jsp:useBean

                                                   通过jsp:useBean,可以在JSP中使用定义好的Bean

                                       Bean的基本要素:

                                                            必须要有一个不带参数的构造器。在JSP元素创建Bean时会调用空构造器

                                                            Bean类应该没有任何公共实例变量,也就是说,不允许直接访问实例变量,变量名称首字母必需小写

                                                            通过getter/setter方法来读/写变量的值,并且将对应的变量首字母改成大写

                                                            基本用法:

                                                                               不要使用裸体类(规范要求,在包里)

                                       jsp:useBean各项参数含义:

                                                            id:对象实例名称

                                                            scope:Bean作用的范围,默认为page,对整个jsp页面有效

                                                            class:Bean类名称(全名)

                                                            type:Bean实例类型,可以是本类,或其父类,或实现的接口,默认为本类

                                       Scope各项参数的意义:

                                                            page:仅涵盖使用JavaBean的页面       局部变量

                                                            request:有效范围仅限于使用JavaBean的请求

                                                            session:有效范围在用户整个连接过程中(整个会话阶段均有效)

                                                            application:有效范围涵盖整个应用程序。也就是对整个网站均有效

                                       jsp:setProperty的格式:

                                                            <jsp:setPropertyname=“beanName”

                                                                     property=“propertyName” |property=“*”

                                                                     value=“property value”|param=“paramName”/>

                                                            相当于beanName.setPropertyName(value)方法调用(setXxx()方法)

                                       jsp:getProperty的格式:

                                                            <jsp:getPropertyname=“beanName” property=“propertyName”/>

                                                            相当于beanName.getPropertyName()方法调用(getXxx()方法)

                                       建立表单参数和Bean属性之间的关联

                                                            通过param指定表单元素的名称,通过perperty指定对应的Bean属性名称,由此建立这两个变量的关联

                                                            通过*来设置所有属性和输入参数之间的关联

                                       在建立Bean属性和表单参数之间的对应关系时,服务器会将对应的参数自动转换成和属性类型匹配的数据

                                       初步解释编码问题

                                jsp:include

                                       jsp:include/jsp:param

                                                            用于动态包含JSP程序或HTML文件等

                                                            除非这个指令会被执行到,否则它是不会被Tomcat等JSP Engine编译。

                                                            格式:

                                                            <jsp:includepage=“URLSpec” flush=“true”/>

                                                            <jsp:includepage=“URLSpec” flush=“true”>

                                                                              <jsp:param name=“ParamName”value=“paramValue”/>

                                                            </jsp:include>

                                                            jsp:param用来设定include文件时的参数和对应的值

                                              和编译指令include的区别

                                                                     jsp中两种包含文件的区别:

                                                                               相同点:两者都能包含一个页面

                                                                               不同点:

                                                                                        <jsp:includepage="b.jsp" />(先执行,后包含)

                                                                                                 此标签表示法:能动态区别加进来的是动态页面还是静态页面,对于静态页面则直接将资源包含(仅取其文本)。对于动态页面则先处理各自资源,之后将处理过的结果包含在一起。

                                                                                        <%@include file="b.jsp">

                                                                                                 此指令表示:静态地包含页面,不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。然后一起处理,再将所有内容发给客户端。

                                                                     Include不能带参数, 而<jsp:include>可以

                                                                     动态包含的文件和被包含文件用的是同一个request对象

                                                                     Flush用于设定是否将结果马上打印出来,必须为“true”,因为在JSP1.1中,false是无效的设定

                                jsp:forward

                                       jsp:forward / jsp:param

                                                            用于将一个jsp的内容传送到page所指定的JSP程序或者Servlet中处理(URL)

                                                            格式:

                                                            <jsp:forwardpage=“urlSpec” flush=“true”/>

                                                            <jsp:forwardpage=“urlSpec”>

                                                                               <jsp:paramname=“paramName” value=“paramValue”/>

                                                                     </jsp:forward>

                                                            <jsp:param>用于指定参数和其对应的值

                                                            Forward的页面和forward到的页面用的是同一个request

                                                            与此相对应的是

                                                            response.sendRedirect 跳转后使用的是不同的request

                                                            在response.sendRedirect之后,应该紧跟一句return;我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。 

                                              <jsp:forward>与response.sendRedirect的区别

                                                                     <jsp:forward>

                                                                               使用同一个request

                                                                               forward后的语句不会继续发送给客户端

                                                                               速度快

                                                                               服务器内部转换,

                                                                               可以传参数

                                                                     response.sendRedirect

                                                                               是不同的request,发起两次请求

                                                                               send后的语句会继续执行,除非return

                                                                               速度慢              test.jsp?ccc=ccc(不成功)

                                                                               需要到客户端的往返,可以转到任何页面

                                                                               可以传参数,直接写在url后面

                                jsp:plugin

                                                   嵌入applet

               内置对象

                         out

                                         Out内置对象是一个缓冲的输出流,用来给客户端返回信息。它是javax.servlet.jsp.JspWriter的一个实例

                                         典型应用:向客户端输出内容

                                         常用方法:

                                                   println():向客户端输出各种类型数据

                                                   newLine():输出一个换行符

                                                   close():关闭输出流

                                                   flush():输出缓冲区里的数据

                                                   clearBuffer():清除缓冲区里的数据,同时把数据输出到客户端

                                                   clear():清除缓冲区里的数据,但不把数据输出到客户端

                                                   getBufferSize():返回缓冲区的大小

                         Request

                                         request内置对象表示的是调用JSP页面的请求。通常,request对象是javax.servlet.http.HttpServletRequest接口的一个实例

                                         典型应用:通过request.getParameter(“paramName”)可以获得Form提交过来的参数值

                                         可以用此对象取得请求的Header、信息(如浏览器版本、语言和编码等)、请求的方式(get/post)、请求的参数名称、参数值、客户端的主机名称等

                                         常用方法:

                                                   getMethod():返回客户端向服务器端传送数据的方法

                                                   getParameter(StringparamName):返回客户端向服务器端传送的参数值,该参数由paramName指定

                                                   getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型数据(Enumeration)

                                                   getParameterValues(String  name):获得指定参数的所有值,由name指定

                                                   getRequestURI():获得发出请求字符串的客户端地址

                                                   getRemoteAddr():获取客户端的IP地址

                                                   getRemoteHost():获取客户端机器名称

                                                   getServerName():获取服务器的名字

                                                   getServletName():客户端所请求的脚本文件路径

                                                   getServerPort():获取服务器端的端口

                                         对应类:javax.servlet.http.HttpServletRequest

                         Response

                                         表示的是返回给客户端的响应

                                         是javax.servlethttp.HttpServletResponse接口的一个实例

                                         经常用于设置HTTP标题,添加cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL

                                         常用方法:

                                                   addCookie(Cookiecookie):添加一个Cookie对象,用于在客户端保存特定的信息

                                                   addHeader(Stringname,String value):添加HTTP头信息,该Header信息将发送到客户端

                                                   containsHeader(Stringname):判断指定名字的HTTP文件头是否存在

                                                   sendError(int):向客户端发送错误的信息

                                                   sendRedirect(Stringurl):重定向JSP文件

                                                            和<jsp:forward>的区别

                                                                     sendRedirect通过客户端发起二次申请,不同的request对象

                                                                     Jsp:forward是同一个request,在服务器内部转发

                                                   setContentType(StringcontentType):设置MIME类型与编码方式

                         pageContext用的很少   page运行的环境(编译后运行的环境)

                         Cookie

                         session

                         application

                         config用的很少         web.xml对于这个jsp编译成功后的配置

                         exception

                         Page用的很少      当前页面

          JSTL

          JSF


  • 相关阅读:
    D. Constructing the Array
    B. Navigation System
    B. Dreamoon Likes Sequences
    A. Linova and Kingdom
    G. Special Permutation
    B. Xenia and Colorful Gems
    Firetrucks Are Red
    java getInstance()的使用
    java 静态代理和动态代理
    java 类加载机制和反射机制
  • 原文地址:https://www.cnblogs.com/Sherlock-J/p/12926048.html
Copyright © 2011-2022 走看看