代码改变世界

第七周学习记录

2017-12-10 19:14  melay  阅读(154)  评论(0编辑  收藏  举报

这周主要学习了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);

JSTL标签库的使用详解