A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金星君 初级黑马   /  2019-6-21 15:10  /  845 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

# 1、JSP
## 1、指令
### 1、作用:用于配置JSP页面,导入资源文件
### 2、格式:
<%@ 指令名称 属性名1="属性值1" 属性名2="属性值2" %>
### 3、分类
#### 1、page:配置JSP页面(软件自动生成)
##### 1、属性contentType:等同于response.setContent()
1、设置响应体的mime类型以及字符集
2、设置当前jsp页面的编码(低级编辑器不支持,需要另设pageEncoding属性)
3、如果设置pageEncoding,则可不用设置contentType,因为会自动配置
##### 2、属性import:导包
##### 3、errorPage:当前页面发生异常后,会自动跳转到指定的错误页面
##### 4、isErrorPage:标记当前页面是否是错误界面。标记后,可以使用exception对象
#### 2、include:页面包含。导入页面的资源文件。将两个页面的内容,展示在一个页面中
​        1、静态包含:只生成一个页面的文件
​        2、动态包含:生成各自界面的文件
#### 3、taglib:导入资源。导入标签库(如同导包)
## 2、注释
1、html注释:<!-- -->,只能注释html片段。访问页面时,会被输出到页面源码
2、jsp注释:<%-- --%>,注释所有。访问页面时,不会输出到源码
## 3、内置对象(在jsp中不需要创建,直接使用的对象)
### 1、九个对象
| 类名                  | 变量          | 作用                  |
| :------------------ | :---------- | :------------------ |
| PageContext         | pageContext | 当前页面共享数据,可以或取其他八个对象 |
| HttpServletRequest  | request     | 一次请求访问多个资源(转发)      |
| HttpSession         | session     | 一次对话的多个请求间          |
| ServletContext      | application | 所有用户间共享数据           |
| HttpServletResponse | response    | 响应对象                |
| Objiect             | page        | 当前页面对象,this         |
| JspWriter           | out         | 输出对象,把数据输出到页面上      |
| ServletConfig       | config      | servlet配置对象         |
| Throwable           | exception   | 异常对象                |
### 2、域对象的范围从大到小
application>session>request>pageContext
# 2、MVC开发模式
## 1、定义:将一个程序分成三个部分
### 1、M:model模型:业务逻辑操作(如:查询数据库,封装对象),用JavaBean实现
### 2、V:view视图:展示数据,用JSP实现
### 3、C:controller控制器:用Servlet实现
####         1、获取客户端的输入
####         2、调用模型
####         3、将数据交给视图展示
## 2、流程
### 1、访问控制器
### 2、调用模型,业务操作,返回控制器
### 3、通过控制器,将数据展示在视图
### 4、响应浏览器
## 3、优点
1、耦合性低,方便维护,利于分工协作
2、重用性高
## 4、缺点:使项目架构变得复杂,对开发人员变高
# 3、EL表达式
## 1、概念:表达式语言Expression Language
## 2、优点:替换和简化jsp页面中java代码的编写,获取域中对象
## 3、语法:${表达式}
## 4、注意:
###         1、jsp默认支持EL表达式,
###         2、设置isELIgnored属性为true,忽略EL
###         3、在语句前加‘\’,即/${表达式},忽略当前EL
## 5、作用
### 1、运算
#### 1、运算符
1、算术运算符:+ - * /(div) %(mod)
2、比较运算符:> < >= <= == !=
3、逻辑运算符:&&(and) ||(or) !(not)
4、空运算符:empty  用于判断字符串、集合、数组,对象是否为null并且长度是否为0,如:
​        ${empty list}  
​        取反${not empty list}
### *2、获取值
#### 1、EL表达式只能从域对象中获取值
#### 2、语法:
#####         1、${域名.键名}:从指定域中获取指定值
```java
//域名(对应四个域对象)
//1、pageScope
//2、requestScope
//3、sessionScope
//4、applicationScope
```
#####         2、${键名}:表示依次从最小的域中开始查找该键对应的值
#####         3、如果未找到键对应的值,则返回一个空字符串
### 3、获取对象
####         1、通过对象的属性来获取
#####                 1、${域名.对象名.属性名}
#####                 2、${对象名.属性名}
####         2、如果对象的属性是一个对象,可在后面再接次属性对象的属性
#####                 ${对象名.属性对象名.属性}
####         3、自定义属性,实现想要的效果。
#####         1、即在描述类中自定义一个getXxx()的方法
#####         2、方法体内写入需要实现的代码       
#####         3、xxx就是自定义属性
### 4、获取List集合和Map集合
####         1、List集合:
#####         1、${域名.集合对象名[索引]}
#####         2、${集合对象名[索引]}       
#####         3、如果索引越界,会返回空字符串
#####         4、如果集合内存储的是对象:${集合对象名[索引].属性名}
####         2、Map集合:
#####         1、${域名.集合对象名.键名}
#####         2、${集合对象名.键名}
#####         3、${集合对象名["键名"]}
#####         4、如果存储的是对象:${集合对象名.键名.属性名}
### 5、隐式对象:
####         1、pageContext能获取其他八个对象,如:${pageContext.request}
####         *2、在jsp动态获取虚拟目录:${pageContext.request.contextPath}
# 4、JSTL标签
## 1、概念:Java Server Pages Tag Library         JSP标准标签库
## 2、用于简化和替换jsp页面是的java代码
## 3、流程:
1、导入jstl相关jar包
*2、引入标签库:taglib指令:<&@ taglib &>:<&@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3、使用标签
## 4、常用jstl标签
### 1、if:等同于java的if
```jsp
//定义格式
<c:if test = "表达式(true/false)">显示内容/代码块</c:if>
//例如
<c:if test = "${not empty list}">遍历集合...</c:if>
```
​        1、一般情况,结合el表达式使用
​        2、<c:if>没有else语句体       
### 2、choose-when-otherwise:等同于java的switch-case-default
```jsp
<c:choose>
  <c:when test="表达式1"></c:when>
  <c:when test="表达式2"></c:when>
  <c:when test="表达式3"></c:when>
  ...
  <c:otherwise></c:otherwise>
</c:choose>
```
### *3、forEach:等同于java的for
#### 1、普通for循环
```java
//java
for(int i=1;i<=10;i++){
  sout(i);
}
```
```jsp
//jsp
<c:forEach begin="1" end="10" var="i" step="1">
  ${i}
</c:forEach>
```
#####         属性:
​        1、begin:开始值
​        2、end:结束值
​        3、var:临时变量
​        4、step:步长
​        5、varStatus:循环状态对象
​                1、index:容器中元素的索引,从0开始       
​                2、count:循环次数,从1开始
#### 2、遍历容器for循环
```java
//java
for(String str:list){}
```
```jsp
//jsp
<c:forEach item="${list}" var="str" varStatus="s">
        //输出循环索引、次数、值
        ${s.index} ${s.count} ${str}
</c:forEach>
```
#####         属性:
​        1、items:容器对象
​        2、var:容器中元素的临时变量
​        3、varStatus:循环状态对象
​                1、index:索引       
​                2、count:计数
# 三层架构:软件设计架构
1、界面层(表示层)(web层)
2、业务逻辑层(service层)
3、数据访问层(dao层)
# 设计流程
1、需求
2、设计
​        1、技术选型
​        2、数据库设计
3、开发
​        1、环境搭建
​                1、创建数据库环境
​                2、创建项目,导入需要的jar包
​        2、编码
4、测试
5、部署运维
# 杂记
DBA:数据库管理员
1、设置数据库
2、分配权限
重定向与请求转发
功能:跳转页面
1、如果要跳转的页面需要携带数据过去展示
​        1、首先考虑使用请求转发---request域对象进行配合
​        2、如果当前页面跳转的是一个全新的页面,则考虑重定向+session域的模式
​        3、重定向可以保证路径显示的改变
queryForObject一定会抛异常

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马