zoukankan      html  css  js  c++  java
  • JSP入门

    简述

      jsp是java server page的缩写,即java服务器端页面,可以理解为一个特殊的页面。JSP页面是由HTML语句和嵌套在其中的Java代码组成的一个普通文本文件。其中既可以直接定义html的标签,也可以定义java代码。一句很精髓的话:servlet就是在java里写html代码,jsp就是在html里写java代码。

      在JSP页面中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。

    应用场景

      如果一个页面既有动态资源,又有静态资源,那么如果用servlet来干的话,就必须从response获得输出流输出动静资源到页面,光从代码上就非常的复杂,你写标签还要放在函数里面,没有代码提示还得自己缩进对齐。

     jsp的原理

      我们可以把jsp理解为一种特殊的servlet类形式,客户端请求服务器,服务器解析请求消息,则会找到对应的jsp资源,然后服务器就会把jsp文件转换为.java类文件,然后编译.java变为.class字节码文件提供servlet服务。其中的转换是由tomcat来做的。

      我们通过查看被转化的jsp页面,即xxx.java文件,可以看到被自动转换的jsp变成了一个java类,它继承HttpJspBase,然后我们查看HttpJspBase的源码,发现它继承HttpServlet,所以逻辑很清晰了,jsp本质上就是一个servlet

      我们也从HttpJspBase类中找到了service方法:

       转换的过程很好理解,就是把html的页面代码放到response输出流的write方法里,然后被<%%>括住的原封不动。

    jsp脚本

      jsp提供了三种的脚本定义方式:

    <%  代码 %> 定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么.
    <%! 代码 %> 定义的java代码,在jsp转换后的java类的成员位置。
    <%= 代码 %> 定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

    jsp的内置对象

      内置对象就是在jsp的页面中,不需要创建和获取,可以直接使用的对象。

      一共有9个内置对象。

      首先是<%%>脚本里的代码会放到service方法里,所有request对象和response对象可以直接用。

      一个字符输出流对象out,和response的getWriter类似,out对象可以直接用于输出页面(使用print方法)。

      需要注意的是,tomcat服务器真正地给客户端做出响应之前,会现在response缓冲区拿数据,再到out缓冲区拿数据,所以response的输出永远比out的快。

      所以我们一般用out输出,不混用response。

      jsp的9个内置对象:

    变量名 真实类型 作用
    request HttpServletRequest 一次请求访问的多个资源(转发)
    response HttpServletResponse 响应对象
    out JspWriter 输出对象,数据输出到页面上
    session HttpSession 一次会话的多个请求间
    pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
    application ServletContext 所有用户间共享数据
    page Object 当前页面(Servlet)的对象  this
    config ServletConfig Servlet的配置对象
    exception Throwable 异常对象


    jsp的指令

      jsp的指令是用于配置jsp页面以及导入资源文件。

    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %> 配置jsp指令

    page指令

      page用于配置jsp页面

      contentType:等同于response.setContentType()

      1. 设置响应体的mime类型以及字符集

      2. 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)

      import:导包

      errorPage:当前页面发生异常后,会自动跳转到指定的错误页面

      isErrorPage:标识当前也是是否是错误页面。

      * true:是,可以使用内置对象exception,exception可以getMessage获取错误信息

      * false:否。默认值。不可以使用内置对象exception

    include指令

      include表示页面包含的,导入页面的资源文件

    taglib指令  

      taglib用于导入资源,例如我们可以导入标签库,以jstl为例

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> prefix:前缀,自定义的,可以理解为导入资源的命名空间

    jsp页面的注释

      jsp页面有html也有java,这也就意味着有两种注释形式

      html注释格式:<!--  --> ,它只能注释html代码片段

      jsp注释格式:<%--  --%> ,它能注释所有内容

      

    一点一点积累,一点一点蜕变!
  • 相关阅读:
    在某个点上弹出层
    根据表名、过程名、视图名查找对应的数据库
    js时间转换nan问题 兼容浏览器
    过滤html标记 以及 返回顶部
    自定义控件 加入include 报错 问题
    在有索引视图的表上新增、修改、删除 报错 set ARITHABORT 选项不对
    访微博代码
    兼容问题 链接不跳转
    js上下滚动代码
    onload问题
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/14835813.html
Copyright © 2011-2022 走看看