发表于: 2019-08-29 16:19:54

1 784


一、今天完成的事

修改自动跳转代码

 


上传到服务器中

输入url地址查看服务器响应

49.234.61.141

 



二、遇到的问题

三、收获

1.自定义JSP标签的处理过程: 

a.在JSP中引入标签库: 

b.在JSP中使用标签库标签: 

c.Web容器根据第二个步骤中的prefix,获得第一个步骤中声明的taglib的uri属性值 

d.Web容器根据uri属性在web.xml找到对应的元素 

e.从元素中获得对应的元素的值 

f.Web容器根据元素的值从WEB-INF/目录下找到对应的.tld文件 

g.从.tld文件中找到与tagname对应的元素 

h.从元素中获得对应的元素的值 

i.Web容器根据元素的值创建相应的tag handle class的实例 

j. Web容器调用这个实例的doStartTag/doEndTag方法完成相应的处理


2.深入学习Tiles框架: 

【Tiles框架简介】:

最早的Tiles是组装在Struts1.1里面的,主要目的是为了将复杂的jsp页面作为一个的页面的部分机能,然后用来组合成一个最终表示用页面用的,这样的话,便于对页面的各个机能的变更及维护。现在Tiles已经作为一个Apache独立的开源项目维护着。

所有的网站都有一些共通的东西:所有的网站都是有网页构成,而且它们彼此分享着共通的结构。这些页面有着共通的布局,但是页面和页面之间又有不同的地方,而且不同的地方通常都在同样的位置。

如下图所示

 

 

通常的来说一个页面大概可以划分为如下几块:

head页面头部:存放一个应用的公共信息:logo等,如果是网站可能是最上面的一块。

menu页面菜单:放置一个应用中需要使用的菜单,或者在每一个页面都使用的连接。

footer页面尾部:如版权信息等。

body页面主题内容:每个页面相对独立的内容。

我们的所有页面,按上面的划分,每一个页面我们只要写body里面的内容,其他的就可以共享重用。既然大多数页面的布局基本相同我们甚至可以使用一个jsp文件根据不同的参数调用不同的body,其余相同的部分直接重用即可。

【如何使用tiles框架】:

先引入jar包:

<!--tiles框架配置 start-->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.5</version>
</dependency>

写核心配置文件:

tiles.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>

<!--定义模块-->
   <definition name="base" template="/WEB-INF/jsp/page.jsp">
<put-attribute name="title" value="首页"/>
<put-attribute name="header" value="/WEB-INF/jsp/header.jsp"/>
<put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp"/>
<put-attribute name="body" value=""/>
</definition>

<!--继承模块-->
   <definition name="home" extends="base">
<put-attribute name="title" value="首页"/>
<put-attribute name="body" value="/WEB-INF/jsp/home.jsp"/>
</definition>

<!--继承模块-->
   <definition name="profession" extends="base">
<put-attribute name="tittle" value="职业介绍"/>
<put-attribute name="body" value="/WEB-INF/jsp/profession.jsp"/>
</definition>

<!--继承模块-->
   <definition name="welcome" extends="base">
<put-attribute name="tittle" value="欢迎界面"/>
<put-attribute name="body" value="index.jsp"/>
</definition>

</tiles-definitions>

可以从配置文件中看到

程序被分成了几个模块

header、body、footer


模板template.jsp页面,需要进行tiles的各组成部分的声明,代码如下:

<head>

    <title>

    <tiles:insertAttribute name="title"/>

    </title>

</head>

<header>

    <tiles:insertAttribute name="header" />

</header>

<main>

    <tiles:insertAttribute name="body" />

</main>

<footer>

    <tiles:insertAttribute name="footer"/>

</footer>


最后再编写各个模块指定的jsp文件就可以了

【总结】

tiles框架就是把原来的大段大段的jsp文件分成几个模块,并且如果另外一个或几个页面都用到了相同的头部和尾部,或者菜单,tiles可以复用配置好的header、footer,而不用在jsp中再重写一遍。大大增加了工作效率,修改的时候也比较方便。




四、明天的计划

复习任务四,开始任务五

五、任务总结

官方脑图

个人脑图

深度思考

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

JSP,Java服务器页面,相当于一个简化的servlet,可以理解为html(静态页面)和java代码(动态数据)的结合;

Jsp可以直接连接数据库,jsp中的java脚本块---就是java代码,在<%%>中进行连接;

例子

<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%--
 Created by IntelliJ IDEA.
 User: shiyang
 Date: 2019/8/29
 Time: 15:43
 To change this template use File | Settings | File Templates.
