Jsp技术入门

1.jsp脚本和注释

  jsp脚本

      1)<%java 代码%> -------- 内部的java代码翻译到server方法的内部

   2)<%= java 变量表达式%> ---- 会被翻译成server内部out.print()

   3)<%! java 代码%>-- 会被翻译成servlet的成员的内容

  jsp注释

   1)Html注释<!--注释内容 -->

     -------可见范围jsp源码、翻译后的servlet、页面

   2)java注释 //单行注释 /*多行注释*/

    -------可见范围jsp源码 翻译后servlet

   3)jsp注释<%--注释内容--%>

    -------可见范围jsp源码可见

2.jsp运行运行原理 -- jsp的本质就是servlet

  jsp 第一次访问/文件被修改 会被Web容器翻译成servlet,

     在执行(在servlet在Tconcat服务器work文件夹中)过程:

   第一次访问/文件被修改 --->helloServlet.jsp -->helloServlet_.java->编译运行

3.jsp指令

  1. page指令 --- 属性最多的指令(实际开发中page指令默认)

    属性最多的一个指令,根据不同的属性,指导整个页面特性

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

    常用属性如下:

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

    pageEncoding:当前jsp文件的本身编码---内部可以包含contentType

    contentType:response.setContentType(text/html;charset=UTF-8)

    session:是否jsp在翻译时自动创建session

    import:导入java的包

    errorPage:当当前页面出错后跳转到哪个页面

    isErrorPage:当前页面是一个处理错误的页面

  2. include指令

    页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中

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

  3. taglib指令

    在jsp页面中引入标签库(jstl标签库、struts2标签库)

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

4.jsp内置/隐式对象(9个)

  

还有一个是exception,错误处理

名称

类型

描述

out

javax.servlet.jsp.JspWriter

用于页面输出

request

javax.servlet.http.HttpServletRequest

得到用户请求信息,

response

javax.servlet.http.HttpServletResponse

服务器向客户端的回应信息

config

javax.servlet.ServletConfig

服务器配置,可以取得初始化参数

session

javax.servlet.http.HttpSession

用来保存用户的信息

application

javax.servlet.ServletContext

所有用户的共享信息

page

java.lang.Object

指当前页面转换后的Servlet类的实例

pageContext

javax.servlet.jsp.PageContext

JSP的页面容器

exception

java.lang.Throwable

表示JSP页面所发生的异常,在错误页中才起作用

  1)out对象
          out 的类型 jspWriter

      作用就是想客服端输出内容

      ---->out.write();

        out的缓冲区默认是8kb可以设成0

      ---->-buffer=“0kb”,关闭后直接写到response缓冲区器中

  2)pageContext对象(小重要)

    1.pageContext对象的作用和性质

      jsp页面的上下文对象,作用如下

      page对象与pageContext对象不是一回事

      pageContext是一个域对象

    2.pageContext对象的常用方法

       1.存取数据

      setAttribute(String name,Object obj)

      getAttribute(String name)

      removeAttrbute(String name)

      向其他域中写入/读取数据  

      setAttribute(String name,Object obj,int scope)

      getAttribute(String name,int scope)

      removeAttrbute(String name,int scope)

      findAttribute(String name)

      ---在所有域中查找该名称的数据

      ---找到则返回,不再继续寻找,域从小到大

      ---依次pageContext域->request域->session域->application域

    2.pageContext可以获得其他8大隐式对象

        用于传参的封装

        调用例子:

          pageContext.getRequest()

          pageContext.getSession()

5.jsp标签(动作)

       1.页面包含(动态包含):<jsp:include page ="被包含的页面">

    2.请求转发<jsp:forward page ="要转发的资源">

6.补充

  1.静态包含与动态包含的区别?

      静态包含:

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

        动态包含

<jsp:include page = "name.jsp"></jsp:include>

      静态页面文件是两个文件翻译后只有一个java文件,合并

      动态的页面文件是两个翻译后还是两个java文件

  

  2.四大作用域的总结: 

       1.page域:当前jsp页面范围

      2.request域:一次请求

      3.session域:一次会话

      4.application域:整个web应用 

  3.JSP行为

jsp:include 用于在当前页面中包含静态或动态资源
jsp:useBean 寻找和初始化一个JavaBean组件
jsp:setProperty 设置 JavaBean组件的值
jsp:getProperty 将 JavaBean组件的值插入到 output中
jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element 动态创建一个XML元素
jsp:attribute 定义动态创建的XML元素的属性
jsp:body 定义动态创建的XML元素的主体
jsp:text 用于封装模板数据
原文地址:https://www.cnblogs.com/FlyBlueSky/p/8979290.html