0基础学习Java开发之Java Wed编程----《第三章JSP数据访问》--include,application,page,request,session,application,连接数据库


include指令

jsp 提供了文件引用命令 include 可以将一些重用的内容写入一个单独的文件中,然后通过include 指令引用改文件,从而缓解代码的沉余问题,并且修改时也更方便,jsp的include指令以"<%@"开始, 以“%>”结束。

include语法:

<%@ include file="应用文件路径"%> 大家根据图 :1.1 再来看看

例子:1.1

application 方法

根据图1.2 第一个就是往里面存值的,第二个就是通过key对我们的值进行获取,但三个就是根据路径,返回我们的真是路径。

例子:1.2

统计网站访问次数的实现

根据图:1.3,1.4 首先是我们在application 对象的 count属性 网站的到访人数 ,由于无法控制用户是第几个访问本网站的,所以先通过 application 对象的 getAttribute()方法进行判断,获取我们的count有没有值,如果有值那么就不是第一次登录就count=1+1,如果count等于零,那就是没有进行登录,count=1;最后将值通过,setAttribute()方法存入application  对象中,在需要显示统计人数的位置直接带调用application对象的getAttribut()方法。

例子:1.3

例子:1.4

 

例子:1.5

 例子:1.6

JSP四大作用域

作用域的分类

我们作用域有九个内置对象,里面就有四个可以进行数据的保存,而对于这四个他们之间的作用范围是不同的,所以就产生了我们的四大作用域,第一个page作用域 对应的就是我们pageContext对象,对于第二个对应的就是我们request对象,第三个就是对应的就是session 对象,第四个对应的就是我们application对象,

例子:1.7 

对象作用域

如图:1.8 application作用域对应的是我们整个上下文,从我们的程序启动到停止我们都可以调用一个,application对象,来对数据进行读取操作,对于我们application对象可以获取值,对值进行设置,所以我们application对象作用域是整个上下文,而sessiion作用域是对应一个用户会话,从我们的用户,第一次访问我们的服务器,服务器和客户端就会创建一个sessiion作用域,当我们sessiion作用域失效,销毁了,到结束,这期间sessiion作用域可以对值进行读写的操作。下面就是我们request作用域:对应一次请求,从我们的浏览器发出一次请求,直到我们的服务器返回给给我们浏览器之前,我们都可以调用我们request对象,来进行相应的数据读写操作,这个就是我们request的作用域。page作用域就是,对应一个jsp页面,当我们莫一个请求来访问我们jsp页面的时候,从我们的执行开始到我们的执行结束,整个过程就是page作用域,在我们的页面就可以直接带哦用page对象,我们随时可以拿走,在一开始我们在page存取值,到最后就可以拿走。这个时候我饿们的浏览器要请求另一个页面,这个shi'b

 例子:1.8

page作用域

第一个就是数据存放,第二个就是数据获取,根据图:2.0例子大家可以看见,我们是用page作用域,来获取值,设置值等.....

例子:1.9 

 例子:2.0

request作用域

如图:2.1 request就是把值转换到客户端,他与客户端绑在一起

 例子:2.1

session作用域

大家可以看见下面图最后输出的结果是;session:输出了session而request输出:mull,这说明session是系统默认的一次会话,我们的转发请求,会话两次我们的session对象在系统里session是唯一的,简单的了解就是我们把值存入session里面,然后再从保存的值里面获取出来,而我们的request转发请求了2次这两次的request是不一样的,所以我们放到页面里的request在另一个页面是获取不到的所以为null;

 

 

 application作用域

大家可以看到session在谷歌浏览器,输出的就是session而在别的浏览器,就显示null,而我们的application就把我们的值,显示出来了,application不管你在什么地方进行访问,其他的人都可以拿到他的值,而我们的session和我们的客户端相连接,别的客户端进行访问就访问不到。

那么下面我们给四大作用域进行总结大家如图:

page作用域就是在一个页面有效,我们可以通过pageContext对page进行读写的操作,requsert作用域他就是我们的一次请求,我们requser完成的时候就说明我们requser里面的值就消失了,对应的就是我们的一次请求。session就是我们对应的一次会话,只要我们session还没有销毁的话那么它里面的值就是有效的, application作用域他对应的是我们整个应用程序,我们应用程序停止,它里面的值就会消失。

 

浏览器缓存cookie

        根据图1.1在生活中,我们经常浏览视频网战,当我们点击搜索他会提示我们所搜索过的记录,那么这样的功能我们使用我们现在的技术应该怎样完成,根据图:1.2 那么我们先来认识他一下cookie,根据图我们知道我们可以操作web服务器可以保存客户端的一些信息,

