jsp
java server page
用途:主要用来生成html标签
在表现形式上类似于html 但多了一行
```
<%@ page contentType="text/html;charset=utf-8" %>
```
上面的代码称为 page 指令,主要作用就是指明此页面是一个jsp页面,并且通过contentType说明他的字符编码和格式
jsp 中有
1. 指令: `<%@ 指令名 %>`
2. 脚本: `<% 可以是任意java代码 %>`
3. 表达式: `<%= 表达式 %>` 把执行结果显示在页面上
EL表达式语言
expression language 在jsp用来展示结果的语言
语法
${ 表达式语言 }
要用el表达式显示复杂的内容,需要把内容提前放入`作用域`, el再从`作用域`中把内容取出来显示
// 设置属性
pageContext.setAttribute("名称", Object); // 把内容起一个名字放入作用域
之后就可以通过EL表达式
${pageScope.名称}
el表达式可以通过
${对象.属性名} 但这里的属性名,依据是对象的get方法,而不是私有属性名
把get方法中get去掉(或把is方法的is去掉),剩余的单词首字母小写,作为对象的属性名,例如
getName() ==> name
getUsername() ==> username
getHelloWorld() ==> helloWorld
isClose() ==> close
JSTL
java 标准标签库
java standard tag library
主要的工具就是配合el表达式,实现循环,条件判断等功能
前提: 加入jstl-1.2的jar包
导入标签库
<%@ taglib uri="标签库唯一标识" prefix="前缀" %>
1) forEach
```
<c:forEach items="要遍历的集合" var="临时变量名" begin="起始数字" end="结束数字">
${临时变量名}
</c:forEach>
```
要遍历的集合 必须使用${} 从作用域获取
2 )if
```
<c:if test="布尔条件">内容</c:if>
```
3)choose 类似于 if elseif else
语法:
```
<c:choose>
<c:when test="条件1">内容1</c:when>
<c:when test="条件2">内容2</c:when>
...
<c:when test="条件n">内容n</c:when>
<c:otherwise>以上条件都不成立时</c:otherwise>
</c:choose>
```
4)out 用来输出特殊内容
它可以对${}输出的内容进行控制,可以控制是否忽略html代码
```
<c:out escapeXML="false" value="${作用域变量}"> 不忽略html
```
```
<c:out escapeXML="true" value="${作用域变量}"> 忽略html,(当做普通文本)
```
5)fmt:formatDate 用来格式化日期
fmt:formatNumber 用来格式化数字
语法示例:
需要添加指令:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
```
<fmt:formatDate value="日期对象" pattern="日期格式"/>
<fmt:formatNumber value="数字对象" pattern="数字格式"/>
```
数字格式 `#` 和 `0` 其中0可以用来前置补零或后置补零
MVC 思想
Model 模型 ==> 数据(例如从数据库查询出来的list集合, 里面包含java对象)
View 视图 ==> 数据的展现形式 (jsp就是一种视图技术)
Controller 控制器 ==> 把模型和视图联系起来 (servlet 充当控制器作用)
由servlet器查询数据,把数据放入作用域,跳转至jsp视图
jsp视图从作用域中获取数据,并展示
> 注意: 服务器常见的错误类型
500 Internal Server Error 服务器内部错误,由于应用程序自己没有正确处理异常,异常抛给了tomcat,这时就会出现500
404 Not Found 资源未找到错误,发生于要访问的资源不存在(资源可能是servlet, jsp, html)
405 Method Not Allowed 方法不支持,
当没有覆盖doGet但发送了get请求时
当没有覆盖doPost但发送了post请求时
200 OK 表示这次请求正常,没有错误
304 这个文件没有修改,请浏览器使用上一次缓存的文件
这些数字称为响应状态码