1.帮助servlet编写html(输出)

servlet
用字符串拼接html代码(不直观、易出错)
jsp
直接编写html代码(直观、可调试)

2.代替servlet编写java代码(处理)

java脚本
直接将java代码嵌入html页面
jsp标签
用jsp标签代替一段java代码

3.作为servlet接收请求(输入)

开发时
被developer当成html页面
运行时
被tomcat编译成servlet

1.脚本(写java代码)

<%= 表达式%>
相当于占位符,将结果写入html
<% 代码段%>
就是原封不动的java代码块
<%! 变量%>
仅用来声明java变量

2.隐式对象(方便写java代码:提供servletAPI的快捷方式)

request
就是servlet中的request
response
就是servlet中的response
session
就是servlet中的request.getSession()
application
就是servlet中的request.getServletContext()

3.jsp标签(方便写java代码:用jsp标签代替一段java代码)

<jsp:include />
context.getRequestDispatcher("其它url").include(request, response)
<jsp:forward />
context.getRequestDispatcher("其它url").forward(request, response)
<jsp:useBean />
XXClass bean = new XXClass()
<jsp:setProperty />
bean.setXX(值)
<jsp:getProperty />
bean.getXX()
<jsp:param />
request.setParameter("参数名", "值")

4.指令(编译选项)

<%@ page %>
如何处理当前页面(比如:编码方式、要导入的jar包)
<%@ include %>
组合哪些jsp页面
<%@ taglib %>
用到哪个jsp标签库

1.优点(解决问题)

html
用自然的方式输出html

2.缺点(过犹不及)

java
4类jsp组件都在围绕java做文章,带来了复杂性(学新知识)
servlet
代替原生servlet接收请求(没必要)

1.思路

扬长
用它输出html
避短
不用它写java

2.做法(MVC模式)

输入C
使用servlet(控制器Controller)
处理M
使用java类(业务模型Model)
结果B
使用java bean(视图模型View Model)
输出V
使用jsp(视图View)
过程
request --> C -调用M-> B -嵌入-> V --> response

1.作用

衔接
servlet和jsp的桥梁
嵌入
javaBean的结构决定了view的动态部分

2.Java bean是什么

jsp调用它
定义了jsp如何使用java类
java类实现它
java类要满足哪些约束

3.jsp使用JavaBean

获取对象
<jsp:useBean id="对象名" class="类名" scope="page/request/session/application" />
获取属性
<jsp:setProperty name="所属对象名" property="属性名" value="值" />
设置属性
<jsp:getProperty name="所属对象名" property="属性名" />

4.java类实现JavaBean

无参数构造函数
能够直接创建对象
get/set访问器
规范读写方式(将域隐藏、用属性暴露)

5.servlet如何将JavaBean传输给jsp?

策略
借用容器的Attributes
容器类型
page/request/session/application
生命周期
与容器的生命周期相同

1.写controller:协调整体过程

1
分析功能场景,定义servlet和action(添加好注释)
2
在action内,用注释或伪代码说明逻辑步骤
3
根据注释编写代码,遇到业务逻辑就定义成model
4
遇到处理结果就定义成java bean
5
将bean写入容器、并跳转到view

2.写model:业务逻辑

1
在model类中根据接口写业务逻辑,遇到数据库操作就定义成repository
2
在repository类中根据接口写jdbc代码

3.写bean:业务结果

1
根据用户需求,定义要输出的数据结构
2
将业务逻辑的处理结果,映射到bean的属性中

4.写view:界面

1
画静态html
2
获取bean、并用它的属性替换html中的动态变化部分
3
如果动态部分有控制逻辑,编写<% java代码%>

1.自定义标签(控件)

本质
tag → class
				
				

2.JSTL(apache官方的控件库)

下载
https://tomcat.apache.org/download-taglibs.cgi
安装
spec.jar和impl.jar 放在 /WEB-INF/lib下,并加入BuildPath
				
				

3.EL表达式

目的
简化<%=bean.get属性() %>
外部语法
<%= %> → ${ }
内部语法
bean.get属性() → bean.属性

1.eclipse的项目临时目录: workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
2.在eclipse的项目临时目录,可以查看jsp被编译后生成的servlet类