整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

jsp技术被淘汰了?那还要不要学它?

jsp技术被淘汰了?那还要不要学它?

天是刘小爱自学Java的第92天。

感谢你的观看,谢谢你。

话不多说,开始今天的学习:

首先声明:jsp这个技术基本被淘汰了,不太重要,用到它的可能性很低,但是有些企业还是会用到的。

花一天时间对其做一个简单的了解。

一、jsp概述

1jsp出现的原因

jsp这个技术的出现是为了解决一个什么问题?

先看如下情况:

在Java代码中,服务器要响应一个HTML页面给浏览器,需要将标签拼接在代码中。

这样一顿操作下来就会显得十分地繁琐,操作麻烦不说,阅读性还差。

那有没有什么方法解决这个问题呢?

jsp技术就应运而生了,在jsp文件中,既能写Java代码,又能写HTML代码,特别地厉害。

2jsp定义

JSP全名为Java Server Pages,翻译为java服务器页面,其本质是一个简化的Servlet。

它是由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准。

大白话就是一个既能书写Java代码又能书写HTML代码的文件。

3jsp为什么被淘汰了?

jsp被淘汰本身并不是因为技术落后的原因,它之所以被淘汰是因为行业趋势。

现在强调前后端分离,前端写前端的代码,后端写后端的代码,没有必要将前端和后端代码融合在一起,所以jsp使用就受限了。

当然也并不是完全就没人用了,只是用的少了。

二、jsp语法

1在jsp中书写代码

①注释格式

在jsp中的注释格式为:<%--注释--%>

②Java代码编写

格式为:<%Java代码%>,在该格式里面就能编写Java代码。

这样编写以后,在浏览器上输入对应的路径,就能发现能用Java语法在浏览器上输入内容了。

以上也就完成了在jsp文件中写Java代码了。

2jsp执行流程

jsp文件为何可以写Java代码,其底层是怎么样的一个执行流程呢?画图讲解:

①浏览器访问demo01.jsp

根据对应的路径来访问jsp文件,该jsp文件会被转化成两个文件:

demo01_jsp.java和demo01_jsp.class。

这两个文件对于Java开发者来说简直不要太熟悉了:一个是Java源码文件,一个是其对应的字节码文件。

也就是说jsp文件其实底层被转换成了Java文件,再执行的Java代码。

②关于转换后的Java源码

打开对应的Java源码文件,当然上图中我只截图了一部分做一个说明,其实源码远不止这么点。

从截图中的部分代码可以看出:

  • <%%>中的代码被直接解析成java代码。
  • html部分都被out.write("")方法以字符串的形式拼接,然后响应给浏览器。

绕来绕去其实还是拼接,和最先开始的方法一样,只不过说jsp中拼接被封装了,不用我们写。

3三种书写Java代码的方式

①脚本声明

格式:<%! 书写Java代码 %>

中间有一个感叹号,这里面也是可以编写Java代码的。

查看其对应的Java源码文件,会发现这块代码对应于源码中的成员变量和成员方法

②脚本片段

格式:<%书写Java代码 %>

它比①就少了一个感叹号,其对应的是源码中_jspService方法的Java代码。

在Java中,方法里面是不能定义一个新的方法的,所以方法定义只能用①的格式来编写。

③脚本表达式

格式:<%="表达式" %>

其对应的Java代码就是out.print()。

三、EL表达式

EL表达式就是专门来取代上面三种格式中③脚本表达式的。

格式为:${str}。其就相当于<%=str%>,其中str为一个变量。

1四大域对象

根据其范围从小到大排列:

  • page域:只能在当前页面有效。
  • request域:只在一次请求或请求域中有效。
  • session域:一次会话(一次或多次请求和响应)过程中有效。
  • application域:整个项目过程中都有效。

2从四大域对象中取值

①设定域对象的值

使用的方法都是setAttribute()方法,参数以键值对的方式存值,

②普通方式取值

以page域对象为例,其格式为:

${pageScope.pageKey}

pageKey为page域对象对应的key,使用这种方式就能取出域对象中的值了。

③简写方式取值

以page域对象为例,格式为:${pageKey}

将pageScope简化了,直接就是一个key。

但是这样就会有一个问题,key可能会重复。

毕竟key是人为命名的,page域对象中的key和request域对象中的key可能一样。

如果key重复了,会按照从小到大逐级查找。

3从Cookie中取值

①保存Cookie到浏览器

在LoginServlet中保存两个Cookie到浏览器:

  • usernameCookie:名为username,值为请求中的数据,即登录界面输入的用户名。
  • passwordCookie:名为password,值为请求中的数据,也就是登录界面输入的密码。

②取出Cookie对应的值

以usernameCookie为例,这个Cookie中的key为usename,根据key来取值。

格式为:${cookie.username.value}

这样做有什么好处?做一个测试:

在第一次登录输入用户名和密码后,其数据会被保存在cookie中,从而被页面读取到。

