发表于: 2021-02-27 23:22:04

1 1223


今天完成的事情:


3.部署到云服务器上。
4.写一篇Tiles的学习心得,放到日报里,转发到自己的自媒体上,记着末尾加上IT修真院的宣传。

深度思考



明天计划的事情:

任务5



遇到的问题:

以下



收获:
放到服务器上,无法显示图片
第一步:添加以下代码



第二步,注释配置的静态资源



成功显示出图片



===============
===============

搜了添加代码的含义,发现和传输静态资源无关,那么应该就是自己在nginx中设置了静态资源,所以它就只会到nginx中去寻找静态资源,而不会去tomcat中的war包中找。注释之后它就回到tomcat中的war包中找,所以显示成功



============

 

 # 添加的代码

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header Upgrade-Insecure-Requests 1;

    proxy_set_header X-Forwarded-Proto https;


如果你想通过http获取客户的真是ip而不是获取代理服务器的ip地址,那么要做如下的设置。


proxy_set_header Host $host; #只要用户在浏览器中访问的域名绑定了 VIP VIP 下面有RS;则就用$host ;host是访问URL中的域名和端口  www.taobao.com:80


proxy_set_header X-Real-IP $remote_addr;  #把源IP 【$remote_addr,建立HTTP连接header里面的信息】赋值给X-Real-IP;这样在代码中 $X-Real-IP来获取 源IP


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来,用 【,】隔开;代码中用 echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IP


Upgrade-Insecure-Requests 是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应,并且它可以成功处理 upgrade-insecure-requests CSP 指令


这些就是以上代码添加之后作用


==========================
注释之后,依然成功运行



==============================
==============================

分享的文章:https://www.jianshu.com/p/0a91b12d827a




1.为什么要使用tiles框架


因为tiles框架可以实现多个JSP页面共用一个JSP的内容,一般复用Header,Footer,Menu



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


套页面应该指的是html嵌套页面


这个提问的实际意思应该是,前后端不分离和前后端分离区别是什么.


前后端不分离的设计:

用户在浏览器上发送请求,服务器端接收到请求,根据 Header 中的 token 进行用户鉴权,从数据库取出数据,处理后将结果数据填入 HTML 模板,返回给浏览器,浏览器将 HTML 展现给用户。


