• 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


  • 相关阅读:
    CentOS 7.X 关闭SELinux
    删除或重命名文件夹和文件的方法
    centos7-每天定时备份 mysql数据库
    centos7 tar.gz zip 解压命令
    MySQL5.6/5.7/8.0版本授权用户远程连接
    下载CentOS7系统
    使用js实现tab页签切换效果
    sql优化常用的几种方法
    mysql 多表联查的快速查询(索引)
    【图论】强连通分量+tarjan算法
  • 原文地址:https://www.cnblogs.com/Sherlock-J/p/12926048.html
Copyright © 2020-2023  润新知