JSP
- 指令
- 作用 : 用于配置JSP页面,导入资源文件
- 格式 :
<% 指令名称 属性名1=属性值1 属性名2=属性值2%> - 分类 :
- page: 配置JSP页面的
- contentType : 等同于response.setContentType()
- 设置响应体的mime类型以及字符集
- 设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集)
- import : 导包
- errorpage : 当前页面发生异常后,会自动跳转到指定的错误页面
- isErrorPage ; 标识当前页面是否是错误页面.
- true : 是 可以使用内置对象exception
- false : 否 默认值. 不可以使用内置对象exception.
- contentType : 等同于response.setContentType()
- include : 页面包含的,导入页面的资源文件.
- <%@include file=“top.jsp”%>
- taglib : 导入资源
- <%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
- page: 配置JSP页面的
- 注释 :
- html注释 :
< !-- --> : 只能注释html代码片段 - jsp注释 : 推荐使用
<%-- --%> : 可以注释所有 : 推荐使用
- html注释 :
- 内置对象
- 在jsp页面中不需要创建,直接使用的对象
- 一共有9个:
变量名 真实类型 作用- pageContext pageContext 当前页面共享数据,此外 可以获取其它8个内置对象
- request HttpServletRequest 一次请求访问的多个资源(转发)
- session HttpSession 一次会话的多个请求间
- application ServletContext 所有用户间共享数据
- response HttpServletResponse 响应对象
- page Object 当前页面(Servlet)的对象 this
- out JspWriter 输出对象,数据输出到页面上
- config ServletConfig Servlet的配置对象
- exception Throwable 异常对象
MVC : 开发模式
- jsp演变历史
- 早期只有servlet,只能使用response输出标签数据,非常麻烦
- 后来有jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大量的java代码,又写html标签,造成难于维护,难于分工协作.
- 再后来,java的web开发,借鉴mvc开发模式,使得程序的设计更加合理.
- MVC
- M : Model,模型. JavaBean
- 完成具体的业务操作,如: 查询数据库,封装对象.
- V : View,视图 . JavaBean
- 展示数据
- C : controller,控制器.Servlet
- 获取用户的输入
- 调用模型
- 将数据交给视图进行展示
- 优缺点 :
- 优点 :
- 耦合性低,方便维护,可以利于分工协作
- 重用性高
- 缺点 :
1.使得项目架构变得复杂,对开发人员要求高.
- 优点 :
- M : Model,模型. JavaBean
EL表达式
- 概念 : Expression Language 表达式语言
- 作用 : 替换和简化jsp页面中java代码的编写
- 语法 : ${表达式内容}
- 注意:
- jsp默认支持el表达式的,如果要忽略el表达式
- 设置jap中page指令中 : isElIgnored=“true” 忽略当前jsp页面中所有的el表达式
- ${表达式内容} : 忽略当前这个el表达式
- jsp默认支持el表达式的,如果要忽略el表达式
- 使用
- 运算
- 运算符 :
- 算数运算符 : + - * /(div) %(mod)
- 比较运算符 : > < >= <= !=
- 逻辑运算符 : &&(and) ||(or) !(not)
- 空运算符 : empty
- 功能 : 用于判断字符串,集合,数组对象是否为null并且长度是否为0.
- ${empty list}
- ${not empty} : 表示判断字符串,集合,数组对象是否不为null,并且长度>0.
- 运算符 :
- 获取值
- el表达式只能从域对象中获取值.
- 语法 :
- ${域名称,键名} : 从指定域中获取指定键的值
- 域名称 :
- pageScope -->pageContext
- requestScope -->request
- sessionScope -->session
- applicationScope -->application(ServletContext)
- 举例 : 在request域中存储了name=张三
- 获取 : ${requestScope.name}
- 域名称 :
- ${域名} : 表示依次从最小的域中查找是否有该键对应的值,直到找到为止.
- 获取对象,List集合,Map集合的值.
- 对象 : ${域名称,键名,属性名}
- 本质上会去调用对象的getter()方法
- 注意 : 逻辑视图概念,为了方便在页面展示数据,对javaBean进行改造(例如对日期进行格式化操作),以满足需求.
- List集合 : ${域名称.键名[索引]}
- Map集合 :
- ${域名称.键名.key名称}
- ${域名称.键名[“key名称”]}
- 对象 : ${域名称,键名,属性名}
- ${域名称,键名} : 从指定域中获取指定键的值
- 隐式对象 :
- el表达式中有11个隐式对象
- pageContext:
- 获取jsp其它八个内置对象
- ${pageContext.request.contextPath} : 动态获取虚拟目录.
- 获取jsp其它八个内置对象
- 运算
JSTL
- 概念 : JavaServer Pages Tag Library JSP标准标签库
- 是由Apache组织提供的开源免费的jsp标签 <标签>
- 作用 : 用于简化和替换jsp页面上的java代码
- 使用步骤 :
- 导入jstl相关的jar包
- 引入标签库 ; taglib指令 : <% taglib %>
- 使用标签
- 常用的JSTL标签:
- if标签 相当于java代码的if语句
- 属性 :
- test 必须属性,接收boolean表达式
- 如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容.
- 一般情况下,test属性会结合el表达式一起使用
- test 必须属性,接收boolean表达式
- 注意:
- c:if 标签没有else情况,如果想要else情况,则可以再定义一个c:if 标签
- 属性 :
- choose 相当于java代码中的switch语句
- when标签相当于case
- otherwise标签相当于其他情况的说明,相当于default.
- foreach 相当于java代码中的for循环
- 完成重复的操作
for(int i=0;i<10;i++){
}- 属性 :
begin : 开始值
end : 结束值
var : 临时变量
step : 步长
varStatus : 循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
- 属性 :
- 遍历容器
List<=User> list
for(User user : list){
}- 属性
items : 容器对象
var: 容器中元素的临时变量
varStatus : 循环状态对象
index:容器中元素的索引,从0开始
count:循环次数,从1开始
- 属性
- 完成重复的操作
- if标签 相当于java代码的if语句
三层架构 : 软件设计架构
- 界面层(表示层/web层) : 用户看的到的界面,用户可以通过界面上的组件和服务器进行交互.
- 作用 : 接收用户参数,封装数据,调用业务逻辑层完成处理,转发jsp页面完成显示
- 命名: com.itheima.项目名.web
- 业务逻辑层(service层):处理业务逻辑的
- 作用 : 组合DAO层中的简单方法,形成复杂的功能(业务逻辑操作)
- 命名:com.itheima.项目名.service
- 数据访问层(dao层):操作数据存储文件
- 作用:定义了对数据库最基本的CRUD操作
- 命名:com.itheima.项目名.dao+
案例 : 用户信息列表展示
- 需求 : 用户信息的增删改查操作
- 设计
- 技术选型 : Servlet+JSP+MySQL+JDBCTemplate+Duird+BeanUtils+tomcat
- 数据库设计:
create database day17; --创建数据库
use day17; --使用数据库
create table user( --创建表
id int primary key auto_increment,
name varchar(20) not null,
gender varchar(5),
age int,
address varchar(32),
qq varchar(20),
email varchar(50)
); - 开发
- 环境搭建
- 创建数据库环境
- 创建项目,导入需要的jar包
- 编码
- 环境搭建
- 测试
- 部署运维