但这样会带来一个问题,就是全栈开发人员,既要会数据库开发(SQL)、又要会服务器端开发(Java、C#),又要会前端开发(HTML、CSS、JS)。现实告诉我们,百样通往往不如一样精,什么都会的人往往哪一样都干不好。



感觉和我现在做的基本一样,没有什么区别。
========
所以出现了前后端分离记住,分离的是人员职责,人员职责分离,所以架构也发生变化了。


前后端分离之后,前端人员和后端人员约定好接口就行了,后端给出假数据,前端不用管关心业务处理是怎么回事,他只需要把界面做好就可以了,后端人员也不用再关系前端界面是什么样的,他只需要做好业务逻辑处理即可。



所以前后端分离其实是种架构模式或者说是最佳实践。


前后端分离是最佳实践吗?


看你团队和项目的情况,如果是短平快的小项目,真的没必要。如果是面向简历开发,那绝对在任何时候都应该使用前后端分离这种架构。


参考网址: 到底什么是前后端分离? - 海淀游民的回答 - 知乎 https://www.zhihu.com/question/304180174/answer/557406666



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


常用标签:

div h1 h2 img a title body html 等等···



Html例子:


CSS 引用方式:


三种:内部样式表、外部样式表、内联样式表


    <!--这是内部样式表,CSS样式在style标签中定义-->
    <style type="texts">
        p{color:Red;}

    <yle>


    <!--在HTML页面中引用文件名为index的css文件-->

    <link href="index.css" rel="stylesheet" type="texts" />


     <!--内联样式-->

    <p style="color:Red; ">老铁666</p>



CSS例子:


JS应该在顶部还是应该在底部加载?


底部:浏览器加载页面是按从上到下顺序加载的。加载 JS 并执行的时候,会阻塞其他资源的加载。这是因为 JS 可能会有 DOM 、样式等等操作,所以浏览器要先加载这段 JS 并执行,再加载放在它后面的 HTML、CSS。
因此,加入一段巨大的 JS 放在最上面,浏览器首先要下载并执行,这段时间里面,页面是空白的。相比于加载了部分 HTML 和 样式 但是没有 JS 交互功能,显然是后者对于浏览者体验要好。
作者:于江水

来源:知乎



新手理解HTML、CSS、javascript之间的关系

一、HTML、CSS、JavaScript简介及简单分工


1、什么是HTML(超文本标记语言 Hyper Text Markup Language),HTML 是用来描述网页的一种语言。


2、CSS(层叠样式表 Cascading Style Sheets),样式定义如何显示 HTML 元素,语法为:selector {property:value} (选择符 {属性:值})


3、JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行


对于一个网页,HTML定义网页的结构,CSS描述网页的样子,JavaScript设置一个很经典的例子是说HTML就像 一个人的骨骼、器官,而CSS就是人的皮肤,有了这两样也就构成了一个植物人了,加上javascript这个植物人就可以对外界刺激做出反应,可以思 考、运动、可以给自己整容化妆(改变CSS)等等,成为一个活生生的人。


如果说HTML是肉身、CSS就是皮相、Javascript就是灵魂。没有Javascript,HTML+CSS是植物人,没有Javascript、CSS是个毁容的植物人。


如果说HTML是建筑师,CSS就是干装修的,Javascript是魔术师。

怎么把这三者联系在一起呢,当然得通过网页的肉身HTML,HTML是一直描述语言,它是对着浏览器描述自己的,那么它通常怎么描述具体的这个网页呢?

参考网址:https://www.cnblogs.com/dreamingbaobei/p/5062901.html



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

SEO(Search Engine Optimization):汉译为搜索引擎优化。是一种方式:利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。很大程度上是网站经营者的一种商业行为,将自己或自己公司的排名前移。


JSP是动态的,意味着随时改动。所以对SEO做优化时,需要让一些tiele固定不变。二:让JSP页面静态化



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

Tiles现在的版本是3.0.8。


模板:Template
在Tiles中,模板(Template)是一个页面的布局部分。你能将一个页面结构看成是由不同的需要填补空白组成。
 例如,考虑这个“典型布局”页面结构。


2.2、属性:Attribute

 属性是模板中的空白,它在你的应用程序中被填充到模板中。属性可以是以下三种类型:


string:属性是string的话,会将string直接呈现在页面。
template:属性是一个模板(Template),有无属性都行。如果有属性的话,你也要将他们填充后再呈现页面。

definition:它是一个可重复使用组成的页面,包含所有的属性来填充以呈现页面。



2.3、定义:definition
    定义是呈现给最终用户的组合物;本质上,一个定义是由一个模板和完全或部分填充的属性组成的。说白了就是:一个定义是由一个模板和属性组成的。
如果所有的“属性”都填充了,它将可以呈现给最终用户。

如果不是所有的属性都填充了,这个定义称为“抽象定义”(abastract definition),它可以被用作“父定义”,让其他“定义”继承,失去的“属性”能在运行时填充。


例如,你可以按之前看过的“典型模板”创建创建一个页面,修改Tiles的配置文件,如下:
<definition name="myapp.homepage" template="/layouts/classic.jsp"> 
<put-attribute name="header" value="/tiles/banner.jsp" />
<put-attribute name="menu" value="/tiles/common_menu.jsp" />
<put-attribute name="body" value="/tiles/home_body.jsp" />
<put-attribute name="footer" value="/tiles/credits.jsp" />

</definition>


2.4、视图助手:View Preparer


    有时候一个定义在呈现之前需要“预处理”。例如,显示一个menu时,menu的结构必须被创建并且已经保存在request范围内。

    为了达到“预处理 ”,视图助手将会被用到,视图助手将在呈现定义之前被调用,因此在将“定义”呈现所需的东西都会被正确的“预处理 ”。



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

实现对jsp页面的复用,减少重复页面


个人理解:Tiles就是对一个完整的前端页面进行拆分,把公用的部分拆出来,比如header,footer,meus。不共用的部分 body自己来编写,目的就是减少工作量。



可以使用其他的页面布局工具


2. SiteMesh

SiteMesh 是一个网页布局和修饰的框架,利用它可以将网页的内容和页面结构分离,以达到页面结构共享的目的。


3. JSP Layout

JSP Layout 是一个用来实现 JSP 布局支持的简单示例项目。该项目只需要一个 Servlet 类,一些配置即可。


比较:
前两者都必须使用预先配置好的布局,使用XML文件来定义布局,真正的数据显示页面无法灵活控制所需的布局;而 JSP Layout 是一个超轻量级的布局控制,要使用哪个布局文件,由目标页面通过代码进行控制,例如
request.setAttribute("layout","main.jsp");
目前 JSP Layout 只包含一个 Servlet 文件,可塑性极强,思路完全跟 Velocity 中的 Layout 控制一致,布局无需任何配置即可完成。

参考网址:https://www.oschina.net/question/12_8197?sort=default&p=2




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

通过绝对路径加上controller的请求路径,进行页面跳转,并传递相关数据。




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

除了JSP用过,其他两个都没用过,有人推荐freemarker,有人推荐Thymeleaf,我想着语言只是工具,不同环境需要使用到不同的工具,比如推荐Freemark的原因是,在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好普通的页面下:velocity应该是最好的,其次是jsp,freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。这时候就根据情况来取舍就行了。



jsp是大家最熟悉的技术


优点:
1、功能强大,可以写java代码
2、支持jsp标签(jsp tag)
3、支持表达式语言(el)
4、官方标准,用户群广,丰富的第三方jsp标签库

5、性能良好。jsp编译成class文件执行,有很好的性能表现


缺点:

jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。



velocity是较早出现的用于代替jsp的模板语言


优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能良好,据说比jsp性能还要好些

3、使用表达式语言,据说jsp的表达式语言就是学velocity的


缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多。
3、对jsp标签支持不够好

4、已经很久很久没有维护了。


freemarker


优点:
1、不能编写java代码,可以实现严格的mvc分离
2、性能非常不错
3、对jsp标签支持良好
4、内置大量常用功能,使用非常方便
5、宏定义(类似jsp标签)非常方便

6、使用表达式语言


缺点:
1、不是官方标准
2、用户群体和第三方标签库没有jsp多
选择freemarker的原因:
1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
2、宏定义比jsp tag方便
3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
4、支持jsp标签

5、可以实现严格的mvc分离


thymeleaf

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。


Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。


thymeleaf优点:静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调。springboot官方推荐方案。

thymeleaf缺点:模板必须符合xml规范,就这一点就可以判死刑!太不方便了!js脚本必须加入/


总结:
1、FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等,在spring4.0中推荐使用thymeleaf来做前端模版引擎。
2、JSP技术spring boot 官方是不推荐的,原因有三:
2.1. 在tomcat上,jsp不能在嵌套的tomcat容器解析即不能在打包成可执行的jar的情况下解析
2.2. Jetty 嵌套的容器不支持jsp

2.3. Undertow


参考网址:https://blog.csdn.net/weixin_42035459/article/details/97023807




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

${express}  读取数据




10.C标签又是什么?怎么写一个自定义的标签?自定义的标签通常有什么用处?
JSTL的核心标签。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  

<c:url> 使用可选的查询参数来创造一个URL




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


JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTML、XML 或其他格式文档的Web网页的技术标准。


JSP 技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。


JSP文件后缀名为 *.jsp 。


JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。


JSP中可以直接连接数据库


原因:
%%要自己手动在里面写java代码,增加开发过程,页面复杂,出问题排错也麻烦。

而c标签封装了很多java所需要的实现的功能,使用方便,页面简洁。



===========================
===========================
zzzzzzzzzzzz



返回列表 返回列表
评论

    分享到