cookie的作用:

1.对特定对象的追踪,比如我们经常访问的京东,我们会经过在里面搜索商品信息,我们再打开其他网站就会推送类似的商品信息,那么这个网站是怎么知道我们搜索的信息呢,他就是读取我们搜索的cookie.

2.实现各种个性服务,比如一些网站它可以让用户调整自己喜欢的样式,可能用户访问的都是同一个页面,但是每一个用户的样式不同,它可以通过cookie记录用户一些习惯,来给我们这些用户记录下来,这样不同的用户就展示不同的页面,

3.简化登录,就是我们可以把用户的用户名和密码,我们直接保存到cookie里面去,当用户下一次来访问这个页面,我们就不需要用户再来写自己的用户名和密码,我们就直接登录了,虽然cookie有这么多的优点,但是特也有一个不可趋势的安全性能问题,

4.容易 泄露信息,一般我们进行登录cookie就会自动登录会泄露一些信息,所以我们一般不会吧一些重要的信息保存到cookie里面。

下面我们来介绍cookie怎么使用:

在jsp中使用cookie

创建cookie 然后new一个cookie()括号里面有两个值,一个是 key,一个是 value 他是建 值 对的保存方式 ;

写入ccokie我们把我们创建好的cookie放进浏览器使用,内置对象response.addcookie()括号里放要保存的对象,这样我们就把创建好的cookie保存到了我们的客户端。

读取cookie,我们通过用户的response来获取一个cookie的数组,这哥时候我们就拿到了cookie数组,

例子:1.0 

例子:1.1

 例子:1.2

cookie里常用的方法

第一个是设置cookie有效期,在这个期限失效后cookie消失,第一个就是对我们cookie赋值的,第三个和第四个,就是获取cookie的名称和值,最后一个就是获取cookie所设置的有效期。

例子:1.3 

使用cookie进行登录练习

如图例子:1.4 我们先来设置一个用户名和密码,然后把他们保存在我们cookie对象里面,如图:1.5 我们创建cookie数组然后把用户名和秘密循环出来,如果他等于我们设置的密码进让他读取出来。

例子:1.4 

例子:1.3 

在cookie中查找session 的 ID

如下面两张图,大家可以看见我们把session的ID获取出来了,说明cookie里面的session Id,就是我们的session Id.

cookie和session的区别

打家可以看见session和cookie有些相似如图例子:1.5来给大家区分一下,session是在服务器端保存信息,而cookie是在客户端保存信息,对于保存的信息来说,session保存的可以是,object而cookie只能是String类型,对于有效期对于session来说时间到了就会销毁,而对于cookie就算时间失效或者你已经退出页面,他依旧保存这信息,对于我们session来说他是保存在服务器端,所以一般保存重要信息,而对于cookie来说他保存在客户端,浏览器可以获取cookie的值所以保存一些不重要的信息。这里也向大家说明一下我们不会在session保存大量的重要信息,因为我们session保存在我们服务器,这样会给服务器造成影响。

 例子:1.5

使用jdbc连接数据库

我们先来回顾一下如何使用JDBC连接数据库 ,大家看一看下面的图片一个一个步骤来进行,首先我们需要使用一个Class.forName()方法来加载我们的驱动,在使用Driver<anager.getConnection()获取数据库连接,发送sql语句会返回连两个Statement,ResultSet把我们的sql语句和结果进行返回,最后拿到我们的处理结果,close()并进行释放资源,先创建的后关闭,后创建的先关闭,大家可有看见,我们先创建我们的实体类,在创建喔们的Baseao,在创建我们的接口,实现我们的接口,并且先关闭我们的资源,按照先创建的后关闭,后创建的先关闭,

创建实体类

接口

 接口实现

 以上就是我们连接数据库的步骤,那么我们怎末连接到页面呢?

大家看下图首先我们设置字符集,然后获取我们的用户名和密码,创建我们的实体类对象,把我们的用户名和密码进行保存,然后引用我们的dao接口和实现,并且把我们的用户名和密码添加到result,并且进项判断,if result>0说明注册成功了我们跳转到 login.jsp,否则失败跳转 register.jsp 

页面。

 成功跳转到登录页面login.jsp

数据库刷新看到已经把我们的用户名和密码添加进去了。 

 

JSP访问数据库

大家可以看见我们现在数据访问层大家理解了,表示成大家看见了,但是没有说,现在看看我们刚刚做的那个注册下项目是不是有一些瑕疵,比如我们什么都不输入但我们点击注册特也会去填加,我们输入用户名和密码,没有填写确认密码也能添加成功非常的不规范,所以我们需要一个非空判断

