这周主要学习了JSP指令、标签使用与开发模式。
JSP学习
- page指令
- include指令
- taglib指令
page指令
定义JSP页面的各种属性,最好放在整个JSP页面的起始位置。
<%@ page
[language="java"]
[extends="package.class"]
[import="{package.class|package.*}",....]
[session="true | false"]
[buffer ="none | 8kb | sizekb"]
[autoFlush="true | false"]
[isThreadSafe="true | false"]
[info="text"]
[errorpage="relative_url"] //设置错误处理页面,全局处理错误配置,在web.xml中设置<error-page>,全局处理优先级较低
[isErrorPage="true | false"]
[contentType="mimetype[charset=characterSet]"|"text/html;charset=ISO-8859-1"]
[pageEndcoding="characterSet | ISO-8859-1"]
[isELIgnored="true | false"]
%>
include指令(静态包含(编译时包含),它包含的所有jsp会编译成一个servlet)性能比动态的好
<%@include file="/pubic/head.jsp" %>
aaaaaa<br />
<%@include file="/pubic/foot.jsp" %>
动态包含(几个jsp编译成几个servlet)运行时包含
<%
request.getRequestDispacher("/pubic/head.jsp").include(request,response);
request.getRequestDispacher("/pubic/foot.jsp").include(request,response);
%>
9大隐式对象
- request
- response
- session
- application
- config
- page
- out
- exception
- pageContext
pageContext对象
JSP技术中最重要的一个对象,代表JSP页面的运行环境。
- 封装了对其他8大隐式对象的引用
- 自身是一个域对象,可以保存数据
- 还封装了web开发中涉及的一些常用操作,引入和跳转其他资源、检索其他域对象的属性。
JSP标签(动作元素)
常用标签:
- <jsp:include>标签:包含
- <jsp:forward>标签:转发
- <jsp:param>标签:传递参数
JavaBean与JSP
JSP技术提供关于JavaBean组件的动作元素,即JSP标签。
- <jsp:useBean>:实例化Javabean,userBean标签的标签体只在userbean标签实例化bean时执行
- <jsp:setProperty>:设置JavaBean属性
- <jsp:getProperty>:获取JavaBean属性
jsp开发模式
- jsp+JavaBean:不太复杂的web应用程序
- servlet+JSP+JavaBean(MVC模式):适合开发复杂的web应用;servlet负责处理用户请求,jsp负责数据显示,Javabean负责封装数据。
EL表达式
EL表达式用于获取数据,${标识符},用EL表达式取数据时,通常用.号,其次用[]号。
<%
Person p1=new Person();
Address a=new Address();
a.setCity("上海");
p1.setAddress(a);
request.setAttribute("p1", p1);
%>
${p1.address.city }
<%
List list=new ArrayList();
list.add(new Person("aaa"));
list.add(new Person("bbb"));
list.add(new Person("ccc"));
request.setAttribute("list", list);
%>
${list[1].name }
<%
Map map=new HashMap();
map.put("aa",new Person("aaaaaa"));
map.put("bb",new Person("bbbbbb"));
map.put("cc",new Person("cccccc"));
map.put("dd",new Person("dddddd"));
map.put("ee",new Person("eeeeee"));
request.setAttribute("map", map);
%>
${map.aa.name }
<!-- 获取当前应用的名称 -->
${pageContext.request.contextPath }
<a href="${pageContext.request.contextPath }/index.jsp">aaaa</a>
jstl标签库
- 1.导入jstl.jar和standard.jar;
- 2.使用<%@ tablib url="" prifix=""%>
jstl常用标签
- <c:foreach var="" items=""> 迭代
- <c:if test="">
注意的问题
1. <jsp:include>标签和<@ include>指令的比较:
<jsp:include>标签是动态包含,会将涉及到所有的包含的JSP翻译成各自的Servlet,而这些Servlet会在执行时合并。
<@ include>指令是静态包含,所有的JSP页面只会被翻译成一个Servlet。
2.数据需要精确运算时使用BigDecimal
在使用BigDecimal类来进行计算的时候,主要分为以下步骤:
- 用float或者double变量构建BigDecimal对象。
- 通过调用BigDecimal的加,减,乘,除等相应的方法进行算术运算。
- 把BigDecimal对象转换成float,double,int等类型。
BigDecimal a = new BigDecimal(Double.toString(0.48));
BigDecimal b = BigDecimal.valueOf(0.48);