发表于: 2020-01-03 09:38:44

2 1100


啥也不说就是干!!!

今天完成的事情:

1、自定义 Tag 标签

1) 编写一个普通的java类,继承 SimpleTagSupport 类

public class HelloSimpletag extends SimpleTagSupport {
//    private PageContext pageContext;
   private String value;
//    private String count;

   public String getValue() {
     return value;
   }

   public void setValue(String value) {
      this.value = value;
   }

//    public String getCount() {
//        return count;
//    }
//
//    public void setCount(String count) {
//        this.count = count;
//    }
   //标签体逻辑实际应该编写到该方法中。

   public void doTag() throws JspException, IOException {
       System.out.println("doTag");
       PageContext pageContext = (PageContext) getJspContext();
       HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();


       JspWriter out = pageContext.getOut();
//        int c = 0;
//        c = Integer.parseInt(count);
//        for (int i = 0; i < c; i++) {
//            out.print(value + i);
//            out.print("<br>");
//        }
       try {
           long timeValue = Long.parseLong(request.getParameter("time"));
           System.out.println(timeValue);
//            Calendar calendar = Calendar.getInstance();
//            calendar.setTimeInMillis(timeValue);
//            Date timeDate = calendar.getTime();
           System.out.println(System.currentTimeMillis());
           Date timeDate = new Date(timeValue);
           DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           String str = sdf.format(timeDate);
           System.out.println(str);
           out.print("Hello:" + str);
       } catch (NumberFormatException e) {
           e.printStackTrace();
       }

   }

}

2) 建立mytaglib.tld文件

在web项目的WEB-INF目录下建立mytaglib.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
       version="2.0">

   <!--?? TLD ?? -->
   <description >MyTag 1.0 core library</description>
   <display-name>MyTag core</display-name>
   <tlib-version>1.0</tlib-version>
   <!--? JSP ??????????-->
   <short-name>myTag</short-name>
   <!--?? JSP ??? taglib ??? uri ????? -->
   <uri>http://localhost:8080/mytag/core</uri>

   <!--?????? HelloSimpleTag ??-->
   <tag>
       <!--??????? JSP ???????????-->
       <name>hello</name>
       <!--????????-->
       <tag-class>com.gerry.jnshu.tag.HelloSimpletag</tag-class>
       <!--?????-->
       <body-content>empty</body-content>

       <!--?????????-->
       <attribute>
           <name>value</name>
           <!--????????-->
           <required>true</required>
           <!--rtexprvalue?runtime expression value ????????????????????-->
           <rtexprvalue>true</rtexprvalue>
       </attribute>
       <attribute>
           <name>count</name>
           <required>false</required>
           <rtexprvalue>false</rtexprvalue>
       </attribute>

   </tag>
</taglib>



3) jsp页面导入自定义标签库

在jsp页面的头部导入自定义标签库:url为你在tld中写的url,前缀也是你在 tld 文件中定义的

<%@ taglib uri="http://localhost:8080/mytag/core" prefix="myTag" %>

4) 在jsp中使用自定义标签

<%@ taglib uri="http://localhost:8080/mytag/core" prefix="myTag" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<body>
<h2>Hello World!</h2>
<myTag:hello value="${requestScope.time}"/>
</body>
</html>

启动项目,在浏览器中访问 http://localhost:8080/index.jsp?time=1578034472893

控制台也输出了相应的方法调用日志:


2、任务四深度思考部分

1.JSP是什么?JSP中可否直接连接数据库?为什么现在不推荐使用%%来写JSP的代码,而是使用C标签?

JSP 简化 Servlet 编写的一种技术,将 Java 代码与 HTML 语句混合在同一个文件中编写。

只对网页中的动态内容采用 Java 代码来编写,而对于固定不变的仍采用 HTML 页面的方式编写

JSP 中可以连接数据库,%%写 jsp 代码,会在页面中嵌入很多的 java 代码不符合 mvc 的规范,使用 C 标签可以更好地将业务逻辑跟页面展示分开

2.Html有哪些常用的标签,CSS有几种引用方式,JS应该在顶部还是应该在底部加载?

div、header、a、img等等
内联式、 嵌入式、 链式

在底部加载,但是有一种配置配置后可以放在头部

3.SEO是什么,后端在用JSP的方式输出页面时,可以做的SEO优化有哪些? 

SEO,搜索引擎优化,SEO是指通过对网站进行站内优化和修复(网站Web结构调整、网站内容建设、网站代码优化和编码等)和站外优化,从而提高网站的网站关键词排名以及公司产品的曝光度

通过搜索引擎查找信息是当今网民们寻找网上信息和资源的主要手段。

4.Tiles现在的版本是多少?Template,Attribute,Definition,ViewPreparer分别是什么?  

3.0.8
Template:模板
ViewPreparer:预加载

<tiles-definitions>标签:包含许多<definition>标签,配置tiles文件时都会用到,不同页面的配置都在这里

5.Tiles有什么用处,为什么要用Tiles,如果不使用Tiles,可以实现公共部分的复用吗? 

有相同部分的代码不必重复书写,直接分为一个个模块,拼接起来就是一个完整的网页。可以规模化的修改

easylayout

6.套页面的前后端协作方式中,怎么传递参数给前端JS?怎么控制页面之间的跳转? 

通过 Model 放入 http request 域对象中  中,然后在页面中通过 request 内置对象取值。

通过 Controller 返回的名字,对 tiles.xml 配置中的配置进行匹配,找到页面路径进行跳转

7.Velocity,Freemark是什么,和JSP的区别在哪里?推荐使用哪种模板语言?

Velocity:一个View引擎,分为app、context、runtime和一些辅助uti几个部分。

Freemark:模板引擎面积与模板和要改变的数据,生成输出文本的通用工具。

8.EL表达式是什么?常用的EL表达式有哪些?  

1.通过 ${域名称.键名}:从指定域中获取指定键的值

2.可以进行算数运算

3.常用的EL表达式

${键名}: 表示依次从最小的域中查找是否有该键对应的值,直到找到为止

对象:${域名称.键名.属性名}
List集合:${域名称.键名[索引]}

Map集合: ${域名称.键名.key名称}

9.C标签又是什么?怎么写一个自定义的标签?自定义的标签通常有什么用处? 

之前日报有,略过

10.套页面和前后端分离的方式有什么区别,应该在哪种情况下选用哪种解决方式? 

目前比较流行的方式是前后端分离

明天计划的事情:

开始任务五

遇到的问题:

暂无

收获:

学习了 自定义 Tag 标签



返回列表 返回列表
评论

    分享到