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数据不共享,所以不能做数据传递
- JSP内置对象
不用创建,直接使用
本质 就是service方法中的局部变量
Request 请求对象
Response 响应 对象
Session 会话
Out 输出流,用于向页面打印
Application servletContext 全局环境
Config servletConfig
- 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表达式
- 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标签库
默认是这种现实方式
可以通过格式化标签解决