jsp

目录

  • JSP简介
  • JSTL标签库
    • 用法:
  • MVC设计模式
  • 作业:

JSP简介

  • Java Server Page JSP是一种动态页面技术
  • 动态页面技术是可以从数据库实时读取数据,更新页面内容
  • 类似:PHP、ASP.NET、Freemarker、Velocity、Thymeleaf
  • sevlet创建的对象是单例的,一旦创建就会一直存在服务器中。

    JSP的原理

  • JSP本质就是一个Servlet
  • 当JSP被一次访问,服务器会将JSP转换为Servlet类,再创建Servlet对象,再由Servlet对象的service方法,通过输出流将HTML代码发送给浏览器,浏览器对页面进行渲染。后面再访问JSP时,直接调用Servlet对象的service方法。

    JSP的页面指令

  • 可以对JSP页面进行配置
    <%@ page 属性=值 %>
  • page指令的属性:
    language 语言类型
    contentType 页面内容类型
    pageEncoding 页面编码
    import 导入类
    import="java.util.List"
    import="java.util.List,java.util.Map"
    ignoreEL 是否忽略EL表达式 true 忽略,false 不忽略
    errorPage 设置错误页面的路径
    isErrorPage 把当前页面作为错误页面 true 是 false 不是错误页面
  • taglib指令用于给页面导入标签库
    <%@ taglib uri="标签库的地址" prefix="标签库前缀" %>
  • include指令用于在当前JSP页面中包含另一个JSP页面
    <%@ include src="页面路径" %>

    JSP的脚本

    JSP是可以将HTML代码和Java代码整合到一起
  1. 定义全局变量
    <%! 定义变量%>
  2. 一般java脚本
    <%java代码%>
  3. 输出脚本
    <%= 输出内容%>

    JSP的内置对象

    JSP有9个内置对象,一部分是service方法的局部变量

    变量名 类型
    application ServletContext(Servlet上下文)
    session HttpSession(Http会话)
    request ServletHttpRequest
    pageContext PageContext
    page this,当前Servlet对象
    config ServletConfig 可以用于读取Servlet的配置信息
    out JspWriter字符输出流,用于向浏览器发送数据
    response ServletHttpResponse Http响应对象,可以用于向浏览器发送数据、重定向等
    exception Exception页面出现异常后的异常对象

    前四个对象

    共同特点:都可以存取数据

    存数据
    void setAttribute(String key,Object value)
    取数据
    Object getAttribute(String key)

    区别:

  • 数据保存的位置不同,访问的范围不同
  • application 数据保存在服务器中,所有用户都可以共享
  • 注意:不要在application随便保存数据,数据内存很难得到释放
  • session 当一个用户(浏览器)第一次访问服务器时,服务器会
    为该用户开辟内存空间,用于保存该用户的数据,此空间就是session,在session中保存的数据可以被当前用户的多个JSP或Servlet共享。

jsp_第1张图片

  • 注意:不需要多个页面共享的数据不要保存到Session中,Session会在用户访问期间一直保存,Session会在用户断开后30分钟后销毁。
  • request 数据保存在请求中,进行页面跳转时,前面的页面或Servlet可以保存数据,由跳转到页面或Servlet来接受。(页面跳转的前后两个页面或Servlet共享
  • 页面forward跳转:
    request.getRequestDispatcher("路径").forward(请求,响应);
  • pageContext 数据保存在当前页面中,只能被当前页面访问

    EL表达式

    Expression Language
    简化JSP的开发,用于读取四大对象中的数据

    脚本:

    <%=request.getAttribute("name")%>

    EL:

    读取单个变量
    ${name}
    读取对象的属性
    ${student.name}

    ${student["name"]}

    如果在application、session、request、pageContext都保存相同名字的数据,使用EL读取的是哪一个?

    优先级:pageContext > request > session > application

    如何分别从四个对象读取相同名字的值

    域对象.变量名
    域对象 内置对象
    applicationScope application
    sessionScope session
    requestScope request
    pageScope pageContext

JSTL标签库

简化JSP开发,把Java代码用标签进行封装,从而实现HTML代码和Java代码解耦。

用法:

  1. 导入jar包
  2. 在页面开头添加taglib页面指令
    添加核心标签库
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. 使用标签
  • if标签

    HTML代码
  • choose标签

    
        HTML
    
    
        HTML
    
        ...
    
        HTML
    
  • forEach标签
    1. 固定次数循环
      HTML
    2. 遍历集合库名
      HTML + ${变量名.属性}

MVC设计模式

Web企业级开发主流的开发模式

  • 该模式的目的:解耦(高内聚、低耦合)
    Model1(Java和HTML耦合)——> Model2(MVC,代码分层)
    M Model 模型 和数据相关(实体层、DAO层、Service层)
    V View 视图 展示数据和用户交互(JSP、HTML、小程序)
    C Controller 控制器 调用模型,更新视图(Servlet)

jsp_第2张图片

  • Servlet ——> Service ——> DAO ——> 数据库
  • Service是业务逻辑层(实现复杂业务逻辑、事务操作)
  • 实现无忧保姆的后台管理系统
    实现用户列表的显示
    1. 导入jar包
    2. 添加配置文件 如:连接池配置等
    3. 创建包
    4. 创建实体类
    5. 创建工具类、DAO层
    6. 创建Service层
    7. 创建Servlet
    8. 创建JSP

作业:

1、使用MVC模式完成用户表的列表显示
2、创建管理员表
    字段:
    编号(主键、自增)
    用户名 字符串
    密码 字符串
创建登录JSP页面,能实现输入账号和密码,进行后台验证,成功后能查看用户列表页面,失败就进行提示

你可能感兴趣的:(jsp)