JSP细节内容

JSP

  1. 指令
    • 作用 : 用于配置JSP页面,导入资源文件
    • 格式 :
      <% 指令名称 属性名1=属性值1 属性名2=属性值2%>
    • 分类 :
      1. page: 配置JSP页面的
        • contentType : 等同于response.setContentType()
          1. 设置响应体的mime类型以及字符集
          2. 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
        • import : 导包
        • errorpage : 当前页面发生异常后,会自动跳转到指定的错误页面
        • isErrorPage ; 标识当前页面是否是错误页面.
          • true : 是 可以使用内置对象exception
          • false : 否 默认值. 不可以使用内置对象exception.
      2. include : 页面包含的,导入页面的资源文件.
        • <%@include file=“top.jsp”%>
      3. taglib : 导入资源
        • <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
  2. 注释 :
    1. html注释 :
      < !-- --> : 只能注释html代码片段
    2. jsp注释 : 推荐使用
      <%-- --%> : 可以注释所有 : 推荐使用
  3. 内置对象
    • 在jsp页面中不需要创建,直接使用的对象
    • 一共有9个:
      变量名 真实类型 作用
      • pageContext pageContext 当前页面共享数据,此外 可以获取其它8个内置对象
      • request HttpServletRequest 一次请求访问的多个资源(转发)
      • session HttpSession 一次会话的多个请求间
      • application ServletContext 所有用户间共享数据
      • response HttpServletResponse 响应对象
      • page Object 当前页面(Servlet)的对象 this
      • out JspWriter 输出对象,数据输出到页面上
      • config ServletConfig Servlet的配置对象
      • exception Throwable 异常对象

MVC : 开发模式

  1. jsp演变历史
    1. 早期只有servlet,只能使用response输出标签数据,非常麻烦
    2. 后来有jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,又写html标签,造成难于维护,难于分工协作.
    3. 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理.
  2. MVC
    1. M : Model,模型. JavaBean
      • 完成具体的业务操作,如: 查询数据库,封装对象.
    2. V : View,视图 . JavaBean
      • 展示数据
    3. C : controller,控制器.Servlet
      • 获取用户的输入
      • 调用模型
      • 将数据交给视图进行展示
    • 优缺点 :
      1. 优点 :
        1. 耦合性低,方便维护,可以利于分工协作
        2. 重用性高
      2. 缺点 :
        1.使得项目架构变得复杂,对开发人员要求高.

EL表达式

  1. 概念 : Expression Language 表达式语言
  2. 作用 : 替换和简化jsp页面中java代码的编写
  3. 语法 : ${表达式内容}
  4. 注意:
    • jsp默认支持el表达式的,如果要忽略el表达式
      1. 设置jap中page指令中 : isElIgnored=“true” 忽略当前jsp页面中所有的el表达式
      2. ${表达式内容} : 忽略当前这个el表达式
  5. 使用
    1. 运算
      • 运算符 :
        1. 算数运算符 : + - * /(div) %(mod)
        2. 比较运算符 : > < >= <= !=
        3. 逻辑运算符 : &&(and) ||(or) !(not)
        4. 空运算符 : empty
          • 功能 : 用于判断字符串,集合,数组对象是否为null并且长度是否为0.
          • ${empty list}
          • ${not empty} : 表示判断字符串,集合,数组对象是否不为null,并且长度>0.
    2. 获取值
      1. el表达式只能从域对象中获取值.
      2. 语法 :
        1. ${域名称,键名} : 从指定域中获取指定键的值
          • 域名称 :
            1. pageScope -->pageContext
            2. requestScope -->request
            3. sessionScope -->session
            4. applicationScope -->application(ServletContext)
          • 举例 : 在request域中存储了name=张三
          • 获取 : ${requestScope.name}
        2. ${域名} : 表示依次从最小的域中查找是否有该键对应的值,直到找到为止.
        3. 获取对象,List集合,Map集合的值.
          1. 对象 : ${域名称,键名,属性名}
            • 本质上会去调用对象的getter()方法
          • 注意 : 逻辑视图概念,为了方便在页面展示数据,对javaBean进行改造(例如对日期进行格式化操作),以满足需求.
          1. List集合 : ${域名称.键名[索引]}
          2. Map集合 :
            • ${域名称.键名.key名称}
            • ${域名称.键名[“key名称”]}
      3. 隐式对象 :
        • el表达式中有11个隐式对象
        • pageContext:
          • 获取jsp其它八个内置对象
            • ${pageContext.request.contextPath} : 动态获取虚拟目录.

JSTL

  1. 概念 : JavaServer Pages Tag Library JSP标准标签库
    • 是由Apache组织提供的开源免费的jsp标签 <标签>
  2. 作用 : 用于简化和替换jsp页面上的java代码
  3. 使用步骤 :
    1. 导入jstl相关的jar包
    2. 引入标签库 ; taglib指令 : <% taglib %>
    3. 使用标签
    4. 常用的JSTL标签:
      • if标签 相当于java代码的if语句
        1. 属性 :
          • test 必须属性,接收boolean表达式
            • 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容.
            • 一般情况下,test属性会结合el表达式一起使用
        2. 注意:
          • c:if 标签没有else情况,如果想要else情况,则可以再定义一个c:if 标签
      • choose 相当于java代码中的switch语句
        • when标签相当于case
        • otherwise标签相当于其他情况的说明,相当于default.
      • foreach 相当于java代码中的for循环
        1. 完成重复的操作
          for(int i=0;i<10;i++){
          }
          • 属性 :
            begin : 开始值
            end : 结束值
            var : 临时变量
            step : 步长
            varStatus : 循环状态对象
            index:容器中元素的索引,从0开始
            count:循环次数,从1开始
        2. 遍历容器
          List<=User> list
          for(User user : list){
          }
          • 属性
            items : 容器对象
            var: 容器中元素的临时变量
            varStatus : 循环状态对象
            index:容器中元素的索引,从0开始
            count:循环次数,从1开始

三层架构 : 软件设计架构

  1. 界面层(表示层/web层) : 用户看的到的界面,用户可以通过界面上的组件和服务器进行交互.
    • 作用 : 接收用户参数,封装数据,调用业务逻辑层完成处理,转发jsp页面完成显示
    • 命名: com.itheima.项目名.web
  2. 业务逻辑层(service层):处理业务逻辑的
    • 作用 : 组合DAO层中的简单方法,形成复杂的功能(业务逻辑操作)
    • 命名:com.itheima.项目名.service
  3. 数据访问层(dao层):操作数据存储文件
    • 作用:定义了对数据库最基本的CRUD操作
    • 命名:com.itheima.项目名.dao+

案例 : 用户信息列表展示

  1. 需求 : 用户信息的增删改查操作
  2. 设计
    1. 技术选型 : Servlet+JSP+MySQL+JDBCTemplate+Duird+BeanUtils+tomcat
    2. 数据库设计:
      create database day17; --创建数据库
      use day17; --使用数据库
      create table user( --创建表
      id int primary key auto_increment,
      name varchar(20) not null,
      gender varchar(5),
      age int,
      address varchar(32),
      qq varchar(20),
      email varchar(50)
      );
    3. 开发
      1. 环境搭建
        1. 创建数据库环境
        2. 创建项目,导入需要的jar包
      2. 编码
    4. 测试
    5. 部署运维
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值