JSP
JSP简介
概念:java Servlet Pages:java服务器端页面,本质上是一个Servlet
JSP页面中可以同时有HTML标签和java代码,用于简化书写
使用方式:
方式 | 功能描述 |
---|---|
<% java代码 %> | Java代码等效于在Service方法中执行 |
<%! java代码 %> | java代码 |
<%= java代码 %> | java代码会直接输出到页面上 |
JSP的内置对象:
-
在jsp页面中的对象不需要获取和创建,可以直接使用
-
jsp一共有9个内置对象。
-
request
-
response
-
out
:字符输出流对象。可以将数据输出到页面上。out.write()
与response.getwriter()
区别:response.getWriter()
数据输出永远在out.write()
在前
-
指令
作用:用于配置JSP页面,导入资源文件
格式:
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ...%>
分类:
page
:配置JSP页面的include
:页面包含的。导入页面的资源文件taglib
:导入资源
page
属性:
-
contentType
- 设置响应体的mine类型以及字符集
- 设置当前jsp页面的编码
注意:只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性值设置当前页面的字符集
-
import
:导包 -
errorPage
:当前页面发生异常后,会自动跳转到指定的错误页面 -
isErrorPage
:标识当前页面是否可以显示异常信息- true:可以使用内置对象Exception
- false:默认,不可以使用
include(极少用)
<%@include file="top.jsp" %>
taglib
<%@ taglib prefix="自定义前缀" url="jsp库的路径"
prefix
:前缀,自定义的,用于引用
注释
- html注释:
<!--注释内容-->
(只能用于HTML注释) - jsp注释:
<%-- 注释内容 --%>
(注释所有)
注意:最好使用jsp注释
内置对象
概念:在jsp页面中不需要注释,直接使用的对象
一共有9个:
变量名 | 真实类型 | 作用 |
---|---|---|
pageContext | PageContext | 当前页面共享数据,还可以获取其他8个内置对象 |
request | HttpServletRequest | 一次请求访问的多个资源 |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
response | HttpServletResponse | 响应对象 |
page | Object | 当前页面的对象 |
out | JspWriter | 输出对象,数据输出到页面上 |
config | ServletConfig | Servlet的配置对象 |
exception | Throwable | 异常对象 |
MVC开发模式
含义:
- M(model),模型,使用javaBean
作用:完成具体的业务操作,如:查询数据库,封装对象
- V(view),视图,使用JSP
作用:展示数据
- C(Controller),控制器,使用Servlet
作用:获取用户的输入,调用模型,将数据交给视图进行展示
优缺点:
- 优点:耦合性低,方便维护,可以利于分工协作,重用性高
- 缺点:使项目架构复杂
EL表达式
概念:Expression Language 表达式语言
作用:替换和简化jsp页面中的编写
语法:${表达式}
注意:
jsp默认支持el表达式。如果要忽略el表达式
- 设置jsp中page指令中:
isELIgnored="true"
,忽略当前jsp页面中所有的el表达式 \${表达式}
:将el表达式原样显示
运算:
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符:> < >= <= !=
- 逻辑运算符:&&(and) ||(or) !(not)
- 空运算符:empty
- 功能:用于判断字符串、集合、数组对象是否是null并且长度是否为0
- 如:
${empty list}
获取值:
el表达式只能从域对象中获取值
语法:
${域名称.键名}
:从指定域中获取指定键的值
域名称 | 原来域 |
---|---|
pageScope | pageContext |
requestScope | request |
sessionScope | session |
applicationScope | application(ServletContext) |
例子:${requestScope.name}
${键名}
:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
获取对象、List集合、Map集合的值
获取值来源 | 语法 |
---|---|
对象 | ${域名称.键名.属性值} |
List集合 | ${域名称.键名[索引]} |
Map集合 | ${域名称.键名.key名称} ${域名称.键名["key名称"]} |
- 隐式对象:el表达式中有11个隐式对象
pageContext
:获取其他8个内置对象
${pageContext.request.contextPath}:动态获取虚拟目录
JSTL
概念:JSP标准标签库,由Apache组织提供的
作用:用于简化和替换jsp页面上的java代码
使用步骤:
- 导入jstl相关的jar包
- 引入标签库:
taglib
指令:<%@ taglib %>
- 使用标签
常用的jstl标签:
标签名称 | 类似java关键字 |
---|---|
if | if |
choose | switch |
when | case |
otherwise | default |
foreach | for |
标签if
的属性注意:
test
为必须属性,接收boolean表达式- 标签
if
没有else情况。
三层架构:软件架构
架构层次:
-
界面层(表示层):用户看的得界面。用户可以通过界面上的组件和服务器进行交互
-
业务逻辑层:处理业务逻辑的。
-
数据访问层:操作数据存储文件。