再次刷新时,用户名和密码会自动出现,就不用再次输入用户名和密码了。

最后

谢谢你的观看。

如果可以的话,麻烦帮忙点个赞,谢谢你。

向对象是程序中一个重要的思想,就是程序中所有的操作都是通过对象完成的。

举例来说:

    • 操作浏览器要使用window对象
    • 操作网页要使用document对象
    • 操作控制台要使用console对象

一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。

在程序中所有的对象都被分成了两个部分数据和功能,以人为例,人的姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉这些属于人的功能。数据在对象中被称为性,而功能就被称为方法。所以简而言之,在程序中一切皆是对象

想要面向对象和操作对象,首先便要先拥有对象,所以接下来就是怎么创建对象

1、类(class)

要想面向对象,操作对象,首先便要拥有对象,那么下一个问题就是如何创建对象。要创建对象,必须要先定义类,所谓的类可以理解为对象的模型,程序中可以根据类创建指定类型的对象,举例来说:可以通过Person类来创建人的对象,通过Dog类创建狗的对象,通过Car类来创建汽车的对象,不同的类可以用来创建不同的对象。

2、面向对象的创建方式

  • 字面量创建
    缺点:适合创建单个对象,代码冗余

  • 实例创建
    缺点:适合创建单个对象,代码冗余

分析:看看字面量创建对象new Object创建对象两种方式,其实字面量创建对象的本质就是new Object创建对象

// 字面量创建对象
const person2={name: '张三', age: 10}
console.log(person2) // { name: '林三心', age: 10 }

本质是
// new Object创建对象
const person2=new Object()
person2.name='张三'
person2.age=10
console.log(person2) // { name: '张三', age: 10 }

因为构造函数的prototype和其实例的_proto_是指向同一个地方的,所以我们来验证一下

const person2={name: '张三', age: 10}
const person3=new Object()
person3.name="张三"
person3.age=10
person3._proto==Object.prototype    // true
person2._proto==Object.prototype    //true
  • 工厂模式创建 函数的 封装
    问题:解决了代码冗余的问题,但识别不明

  • 构造函数创建
    问题:解决了指向不明的问题,但浪费内存

其中new操作符都做了什么呢?

 //1.声明构造函数
        function Student(name, age, sex) {
            //1.隐式的创建了一个空对象,让this指向这个空对象
            //this=new Object();
            //2.执行构造函数中代码(添加属性和方法)
            //添加属性
            this.name=name;
            this.age=age;
            this.sex=sex;
            //添加方法
            this.study=function () {
                console.log("good good study,day day up!!!,好好学习,天天自闭");
            }
            //4.隐式的返回创建好的对象
            //return this
        }

        var s2=new Student("曾庆文",18,"女");
        console.log(s2); // {name: "曾庆文", age: 18, sex: "女", study: ?}
  • 原型对象创建方式
    问题:解决了浪费内存的问题,但不能传参

  • 混合创建 构造函数(可变)+原型(固定的,公共的,共享的)
    问题:破坏了封装性,因为原型中的属性和方法写在了函数的外边。

  • 动态混合创建

乎每个互联网企业都需要Web前端工程师,需求量大、薪资高,自然吸引了很多人加入。很多想要通过Web前端培训学习的人会担忧,武汉Web前端培训课程怎么样?都能学到些什么?下面,千锋武汉Web前端培训学员就分享自己在武汉Web前端培训学习的亲身经历。

从一个懵懵懂懂,四处碰壁的迷茫少年,一个月以前我走进了千锋武汉Web前端培训。这里的学习氛围,授课老师和管理制度都让我受益匪浅,好似又回到了上学时代。来到这里学习了一个多月了,让我觉得这里就是一个温馨的大家庭。

我作为一个菜鸟,头一次接触程序代码。刚开始学习的时候完全是手足无措,总是比别人慢半拍,后来随着不断的理解,我也慢慢融入了学习之中,现在想想来到千锋武汉Web前端培训学习还是蛮有趣的。

第一阶段我们主要学习了HTML与CSS。说实话不学不知道,学了吓一跳。原来如今网络上眼花缭乱的网页都是用代码写出来的。一张张图片、各种动画及效果,简直令我大开眼界。我们在陈老师的教导下,从一开始的画色块,慢慢的组建框架,加上各种点击效果,一步一步的创建一个网页。这里面离不开老师细心地教授,当然也有我们各自付出的汗水。老实说学习了CSS我更进一步的理解了细心地重要性,往往写错一个单词,甚至一个字母都是致命的错误,有句话说的妙,细节决定成败是准没错的。

回头想想,在千锋武汉Web前端培训班这一个多月里我确实进步了不少,无论是态度还是自我约束。当然这些都离不开我的选择,走进了千锋就没想过要回头,所以在接下来的学习中我会加油,决不给自己留遗憾。也希望千锋的学员们共同努力,朝着自己的梦想加油!