--%>
<html>
<body>
<sql:setDataSource var="student" driver="com.mysql.cj.jdbc.Driver"
                  url="jdbc:mysql://49.234.61.141:3306/task?characterEncoding=UTF-8"
                  user="root"  password="admin123"/>

<sql:query dataSource="${student}" var="student">
SELECT * from student;
</sql:query>
<h1>学生列表</h1>
<table border="1" width="100%">
<tr>
<th>ID</th>
<th>姓名</th>
<th>职介</th>
</tr>
<c:forEach var="student" items="${student}">
<tr>
<td><c:out value="${student.id}"/></td>
<td><c:out value="${student.name}"/></td>
<td><c:out value="${student.position}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>

mvc思想的出现,目的就是为了降低耦合性,将html代码和java代码分离;通过c标签和EL表达式,在结合mvc框架,可以实现java脚本块<%%>的作用;


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

html常用标签: <h1>-<h6>、 <p>、 <a>、 <img>、 <form>( <input>)、<br/>、<ol><li>、<ul><li>

总体的结构:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>

</body>
</html>

css:
(1)行内样式;直接跟在相应的标签中
(2)内部样式表(把css代码写在head部分中的style标签内);
(3)外部样式表( CSS代码保存在扩展名为.css的样式表中,通过链接式或导入式引入)


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

SEO(Search Engine Optimization)汉译为搜索引擎优化,利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名;
优化的内容:网站url、title信息、meta信息、图片alt、flash加注释信息
除了第一点,其他内容相当于将关键的内容,放在相应的位置,尽量通过文字信息加注释;
也就是后端主要是做一个网站url的优化


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

Tiles最新版本3.0.8,最后发布时间2017-10-31;
Template(模板),即页面布局,确定各个页面模块的分布;
Attribute(属性),Template中添加的内容
Definition(定义),通过xml文件,填入各部分具体的内容;
ViewPreparer,Tiles提供的公共接口,其中的execute方法会在defintion渲染之前执行;实现该接口的类为视图预备类;


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

这个之前也提到了,前面有详细的总结

Tiles是一种JSP布局框架,主要目的是将复杂的jsp页面分隔成部分,然后将各个模块组合成一个完整的页面;便于对页面的各个机能的变更及维护,并且更容易实现代码的重用。
可以通过<c:import>标签引入页面、JSP的 include指令:包含其他文件


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

(1)直接通过var name="<%=username%>";js可以获取到参数
(2)var username=document.getElementById("username").value;前提要通过建一个隐藏表单,从java中获取到;
页面跳转:


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

Velocity、Freemark、Jsp同为java领域的表现层技术;其他两者的出现是在mvc思想出现之后,而产生的替代jsp的模板语言;本质上还是为套页面的开发方式而服务的。
最大的区别应该在于jsp由java脚本和html代码共同组成;其他两者实现严格的mvc分离。
还有jsp为官方标准、用户群广;毕竟出来的早,其他只是替代品,而且jsp也没有明显的缺点,再加上前后端分离的出现;重点可能不在这里。


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

EL表达式(JSP表达式语言),目的替代java代码块访问JavaBean中的数据的功能,是jsp写起来更简单,mvc+jsp标签+EL表达式-----去替代jsp中的java代码部分。
语法规则${ } ;主要的使用还是通过EL中的隐含对象来获取对应的值


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

JSP标准标签库JSTL,一个jsp标签的集合;其中的核心标签就是c标签:主要功能包括循环、分支、表达式控制、URL操作(重定向等)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
自定义标签:
(1)通过重写SimpleTagSupport中的doTag()方法(处理标签的java类,也就是要实现的功能);
通过.tld文件创建标签库
最后在jsp中,通过
<%@ taglib prefix="?" uri="WEB-INF/?.tld"%>引入使用。
(2) 自定义的函数,不需要重写doTag()方法,但类中的方法要为static;
自定义标签:通过自定义标签实现类来实现复杂的、可重复利用的功能。


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


套页面:前端写好页面,后端进行整合为jsp,
前后端分离:通过restful风格接口,传递json;后端只提供接口,前端进行整合调试
套页面得要前端把页面写出来后端才可工作,前后端是写好接口文档就开始同时按照接口文档工作。套页面的使用场景应该是在前端已经发布之后,需要修改部分功能,后端保证前端页面不变的情况下,通过套页面增加功能。前后端分离就是同时进行开发







返回列表 返回列表
评论

    分享到