前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSP总结

JSP总结

作者头像
一头小山猪
发布2020-06-15 17:29:29
2.9K0
发布2020-06-15 17:29:29
举报
文章被收录于专栏:微光点亮星辰微光点亮星辰

1.为什么会出现JSP

  • HTML的优点是可以很好的显示页面,但是缺点是不能处理用户的请求
  • Servlet的优点是可以处理用户请求并给用户响应,但是缺点是不能很好的显示页面
  • 我们将HTML与Servlet的优点进行强强联合,就出现了JSP,即HTML+Servlet=JSP

2.JSP简介

  • JSP全称是Java Server Pages,Java服务页面
  • JSP页面不能脱离服务器单独运行,即JSP页面必须运行在服务器上
  • JSP页面就是能写Java代码的HTML,它还是披着HTML外衣的Servlet
  • JSP本质上就是一个Servlet

3.JSP的运行原理

  • 运行一个JSP页面需要经过以下步骤:
    • 例如:我们访问index.jsp
    • 直接使用JSP容器创建的对象来处理用户请求和给用户响应
    • JSP引擎将index.jsp页面翻译成index_jsp.jave文件
    • Java虚拟机将index_jsp.java文件编译成index_jsp.class文件
    • JSP容器创建index_jsp对象,用它来处理用户的请求并给用户响应
    • 第一次访问时:
    • 以后再访问index.jsp(前提是index.jsp页面没有被修改)
    • 1)JSP引擎将.jsp页面翻译成.java文件
    • 2)Java虚拟机将.java文件编译成.class文件
    • 3)JSP容器根据Java类创建对象并用该对象处理用户请求并给用户响应

4.JSP的基本语法

  • JSP模板元素
    • 就是HTML中的标签,在HTML中怎么使用在JSP中就怎么使用
  • JSP脚本片段
    • 格式:<% .......%>
    • JSP脚本片段用来写Java代码
    • JSP脚本片段中的Java代码或原封不动的复制到_jspService方法中
    • 可以再JSP页面中写多个脚本片段,但是要保证多个脚本片段拼接后的完整性

<!-- 2.JSP脚本片段 -->

<%

for(int i = 0 ; i < 10 ; i++){

%>

<h1>中秋节快到了!好开心哟……</h1>

<%

}

%>

  • JSP表达式
    • 格式:<%=对象%>
    • JSP表达式主要用来将一个对象输出到页面

<%

//创建一个date对象

Date date = new Date();

%>

<!-- 3.JSP表达式 -->

<h1><%=date %></h1>

  • JSP页面中的注释
    • HTML注释:在浏览器解析页面的时候被忽略,生存时机最长
    • Java注释:在Java虚拟机将java文件编译成class文件是被忽略,生存时机适中
    • JSP注释:在JSP引擎将jsp文件翻译成java文件时就被忽略,生存时机最短

5.JSP指令

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

<!-- page指令: 告诉JSP引擎如何解析当前页面-->

<!--

language属性:用来设置JSP页面使用的语言,默认值是java,而且只有一个值就是java

contentType属性:用来告诉浏览器使用什么字符集解析当前页面

pageEncodeing属性:用来设置当前jsp页面使用的字符集

errorPage属性:用来设置当前页面出现错误时要转发的页面

isELIgnored属性:用来设置是否忽略EL表达式,默认值是false,不忽略,一般不改

session属性:用来设置是否可以使用Session对象,默认值是true,可以使用,一般不改

isErrorPage属性:用来设置当前页面是否是错误页面,默认值是false,不是错误页面;当改为true时,当前页面即为错误页面,就可以使用Exception对象来打印错误信息

-->

    • include指令

<!-- include指令:用来将其他页面包含到当前页面中 -->

<!-- 静态包含 -->

<h1>十年修得同船渡</h1>

<!-- file属性:用来设置被包含的页面的地址 -->

<%@ include file="/include/1.jsp" %>

6.JSP动作标签

  • 格式:<jsp:标签名></jsp:标签名>
  • jsp动作标签由服务器解析,解析时会转换成响应的Java代码
    • forward标签

<!-- forward标签:主要用来进行请求的转发 -->

<!-- page属性:用来设置要转发的页面的路径 -->

<jsp:forward page="/index.jsp"></jsp:forward>

    • include标签

<!-- include标签:主要用来将一个页面包含到当前页面中,我们称它为动态包含 -->

<!-- 动态包含即翻译、编译当前页面也翻译、编译被包含页面 -->

<h1>窗前明月光</h1>

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

7.JSP中的九大隐含对象

  • JSP中的九大隐含对象可以再jsp页面中直接使用
  • 什么是隐含对象
    • 不用声明就可以直接使用的对象
  • 这九个隐含对象在jsp页面中之所以可以直接使用是因为它们已经在_jspService方法中已经声明并赋值
  • 九大隐含对象都是什么
    • 类型:HttpSession
    • 作用:是一个域对象
    • 在Servlet中通过以下方法获取
    • 类型:PageContext
    • 作用:是一个域对象
    • 类型:HttpServeletRequest
    • 作用:是一个域对象
    • 在Servlet中可以直接使用
    • request
    • pageContext
    • session

HttpSession session = request.getSession();

    • 类型:ServletContext
    • 作用:是一个域对象
    • 在Servlet中通过以下方法获取
    • application

ServletContext servletContext = this.getServletContext();

    • 类型:Throwable
    • 作用:获取异常信息,前提是isErrorPage属性设置为true才可以使用该对象
    • 类型:Object
    • 作用:相当于this,值当前对象,没用
    • 类型:JspWriter
    • 作用:与PrintWriter一样,用来想浏览器响应一个页面或页面的片段
    • 类型:ServletConfig
    • 作用:获取JSP的初始化参数
    • 类型:HttpServletResponse
    • 作用:与Servlet中的response一样,封装了响应报文,在JSP中基本不用
    • response
    • config
    • out
    • page
    • exception

8.JSP中的四个域对象

  • 域指区域或者说是范围,在JavaWeb中指不同的Web资源(jsp、html、Servlet)
  • 在JavaWeb中有四个域对象,分别是pageContext、request、session、application
  • 因为在JavaWeb中不同的资源之间需要共享数据,所有就有了域对象
  • 在域对象中都维护着一个map,来保存对象
  • 域对象都有以下三个方法:
    • 根据属性名移除域对象中的值
    • 根据属性名获取域对象中的值
    • 向域对象中添加属性
    • void setAttribute(String key , Object value)
    • Object getAttribute(String key)
    • void removeAttribute(String key)
  • JavaWeb中有四个域
    • 能使用小的就不用大的
    • 范围:当前Web应用
    • 对应的对象:application
    • 类型:ServletContext
    • 作用:获取application域中的属性值
    • 范围:当前会话
    • 对应的对象:session
    • 类型:HttpSession
    • 作用:获取session域中的属性值
    • 范围:当前请求
    • 对应的对象:request
    • 类型:HttpServletRequest
    • 作用:获取request域中的属性值
    • 范围:当前页面
    • 对应的对象:pageContext
    • 类型:PageContext
    • 作用:获取page域中的属性值
    • page域
    • request域
    • session域
    • application域
    • 域对象使用的原则
  • Servlet与JSP的分工
    • Servlet用来处理请求,JSP负责显示页面

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档