EL表达式
Expression Language 表达式语言
作用: 替换和简化jsp页面中java代码的编写
语法: ${表达式}
注意:
JSP默认支持EL表达式
要忽略el表达式的两种方法
- 设置
isELIgnored="true"
:忽略当前JSP页面的所有el表达式 \${表达式}
:忽略当前这个el表达式
使用:
1.运算
运算符:
- 算数运算符:+ - * /(div) %(mod)
- 比较运算符:> < >= <= != ==
- 逻辑运算符:&&(and) ||(or) !(not)
- 空运算符:empty。功能:用于判断字符串、集合、数组对象是否为null并且长度是否为0 如
${empty list}
2.获取值
el表达式只能从域对象中获取值
语法:
-
1.
${域名称.键名}
:
从指定的键中获取指定键的值
域名称:- pageScope:pageContext
- requestScope:request
- sessionScope:session
- applicationScope:application(ServletContext)
如:
<%
request.setAttribute("username","zhangsan");
session.setAttribute("password","1234");
%>
${requestScope.username}
${sessionScope.password}
没有则显示空字符串
-
2.
${键名}
:
标识一次从最小的域中去查找是否有该键对应的值,直到找到为止 -
3.获取对象、List集合、Map集合的值
对象:${域名称.键名.属性名}
如${requestScope.u.name}
(本质是调的getter方法)List集合:
${域名称.键名[索引]}
Map集合:
${域名称.键名.key名称}
或${域名称.键名["key名称"]}
3.动态获取虚拟目录
${pageContextScope.request.contextPath}
JSTL标签
JavaServer Pages Tag Library JSP标准标签库
是由Apache组织提供的开源的免费的jsp标签
作用: 用于简化和jsp页面上的java代码
使用步骤:
- 导入jstl相关jar包
- 引入标签库:taglib指令:
<%@ taglib%>
- 使用标签
常用的JSTL标签
1.if
相当于java代码的if语句
<c:if></c:if>
属性:
必须属性test。接受布尔表达式,如果表达式为true,则显示if标签体的内容,反则不显示。
test一般会结合el表达式一起使用 。
**注意:**没有else情况,若想有,则再定义一个<c:if></c:if>
标签
2.choose
相当于java代码的swith语句
<c:choose>
相当于原来的switch
<c:when test="">
相当于原来的case
<c:otherwise>
相当于原来的default
例子
<%
request.setAttribute("number",3);
%>
<c:choose>
<c:when test="${number==1}">星期一</c:when>
<c:when test="${number==2}">星期二</c:when>
<c:when test="${number==3}">星期三</c:when>
<c:when test="${number==4}">星期四</c:when>
<c:when test="${number==5}">星期五</c:when>
<c:when test="${number==6}">星期六</c:when>
<c:when test="${number==7}">星期天</c:when>
<c:otherwise>输入数字不合法</c:otherwise>
</c:choose>
3.foreach
相当于java代码的for语句
a.完成重复操作
以往:for (int i=0;i<10;i++){}
属性:
- begin:初始值(包括自身)
- end:结束值(包括自身)
- var:临时变量
- step:步长(1就是+1)
- varStatus:循环状态对象
- index:容器中元素的索引,从零开始
- count:循环次数,从1开始
例子:
<c:forEach begin="1" end="10" var="i" step="1" varStatus="s" >
${i} <h3>${s.count}</h3> <br>
</c:forEach>
b.遍历容器
以往:
List<User> list;
for (User user:list);
属性:
- items:容器对象
- var:容器中元素的临时变量
- varStatus:循环状态对象
- index:容器中元素的索引,从零开始
- count:循环次数,从1开始
例子:
<%
List list=new ArrayList();
list.add("aaa");
list.add(123);
list.add(true);
request.setAttribute("list",list);
%>
<c:forEach items="${requestScope.list}" var="i" varStatus="s">
${s.index} ${s.count} ${i}<br>
</c:forEach>
三层架构
软件设计架构
-
界面层(表示层:用户看得到的界面。用户可以通过界面上的组件和服务器进行交互)
-
业务逻辑层:处理业务逻辑的。
-
数据访问层:操作数据存储文件。
案例:用户信息列表展示
需求: 用户信息的增删改查操作
设计:
1.技术选型:
Servlet+JSP+MySQL+JDBCTempleat+Druid+BeanUtils+Tomcat
2.数据库设计:
create database userdb;
use userdb;
create table user(
id int primary key auto_increment,
name varchar(32) not null,
gender varchar(5),
age int,
address varchar(32),
qq varchar(20),
email varchar(50)
);
3.开发
a.环境搭建:
- 创建数据库环境
- 创建项目,导入需要的jar包
b.编码