2021.08.19

1.6 请求流程

http://localhost:8080/Servlet_01/hello
当客户端浏览器发送请求 的时候
通过 localhost可以找到当前电脑
:8080 就找到 tomcat的webapps

Servlet_01 就是我们要执行的项目
/hello 就是我们要请求的servlet_01项目中的功能

此时 /hello就会去和Servlet_01项目中 的web.xml中定义的路由进行匹配(或者是注解定义的路由)

找到这个对应的类之后,就会去执行该类中的init方法,service方法等

或者是根据注解方式的路由 就可以执行定位到类

注意 整个项目中 路由 必须唯一
2. 跳转
2.1 请求转发
只会发送一条请求

只发送一条请求,地址栏不变,还是index,客户端无感知跳转
因为只发送了一条请求,所以request中数据共享

适合向页面传递数据,比如数据展示,可以通过后端把数据获取,然后设置到request中
并转发到对应的jsp页面,在jsp页面进行操作

可以看到 地址栏请求的还是/a/b/c 但是 页面却是其他页面(发生了转发)
并且在该页面中,可以获取request设置的数据 张三
2.2 重定向

重定向跳转 客户端发送两条请求,地址栏变为login
并且 request数据不共享,适合做普通的页面跳转

通过测试发现 重定向跳转 会发送两条请求
而地址栏 也是最后一个请求,并且request数据不共享,所以不能做数据传递

  1. JSP内置对象
    不用创建,直接使用

本质 就是service方法中的局部变量
Request 请求对象
Response 响应 对象
Session 会话
Out 输出流,用于向页面打印
Application servletContext 全局环境
Config servletConfig

  1. EL表达式
    4.1 概述
    EL表达式 主要用于获取数据 等于 request.getAttribute(“xxxx”)
    4.2 为什么使用EL表达式
    MVC应该是轻量级的框架,但是在JSP中 通过 <%%> 这种写法,功能太强,不符合MVC设计理念
    甚至你可以直接把操作数据库的JDBC代码在JSP中编写,完全脱离了后端java类
    所以 为了尽可能的在视图层出现java逻辑代码,提出了EL表达式和JSTL

4.3 语法
${xxx} 等于 request.getAttribute(“xxx”) 这两句话是等价的

可以通过\ 忽略el表达式

  1. JSTL表达式
    5.1 概述
    JSTL : JSP Standard Tag Library JSP标准标签库
    使用JSTL必须先导入对应的jar包

5.2 为什么用JSTL
上述我们分析了JSP带来的问题及解决方案
但是EL表达式只能解决数据获取的问题,比如用户列表等循环遍历操作或者是流程控制操作
EL表达式是做不到的,此时就需要依赖JSTL完成这件事.但是JSTL不能获取数据
所以 一般EL表达式会和JSTL一起使用,功能才更加强大

最初的设计目的是解决两个问题,
1 上述分析的问题,不符合MVC模式
2 写JSP的人,应该是前端或者是美工,不需要有java编程基础

简单来说 它们就是用来简化JSP中的java代码的,使JSP代码更简短美观
5.3 标签库
1 核心标签库 : 最常用的部分,比如流程判断,循环遍历等
2 I18N 格式标签库 : 对数据显示进行格式化,比如时间格式化,数字格式化

5.4 核心标签库
1 导包

2 引入

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

5.4.1 循环结构

后端已经传递了一个集合数据

5.4.2 分支结构

5.5 格式化I18N标签库

默认是这种现实方式

可以通过格式化标签解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值