发表于: 2017-11-02 23:39:28

1 729


今天完成的事情:

1

自定义tag:

创建一个DateTag的工具类继承TagSupport,重写doStartTag方法


public class DateTag extends TagSupport {
   private  String value;
   @Override
   public int doStartTag() throws JspException{
       String vv = "" + value;
       //去除value前后的空白,转换成long
       Long time = Long.valueOf(vv.trim());
       //获取指定点时间
       Calendar calendar = Calendar.getInstance();
       calendar.setTimeInMillis(time);
       //创建一个解析出来的时间模板
       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
       //得到格式化时间的字符串s
       String s = dateFormat.format(time);
       try {
           
       //写入jsp
           pageContext.getOut().write(s);
       } catch (IOException e) {
           e.printStackTrace();
       }
       
       return  super.doStartTag();
   }
   public void setValue(String value){
       
       this.value = value;
   }
}


然后再WEB-INF创建tld文件夹,创建datetag.tld:

<?xml version="1.0" encoding= "UTF-8"?>
<taglib>
   <tlib-version>1.0</tlib-version>
   <jsp-version>1.2</jsp-version>

   <short-name>date</short-name>

   <tag>
       <name>date</name>
       <tag-class>org.shunly.util.DateTag</tag-class>
       <body-content>JSP</body-content>
       <attribute>
           <name>value</name>
           <required>true</required>
           <rtexprvalue>true</rtexprvalue>
       </attribute>
   </tag>
</taglib>

web.xml中配置该文件

<jsp-config>
 <taglib>
   <taglib-uri>/tags</taglib-uri>
   <taglib-location>/WEB-INF/tld/datetag.tld</taglib-location>
 </taglib>
</jsp-config>


最后在jsp中使用:

<%@ taglib prefix="date" uri="/tags" %>
<img src="${l.picture}">
<span>${l.name} ${l.profession}</span>
<p class="text-left">${l.workInfo}</p>
<date:date value="${l.createdAt}"></date:date>


页面效果:



深度思考:

1.什么是jsp?

JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。它实现了Html语法中的java扩展(以 <%, %>形式)。将网页设计和网页逻辑分离。


2.jsp有几个内置对象?

一共有9个内置对象:

1、request对象

客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据,作用域为一次请求。

2、response对象

客户端的响应,只在JSP页面内有效。

3、session对象

保存用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据,因此保存数据的格式为 “Key/value”。 

4、application对象

信息保存直到服务器关闭。与session对象相比,application对象生命周期更长,类似于系统的“全局变量”。

5、out 对象

用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。

6、pageContext 对象

取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。

7、config 对象

取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。 开发者可以在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。

8、page 对象

代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。

9、exception 对象

显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

   


3.熟练使用c标签,el表达式。


c:forEach 遍历

<c:forEach var="l" items="${list}" end="4">
<li class="col-xs-12 col-sm-6 col-md-6 col-lg-3">
       <div>
           <img src="${l.picture}">
           <span>${l.name} ${l.profession}</span>
           <p class="text-left">${l.workInfo}</p>
       </div>
   </li>
</c:forEach>


c:choose和c:when 对应类似于if/else的判断语句

<c:choose>
<c:when test="${j.salary3 != null}">
<div class="rightWarp-class border-bottom">
   <div class="rightWarp-year">2-3年</div>
   <div class="rightWarp-wages">${j.salary3}</div>
</div>
</c:when>
</c:choose>


${list} 读取后端传过来的list对象 

${l.name}的形式得到list的name属性的值。



4.为什么要使用tiles框架?

当多个页面的页面布局中有完全相同的代码时,就是tiles的登场时间了。tile框架通过提炼相同的页面,然后将他们组装起来。这样就达到减少重复性代码的工作了。



明天计划的事情: 

上传后跑通,提交任务4


遇到的问题: 

这两天被耽搁了。现在调整好了。


收获:

tag的自定义流程。


返回列表 返回列表
评论

    分享到