JSP,EL,JSTL快速入门
JSP
由于Servlet技术有着明显的缺点,需要开发人员十分熟悉JAVA,不便于页面的调试与维护,也很难利用网页设计工具进行页面设计,后来提供JSP技术替代,
Servlet技术用来动态生成网页数据资源
Servlet生成HTML页面数据时,所有内容都是通过response.getWriter response.getOutputStreamIO流向浏览器输出,如果网页信息的内容特别复杂打印的过程就是什么麻烦的。
JSP与Servlet一样是在服务器端执行的,不同的是JSP必须由服务器编译部署成Servlet程序才能运行。
写JSP的过程和编写HTML的过程一样,但是可以通过一些<% %>号嵌入java的代码,所以可以看出Servlet就是嵌入html的java文件,JSP是嵌入java的Html文件
JSP运行的原理
1.客户端访问hello.jsp
2.服务器读取hello.jsp内容加载到内存
3.服务器根据hello.jsp内容生成Servlet的java程序保存在work目录里,hello_jsp.java,且这文件的包名是固定的org.apache.jsp
4.服务器编译生成hello_jsp.class文件运行Servlet。
JSP中所有的代码都会被翻译到Servlet中的service方法中。HTML代码翻译成成out.write("html");java代码保持原样
JSP脚本元素
1.声明<%! %>其中声明的内容会等定义为成员,方法,内部类
2.表达式<%= %>向页面输出等价于<%out.print()%>
3.代码块<% %>可以编写任何的java程序代码,注意代码块可以和html代码嵌套使用
<%
for(int i=0;i<10;i++){
%>
<h1>这是html与代码块的嵌套,会被重复执行十次,输出十遍</h1>
<%
}
%>
开发网页程序选择时根据其中的代码量来决定选择,java代码多使用Servlet,Html代码多使用JSP。要注意只有第一次访问JSP进行翻译,以后访问如果没有修改的话不会再进行翻译
EL
语法:${标识符}
用EL可以获得Servlet中几种数据域对象的值如ServletContext和HttpServletRequest数据域
${applicationScope.name}等价于<%=getServletContext().getAttribute(name)%>
${requestScope.name}等价于<%=request.getAttribute(name)%>
JSTL
标准标签库用于简化页面<%%>与HTML嵌套写法,与EL一起用来简化JSP的开发。
<c:forEach>用来替代for循环
<c:if>用来替代if判断语句
例如
<h1>使用el标签替代if语句</h1>
<% request.setAttribute("b",10) ;%>
<c:if test="${requestScope.b>8}"><h1>我大于8</h1></c:if>
<% request.setAttribute("arr",new int[]{3,2,4,5}); %>
<c:forEach items="${requestScope.arr}" var="i">
i的是值是${i}<br/>
</c:forEach>