【JavaWeb】JSP

一、简介

    JSP是一种动态网页开发技术,它使用JSP标签在HTML页面中嵌入JAVA代码

    JSP本质是一种Java servlet,主要用于实现Java web应用程序的用户界面部分,但是页面中Java代码太多会影响页面的效率

在开发中,通常将Java servlet与JSP共同使用,各取所长


二、具体技术

1.JSP脚本和注释(核心)

    ①JSP脚本:

        (1)    <%   JAVA代码    %>   //内部的JAVA代码会被翻译到Servlet的service()方法内部

        (2)   <%= 有结果的表达式  %>//被翻译成service方法内部的out.print()

          (3)      <%!       %>  //被翻译成servlet的成员的内容

注意:(1)在方法的内部不同于(2)在类的下面

    ②JSP注释:

        (1)<!--        --> HTML注释   //可见范围:jsp源码+翻译后的servlet+页面显示后的html源码

        (2)//和/**/      JAVA注释   //可见范围: JSP源码+翻译后的servlet

        (3)<%--     --%>   JSP注释   //可见范围:  JSP源码 

2、JSP运行原理(本质是servlet)

            jsp在第一次被访问时会被Web容器翻译成servlet,之后执行

            过程:

                 第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行

            注意:被翻译后的servlet在Tomcat的work目录中可以找到

3、JSP指令

    ①page

        作用:属性最多的指令,用来指导页面的特性

        格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>

属性如下:

        language:JSP脚本中可以嵌入的语言种类

        contentType:   翻译成:response.setContentType(text/html;charset=UTF-8)目的是解决中文的问题

响应的内容用的编码方式 ,

        pageEncoding :  JSP本身的编码方式

注意:contentType可以不写,会默认按照pageEncoding的编码方式,而且本来JSP本身编码就该跟contentType一样

        session: 默认session="true", 即JSP翻译时自动创建一个session域

        extends:  JSP继承的类,没啥用,JSP本质是servlet会去继承httpServlet的

        import:    JSP导入的包

        errorPage:     若页面出错跳转到  的 那一个页面

        iseErrorPage:    参数true/false  ,是否为错误页面

        buffer:    

    ②include指令

        作用:页面包含(静态的包含),将一个JSP页面包含到另外一个JSP页面中

        格式:<%@ include file="被包含的文件地址"%>

    ③taglib指令

        作用:引用标签库,如jstl标签库,struts2标签库

        格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

4、JSP的九个内置对象

    简介:在JSP脚本翻译之后,创建的9个对象,可以在JSP脚本里面直接使用这些对象

        ①out     作用:  用于页面的输出

            out有一个缓冲区,写入客户端的内容先写入out缓冲区在写入response的缓冲区,out缓冲区默认大小为8kb可以设置为0,从而直接写入response的缓冲

        ②request    客户端请求消息

        ③response    服务器向客户端响应消息

        ④config

        ⑤session

        ⑥application

        ⑦page

        ⑧pageContext 作用:jsp页面的上下文对象

pageContext是一个域对象,可以对其他四个域(request,session,page,application)这些域里的数据进行操作

        格式:

     pageContext.setAttribute(键名,值,PageContext.(某个域))

     pageContext.getAttribute(键名,PageContext.(某个域))

      pageContext.findAttribute(键)   //从小到大的域一次开始找键名,找到就立即停下不在继续找了

注意:四个域的区别

page域   当前jsp页面范围

request域     一次请求中

     service层中的给客户端的信息一般放在request中,传递给前端jsp或html页面

session域    一次会话

    session域一般存放用户常用的数据

application域    整个web应用

     pageContext.getout....获得其他JSP对象

        ⑨exception


5、JSP标签      主要有两个

    ①页面包含(和指令不同的是这个是动态包含),格式:<jsp:include page="被包含的页面"/>

注意:

        静态包含会把两个Jsp打包在一起生成一个servlet

         动态包含两个jsp页面也会生成两个servlet

    ②请求转发,格式:<jsp:forward page="要转发的资源" />

 

猜你喜欢

转载自blog.csdn.net/toby1123yjh/article/details/79877642