【16】JSP

JSP

全称为Java Server Page,本质是一个Servlet。解决Servlet向浏览器输出数据难得问题。

一、概述

  1. 不需要编译JSP页面
  2. 是文本文件
  3. 可以写HTML代码和java代码,容易排版
  4. 可以直接使用out、request、response、session等等对象,见源码:
public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

        PageContext pageContext = null;
        HttpSession session = null;
        ServletContext application = null;
        ServletConfig config = null;
        JspWriter out = null;
        Object page = this;
        JspWriter _jspx_out = null;
        PageContext _jspx_page_context = null;
    ......
}

二、原理

Servlet容器一般也是JSP容器。JSP页面运行时,tomcat服务器会将JSP文件翻译成一个Servlet程序,把产生的java和class文件放到Tomcat的/work目录,而且程序一开始就帮我们创建了一些内置对象(比如out)。所以,我们可以在上面编写java代码和直接使用一些对象。而对于html代码,Servlet程序其实是使用流对象(out对象)把html原样输出到浏览器。这些看源码就懂了。

三、语法

1. 注释

  • java代码中使用java注释,html中使用html注释
  • 也有专用的注释 <%--这是注释 --%>

2. 模板元素

所有的html元素就是模板元素

3.代码片段

1.1 作用

在JSP页面上编写java代码

1.2 格式
1.3注意
  • 代码片段中的代码翻译时都是落入service方法中
  • 一个JSP页面可以编写多个代码片段

4.脚本表达式

4.1 作用

向页面输出数据

4.2 格式
    <%= new java.util.Date() %> //相当于out.write(new java.util.Date());
4.3 注意

脚本表达式不要以”;”结束

5.JSP声明

5.1 作用

用于定义成员变量和成员方法,因为代码片段的代码是在service方法中的,方法中不能声明成员,所以需要JSP声明。

5.2 格式

6.JSP处理指令

作用是告诉JSP引擎如何处理JSP页面的其余部分,基本格式为<%@ 指令 属性名=”值” %>

6.1 作用

通知服务器如何处理JSP页面

6.2 格式
6.3 taglib 标签处理指令
  • 用于引入外部标签库文件
<%@taglib uri="http://java.sun.com/jsp.jstl/core" prefix="c"  %>
  • uri属性 指定标签文件位置
  • prefix属性 指定前缀
  • 使用
6.4 include 指令
  • 用于包含其他页面信息,先合并再编译
  • <%@include file="x.jsp" %>
  • 注意:两个页面声明的代码不可以重复(除了pageEncoding和导包),否则会出错
6.5 page 指令
  • Language=”java”

    • 只能在JSP页面写Java代码
  • Import=”java.util.*”

    • 导包
    • 方式1:使用一个import语句,以”,”分割导包
    • 方式2 : 使用多个import语句,另起一个page指令
  • PageEncoding=”UTF-8”

    • 设置页面保存使用的编码
    • 通知浏览器使用的编码
    • tomcat翻译成Servlet的setContentType(“text/html;charset=utf-8”);
  • isELIgnored

    • 是否忽略EL表达式,默认是false
  • Buffer

    • 指定JspWriter缓存大小
    • PrintWriter writer = response.getWrite();这种直接输出的方式效率较低
    • JspWriter Out对象,带有缓存功能的输出流对象,只有当数据写够缓存区大小或者jsp页面加载完毕后才输出
  • errorPage=”error.jsp”

    • 指定错误页面,当页面出错时请求转发到错误页面,同时发送一个Exception对象
    • 错误页面要指定isErrorPage=”true”才能接受来自出错页面的Exception对象
    • 在web.xml中配置全局错误页面
    <error-page>
        <exception-type>错误类型</exception-type>
        <location>错误页面</location>
    </error-page>
    <error-page>
        <error-code>错误代号</ error-code >
        <location>错误页面</location>
    </error-page>

7.JSP内置对象

7.1 概念

指Tomcat自动创建的对象,在代码片段中可以直接使用

7.2 JSP四大域对象

ServletContext(application)>Session>Resquest>PageContext

7.3 JSP内置对象
内置对象功能
Request代表了用户的请求
Response代表了给用户的响应
Session会话对象
Exception异常对象
ApplicationServletContext
ConfigServletConfig
OutJspWriter,PrintWriter的子类,带缓存功能
Page当前jsp页面的对象,this
pageContext代表了当前页面的运行环境,每个页面都有一个运行环境
7.4 pageContext
  • 作为域对象使用,可以指定作用范围,不指定的话默认为当前域

    • scopes属性值:pageContext.REQUEST_SCOPE, pageContext.SESSION_SCOPE, pageContext.APPLICATION_SCOPE
    • pageContext.setAttribute(name,value[,scope]);
    • findAttribute(name);可以从jsp中的四大域对象中查找指定的属性值
    • 如果四大域对象出现同名属性,那么该方法会从小范围到大范围去找。
  • 封装了其它八大内置对象,可以直接获取

    • PageContext.getRequest();等等
<%page pageContext.setAttribute(name,value,scopes); %>
<%page pageContext.findAttribute(name); %>
<%page pageContext.getSession();%>

8.JSP映射

在web.xml中可以配置伪静态页面(为了让百度爬虫收录进去)

注意:配置映射时不可以省略”/”

<servlet>
    <servlet-name>jsp</servlet-name>
    <jsp-file>/xx.jsp<jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>/xx.html</url-pattern>
</servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值