首先我们把inpit  创建了id  然后创建了一个事件 validateUser

首先通过id获取组件

首先获取我们的用户名和密码,还有确认密码,我们还要获取一下我们的div然后进行判断,if 如果 userName 等于空的话就让div innerHTML是显示的意思,显示用户名不能为空,return false 判断完,如果都可以就 return true;

 接下啦我们在页面引入我们刚刚写的,代码如下我们运行项目直接点击注册,它提示用户名不能为空

 

我们输入用户名在再次点击注册密码不能为空

 

 输入密码再次点击注册,显示确认密码不能为空,

 

大家仔细看我们密码和确认密码是不一样的,可是他注册成功了,我们看第二张照片,我们把密码和确认密码写成==了我们应该写成!= 我们再来测试

 

 

 这回显示我们的密码和确认密码不一致

 当我把用户名和密码写成一致的登录成功了。

 那么现在我们的项目出现了一个非常大的一个安全隐患,就是我们用户直接访问我们登录页面,会怎么样呢

大家可以看见我们直接访问我们的成功页面,我们到数据库查看,看见我们不规范的数据就添加进数据库里面了,我们如何避免这种安全隐患呢,

解决安全隐患问题

首先我们可以看见我们避免不了要在这个页面进行处理,所以我们加一些验证信息

大家可以看见我们加了一些验证信息 如果 密码等于 空 或者字符串等于空 返回一个 用户名不能为空,接下来大家一改都懂了,如果他都通过了验证九九跳转到了成功页面,如果没通过,就使用转发发起第二次请求,还有另一种简单的写法

         我们先创建 result  让他默认等于0,在进行判断,如果通过跳转成功页面,如果不成功转发到  login.jsp页面,返回报错信息。

 获取我们转发到login.jsp的报错信息,在转发的时候先要判断如果他为 null就不显示,有报错信息在显示。

 接下来我们运行项目,我们直接跳转到从成功页面发现数据库不会在保存不规范的数据了,

我们讲下前台验证和后台验证,在我们java代码我们叫做后台验证,放在我们js里面我们叫做前台验证,为什莫折磨称呼呢因为,他们的运行环境不一样,java代码呢在我们服务器端运行,而我们的jsp就是浏览器运行,就是你启动验证我们把服务关了他照样可以运行,因为他请求到了我们服务器端。

为什么需要JAVABean

 假如我们要盖房子我们不可能把我们的沙子水泥来盖吧,我们会用一些砖啊瓷砖啊....,把他进行整体的组合,进行盖房子,也就是说在我们盖房子之前我们需要准备,我们盖房子的材料,组件,每个材料都有每个的作用,和功能,这些材料和功能我们就可以认为是我们的 JAVABean,对于JAVABean他会封装我们一些业务逻辑,数据 ,接下来他会以组建的形式,在我们的业务逻辑充当自己的功能,什么地方有需要他就会生成对象,来完成自己相应的功能,这个就是我们JAVABean的一个概念,也就是说,在我们user实体类里面我们在添加的时候,我们add添加按照以前会把user里面所有的数据都会进行输出添加,但是现在我们只需要,创建一个user的实体类的对象然后直接调用我们的实体类的对象就直接,封装起来了,对于我们user就当作一个组件来运行了,user就是我们封装的数据库里面的记录,他封装了我们数据库里面所有的数据,这个就是我们JAVABean的一个概念,那他给我们带来了什么好处,就比如说刚刚所说的那麽多值,我们还要一个一个输出来,我们直接把值,封装了,带来了神略代码的好处,简写代码,还要后续的维护带来了方便,而我们user直接对应的就是我们user的实体类,不会代替别的,在以后我们还会封装一些复杂的实体值,我们直接进行调用就可以了,对于我们JAVABean,给我们代码带来了科重用性,大家可以看最后的图片来了解。

 

 javaBean及其分类

那么我们的类要成为javaBean需要哪些东西呢?

首先它必须是一个公有的类,和一个无参构造共有的方法,属性私有化和get和set方法,我们要设置就需要我们的set方法获取呢就需要我们的get方法,保证我们javaBean的封用性,

 下面就是必须有的属性才能生成javaBean,我们生成get和set不需要是手写,直接快捷键,然后get  set方法,为什莫要声明get set呢,就是为了代码的可读性,当他一看get是来获取数据的,set是来修改数据或者,往对象里面来保存数据的,

 

 

 

大家多多练习,关注下一章 0基础学习Java开发之Java Wed编程----《第四章使用三层架构实现业务处理》--理解JNDL --连接池--理解三层架构--分层--使用三层架构--

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值