JSP和MVC,EL表达式,JSTL标签,三层架构
1. JSP
1. 指令
1. 格式:<%@ 指令名称 属性名 = 属性值%>
2. 分类:
1. page:设置contentType;pageEncoding;language;buffer;import;errorPage;isErrorPage
2. include:页面中包含的资源页面,共有组件
3. taglib:包含的库文件;<%@ taglib prefix="c" uri="uri" %>
2. 注释
- html注释 在html源码中会显示
- jsp注释<%-- --%>在html源码中不会显示
3. 内置对象
1. pageContext对应PageContext
2. request对应HttpServletRequest
3. session对应HttpSession
4. application对应ServletContext
5. response对应HttpServletResponse
6. page对应Object
7. out对应JspWriter
8. config对应ServletConfig
9. exception对应Throwable
2. MVC
-
jsp演变历史:
- 早期只有Servlet,只能使用response输出标签数据,比较麻烦
- 后来有了JSP,简化了Servlet开发方式,但是造成代码复杂,可读性、可维护性差
- JavaWeb开发借鉴MVC开发模式让,程序的设计更加合理
-
什么是MVC开发模式?
-
M odel:JavaBean
完成具体业务操作,例如查询,封装对象
-
V iew:JSP
展示数据
-
C ontroller:Servlet
- 获取用户输入
- 调用模型
- 将数据返回给视图展示
-
-
优缺点
- 优点:方便维护,利于分工协作,耦合性低(模块相互联系紧密程度)
- 缺点:使得项目架构复杂,不适合小型项目
3. EL表达式
- 概念:Expression Language 表达式语言
- 作用:替换和简化JSP页面中Java代码的编写
- 语法:${expression}
- 注意:浏览器默认开启EL功能,关闭需要在头中使用isELIgnored属性,或者直接在元素前加\转义字符
- 具体:
- 运算
- 算术
- 比较
- 逻辑 and or not
- 空 empty 判断对象是否空,长度是否为0
- 获取值
- 注意事项:只能从域对象中获取值
- 语法:
- ${field.keyname} 在指定域中获取指定值
- pageScope--->pageContext
- requestScope--->request
- sessionScope--->session
- applicationScope--->application / ServletContext
- ${keyname} 依次从最小的域中查找,直到找到为止
- 如果keyname只是一个Object类型,直接用keyname.value,可以调用其get方法找到值
- List:listname[index]
- Map:mapname.name or mapname[name]
- empty和not empty:判断字符串,集合,数组是否空,长度是否为0
- 11个隐式对象
- pageContext 可以用来获取JSP其他的内置对象
- ${field.keyname} 在指定域中获取指定值
- 运算
JSTL标签
-
下载链接:下载1.1.2版本
-
概念:Java Server Pages Tag JSP标准标签库
扫描二维码关注公众号,回复: 11131302 查看本文章 -
作用:简化和替换JSP页面上的Java代码
-
使用方法:
- 导入jstl的jar包
- 引入标签库:taglib <% @ taglib %>
- 使用
-
常用的JSTL标签
-
if
<c:if test="true"> <p>我是c:if块</p> </c:if>
true为表达式,if没有else配对,如果需要分别两种情况只能再写一个if
-
choose
<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>
c:choose 可以和c:otherwise联合一起用
-
foreach
简单循环
<c:forEach begin="1" end="10" var="i" step="1"> ${i}<br> </c:forEach>
begin初始值,end结束值,var临时变量,step步长,varStatus.index当前标,varStatus.count循环次数
遍历容器
<c:forEach items="${list}" var="str" varStatus="s"> ${s.index}---${s.count}---${str} <br> </c:forEach>
items容器对象,var临时变量,varStatus.index,varStatus.count同上
-