JSP基础

1、JSP概述

1、介绍jsp发展.

  1. JSP MODEL1 : 在jsp中做所有事情. 业务处理, 页面显示。在这种模式下,jsp中代码量相当大,而且它不仅负 责显示页面,而且处理业务,无论修改哪里,都特别复杂麻烦
  2. JSP MODEL1 2代: 在jsp中做所有事情. 把业务逻辑抽取到javaBean中. 页面负责调用业务方法.(但是,这种方式不适合MVC的思想)
  3. JSP MODEL2 : servlet处理逻辑.jsp负责显示结果。(jsp只负责显示,把java代码放在servlet中)

2、JSP的本质

JSP本质就是Servlet。JSP(Java Server Pages)java服务器页面。它的根本是简化Servlet。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP产生原因:
由于在Servlet中输出HTML语句非常麻烦,修改不方便。JPS能够大大简化和方便了网页的设计和修改。

JSP的运行:
访问jsp——>生成.java文件——>生成.class文件
因此可以从java文件中去了解jsp的实质

jsp的脚本

    <% %>  出现在jsp对应service方法中
    <%! %> 出现在jsp对应的类中
    <%= %> 出现在service方法中,会使用out.print方法包裹.

JSP中的注释

 <%--  --%> 被注释掉的内容不会出现在java文件中.
 <!-- --> 浏览器端注释.

2、JSP代码分析

既然运行jsp最终产生java文件,那么在java文件中就可以看出jsp实质的问题

这里写图片描述

从org.apache.jasper.runtime.HttpJspBase中可以看出它继承HttpServlet。因此我们说的jsp的本质就是Servlet。

3、JSP三大指令

1、page指令

这里写图片描述
language=”java” 当前jsp使用的是java语言

import=”java.util.” 导包.该属性是可以唯一一个出现多个的属性.

*pageEncoding=”UTF-8” 保存到文件系统的码表

*contentType=”text/html; charset=ISO-8859-1” 告诉浏览器解码的码表 保证这两处码表一致就不会出现乱码.但是,其实不用两个属性都设置. 只设置一处码表,jsp解析时会自动设置另一个.

autoFlush=”true” 当缓冲区装满的时候,是否自动刷新缓冲区 . 如果不自动刷新,那么装满时,还继续装会跑出异常

buffer=”8kb” 设置缓冲区大小,8kb是默认值,并且是合理默认值。 以上两个属性开发时不用管.

errorPage=”/error.jsp” 当当前jsp中出现异常时,将请求转发给错误页面. 并将产生的异常对象传递给下一个jsp.

isErrorPage=”true” 该属性一般放在错误提示页面 , 设置为true那么, 在该页面中就可以使用exception对象来获得异常信息.
上面的errorPage属性在开发中不是很常用,因为该属性只影响当前页面,范围太小.
可以使用下面的配置 统一管理整个项目的错误页面

        <error-page>
                    <!-- 当出现该异常时 跳转到错误页面 -->
                    <exception-type>NullpointExcept</exception-type>
                    <!-- 当出现500错误时 -->
                    <error-code>500</error-code>
                    <!-- 跳转到/jsp/error.jsp页面 -->
                    <location>/jsp/error.jsp</location>
            </error-page>

isThreadSafe=”true” 默认值是false. 如果指定为true那么会以线程安全的方式运行jsp对应的servlet. 具体参照文档.(了解)

session=”true” 决定页面中是否可以直接使用session对象.默认值是true. 不要动该属性.

2、include指令

include指令:包含,包括。是通知jsp编译器把另一个jsp引入到当前文件中,就和复制到当然中一样。和c语言中#include功能相似。这样生成的java文件了合并的,并不是两个java文件,这两个java文件 可以共享。

3、taglib指令

taglib指令表示要引用JSP标签库

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

4、JSP的四大作用域

这里写图片描述

作用域的使用范围

这里写图片描述

5、JSP中的9大内置对象

从jsp源码中看出9大内置对象
这里写图片描述

JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

这里写图片描述

6、JSP动作标签

JSP提供了动作标签来简化页面代码(尽量减少java代码),另一方面处理业务逻辑
这里写图片描述

7、EL表达式

EL表达式(Expression Language):让Jsp的代码更加简化

在jsp中一般还得使用<% = %>在这个脚本中写java代码,EL表达式可以代替这个脚本

<%=request.getAttribute(“user”) %> 等价于$ { requestScope.user }

这里写图片描述
主要作用:
获取数据:
1、EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
2、执行一些简单的运算:${user==null}
3、得对web常用对象的引用
4、调用Java类的方法。

<body>
    <%
        pageContext.setAttribute("a", "111", PageContext.PAGE_SCOPE);

        pageContext.setAttribute("a", "222", PageContext.REQUEST_SCOPE);

        pageContext.setAttribute("a", "333", PageContext.SESSION_SCOPE);

        pageContext.setAttribute("a", "444", PageContext.APPLICATION_SCOPE);
    %>

    page域:${pageScope.a} 代码相当于<%=pageContext.getAttribute("a")%><br />
    request域:${requestScope.a} 代码相当于<%=request.getAttribute("a") %><br />
    session域:${sessionScope.a}  代码相当于<%=session.getAttribute("a") %><br /> 
    application域:${applicationScope.a} 代码相当于<%=application.getAttribute("a")%><br/>

            访问list<br/>
    <% List list =new ArrayList();
       list.add("aaa");
       list.add("bbb");
       pageContext.setAttribute("list", list);
     %>    
     ${pageScope.list[0]}
     ${pageScope.list[1]}

</body>

这里写图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值