原始的界面由servlet中利用response.write()输出,但是特殊繁芜
涌现了jsp=html +java+css+js+jsp的语法
html只能展示静态的数据,结合java和jsp的语法实现了动态的展示数据
jsp的语法
<%@page import=\"大众java.util.Date\公众%><%@page language=\公众java\"大众 pageEncoding=\公众UTF-8\公众%>
实行流程
jsp文件>>翻译为.java>>编辑为,class>>装载起来
翻译的文件:在work下, \work\Catalina\localhost\ROOT\org\apache\jsp
干系代码在_jspService()方法中();以是在方法中不能定义再方法
<% %> 包含的是java代码<%! %> 全局的<%= %> 输出语句<!-- 注释内容--> html的注释<%-- 该部分注释在网页中不会被显示--%> jsp的表明 在浏览器中不会显示
jsp常见指令
<%@ page ...%> 引入依赖比如脚本文件 error页面 容器供应当前页面的利用解释。一个JSP页面可以包含多个page指令 import=\"大众java.util.\公众; <%@ include ...%> 包含其他文件<%@ taglib ...%> 引入标签库头部命令<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\"大众UTF-8\"大众%>
jsp九大工具
include的差异
hello.jsp文件包含以下代码<%@include file=\"大众footer.jsp\公众 %>footer.jsp的内容会被插入到 hello.jsp 转译 成的hello_jsp.java中,末了只会天生一个hello_jsp.java文件<jsp:include page=\公众footer.jsp\"大众 />footer.jsp的内容不会被插入到 hello.jsp 转译 成的hello_jsp.java中,还会有一个footer_jsp.java独立存在。 hello_jsp.java 会在做事端访问footer_jsp.java,然后把返回的结果,嵌入到相应中。
JSTL
导入
<%@ taglib uri=\公众http://java.sun.com/jsp/jstl/core\"大众 prefix=\"大众c\公众%>
常见的jstl语句
<C:if test=\"大众\公众></c:if><c:choose> <c:when test=\"大众\"大众>//todo</c:when><c:otherwise>//todo</c:otherwise></c:choose><c:forEach items=\"大众${list}\"大众 var=\"大众listItem\"大众 varStatus=\"大众1\"大众 > <tr> <td><c:out value=\"大众${listItem.col1}\"大众 /></td> <td><c:out value=\"大众${listItem.col2}\"大众 /></td> </tr></c:forEach>fmt 格式化<%@ taglib uri=\"大众http://java.sun.com/jsp/jstl/fmt\"大众 prefix='fmt' %> 日期<% Date now = new Date(); pageContext.setAttribute(\"大众now\"大众,now);%> 完整日期: <fmt:formatDate value=\公众${now}\公众 pattern=\"大众G yyyy年MM月dd日 E\公众/><br>完全韶光: <fmt:formatDate value=\"大众${now}\"大众 pattern=\"大众a HH:mm:ss.S z\公众/><br>常见格式: <fmt:formatDate value=\"大众${now}\"大众 pattern=\"大众yyyy-MM-dd HH:mm:ss\"大众/>数字格式化<fmt:formatNumber 表示格式化数字minFractionDigits 小数点至少要有的位数maxFractionDigits 小数点最多能有的位数<fmt:formatNumber type=\"大众number\"大众 value=\"大众${money}\"大众 minFractionDigits=\公众2\公众/>
EL表达式
引入
<%@page 标签里加上isELIgnored=\公众false\"大众<%@ page language=\"大众java\"大众 contentType=\"大众text/html; charset=UTF-8\"大众 pageEncoding=\公众UTF-8\"大众 isELIgnored=\公众false\公众%>取值顺序pageContext>request>session>application利用${key} 取值支持表达式大小于 equals等,三元运算符
转发与转向的差异
转发(forward
转发通过forword带走request的response,以是能带走工具,可以共享数据,地址栏不会改变,经历了一次要求,在做事端完成的处理,
WEB-INF下的页面不能通过地址栏访问,须要经由转发才能访问
转向(redirect)
转向,要求到这里之后,见告浏览器须要进行二次要求,以是浏览器地址改变,数据也不能共享了,两次要求的效率也比与转发的一次要求慢低一些.
浏览器地址改变了,就可以跳转到当前web意外的页面