jsp概述&快速入门&原理

文章介绍了JavaWeb开发中的MVC模式,阐述了三层架构的数据访问、业务逻辑和表现层。详细讲解了Cookie和Session的原理、使用细节以及它们在会话跟踪中的角色。同时,提到了AJAX技术在异步数据交互中的应用,以及JSON作为数据载体的作用。
摘要由CSDN通过智能技术生成

jsp概述&快速入门&原理

一、MVC模式

  • MVC是一种分层开发的模式,其中:

  • M:Model,业务模型,处理业务

  • V:View,视图,界面展示,调用模型和视图

二、MVC好处

  • 职责单一,互不影响

  • 有利于分工协作

  • 有利于组件重用

三、三层架构

  1. 数据访问层:对数据库的CRUD基本操作— com.itheima.web/controller

  2. 业务逻辑层:对业务逻辑进行封装,组合数据访问层中的基本功能,形成复杂的业务逻辑功能—com.itheima.service

  3. 表现层:接受请求,封装数据,调用业务逻辑,响应数据—com.itheima.dao/mapper

四、案例:

1、完成品牌数据的增删改查操作

1.1、准备环境

  • 创建新的模块brand_demo,引入坐标

  • 创建三层架构的包结构

  • 数据库表tb_brand

  • 实体类Brand

  • MyBatis基础环境

    • Mybatis-config.xml

    • BrandMapper.xml

    • BrandMapper接口

1.2、添加

Dao层:在brandMapper中定义一个add方法,然后定义brand对象

Service层:提供一个add方法,直接调用brandMapper中的add中的add方法

web层:使用JavaScrip完成t单击事件的绑定

会话跟踪技术

  • 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接会话结束,再一次会话中可以包含多次请求和响应

  • 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多种请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。

  • HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享

  • 实现方式

    1. 客户端会话跟踪技术:Cookie

    2. 服务端会话跟踪技术:Session

一、Cookie的基本使用

1、Cookie的基本使用

  1. Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问

  2. Cookie的基本使用

发送Cookie

1.创建Cookie对象,设置数据
​
    Cookie cookie = new cookie("key","value");
​
2.发送Cookie到客户端,使用response对象
​
    response.addCookie(cookie);

获取Cookie

3.获取客户端携带的所有cookie,使用request对现
​
    Cookie[] cookies = request.getCookie();
​
4.遍历数组,获取每一个Cookie对象:for
​
5.使用Cookie对象方法获取数据
​
    cookie.getName();
​
    cookie.getValue

二、Cookie原理

Cookie的实现原理是基于HTTP协议的

  • 响应头:set-cookie

  • 请求头:cookie

三、Cookie使用细节

Cookie存活时间

  • 默认情况下,Cookie存储在浏览器内存中,当关闭浏览器,内存释放,则Cookie被销毁。

  • setMaxAge(int seconds):设置Cookie存活时间

  1. 正数:将Cookie写入浏览器所在的电脑的硬盘,持久化存储,到时间自动删除

  2. 负数:默认值,Cookie在当前浏览器内存中,当浏览器被关闭,则Cookie被销毁

  3. 零:删除对应Cookie

Cookie存储中文

  • Cookie不能直接存储中文

  • 如需要存储,需要进行转码:URL编码

四、Session基本使用

Session

服务端会话跟踪技术:将数据保存到服务端

JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能

使用:

1.获取Session对象

HttpSession session = request.getSession();

2.Session对象功能

void setAttribute(String name,Object o):存储数据到session域中

Object getAttribute(String name):根据key,获取值

void removeAttribute(String name):根据key,删除该键值对

五、Session原理

Session是基于Cookie实现的

六、Session使用细节

Session钝化,活话

服务器重启后,Session中的数据是否还在?

  • 钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中

  • 活化:再次启动服务器后,从文件中加载数据到Session中

Session销毁

  • 默认情况下,无操作,30分钟自动销毁

<session-config>
        <session-timeout>30</session-timeout>
</session-config>
  • 调用Session对象的invalidate()方法

小结

  • Cookie和Session都是来完成一次会话内多次请求间数据共享的

区别:

  • 存储位置:Cookie是将数据存储在客户端,Session将数据存储在服务端

  • 安全性:Cookie不安全,Session安全

  • 数据大小:Cookie最大3KB,Session大小无限制

  • 存储时间:Cookie可以长期存储,Session默认30分钟

  • 服务器性能:Cookie不占用服务器资源,Session占用服务器资源

七、案例

登录注册案例

需求说明:

1.完成用户登录功能,如果用户勾选“记住用户”,则下次访问登陆页面,自动填充用户名密码

2.完成注册功能,并实现验证码功能

用户登录

三层架构

Web层:

Service层:

Dao层:

记住用户

如果用户勾选“记住用户”,则下次访问登陆页面自动填充用户名和密码

如何自动填充用户名和密码?

  1. 将用户名和密码写入Cookie中,并且持久化存储Cookie,下次访问浏览器会自动携带Cookie

  2. 在页面获取Cookie数据后,设置到用户名和密码框中

何时写Cookie

  1. 登录成功

  2. 用户勾选记住用户复选框

  • 注册功能:保存用户信息到数据库

验证码功能:

  • 展示验证码:展示验证码图片,并可以点击切换

  • 校验验证码:验证码填写不正确,则注册失败

  • 验证码就是使用Java代码生成的一张图片

  • 验证码作用:防止机器自动注册,攻击服务器

校验验证码

  • 判断生成的验证码和用户输入的验证码是否一样,如果不一样,则阻止注册

  • 验证码图片访问和提交注册表单时两次请求,所以要将程序生成的验证码存入Session中

Filter

  • 概念:Filter表示过滤器,是JavaWeb三大组件(Servlet,Filter,Listener)之一

  • 过滤器可把对资源的请求拦截下来,从而实现一些特殊的功能

  • 过滤器一般完成一些通用的操作,比如:权限控制,统一编码处理,敏感字符处理等等...

一、Filter快速入门

1.定义类,实现Filter接口,并重写所有方法

public class FilterDemo implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo...");
​
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
    }
​
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
​
    }
​
    @Override
    public void destroy() {
​
    }
}

2.配置Filter拦截资源的路径:在类上定义@WebFilter注解

@WebFilter("/*")
public class FilterDemo implements Filter {}

3.在doFilter方法中输出一句话,并放行

//放行
filterChain.doFilter(servletRequest,servletResponse);

二、Filter执行流程

  1. 放行后执行对应资源,资源访问完成后,还会回到Filter中,

  2. 回到Filter中,将执行放行后逻辑

  3. 执行前逻辑——>放行——>访问资源——>执行放行后逻辑

三、Filter使用细节

1.Filter拦截路径配置

  • Filter可以根据需求,配置不同的资源拦截路径

  1. 拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截

  2. 目录拦截:/user/*:访问/user下的所有资源,都会被拦截

  3. 后缀名拦截:*.jsp:访问后缀名为.jsp的资源,都会被拦截

  4. 拦截所有:/*:访问所有资源,都会被拦截

2.过滤器链

  • 一个Web应用,可以配置多个过滤器链,这多个过滤器称为过滤器链

  • 注解配置的Filter,优先级按照过滤器的类名(字符串)的自然排序

四、案例

登录验证

  • 需求:访问服务器资源时,需要先进行登录验证,如果没有登录,则自动跳转到登录页面

Listener

  • 概念:Listener表示监听器,是JavaWeb三大组件(Servlet,Filter,Listener)之一。

  • 监听器可以监听就是在application,session,request三个对象创建,销毁或者往其中添加修改删除属性时自动执行代码的功能组件

  • Listener分类:JavaWeb中提供了8个监听器

监听器分类监听器名称作用
ServletContextServletContextListener用于对ServletContext对象进行监听(创建、销毁)
ServletContextAttributeListener对ServletContext对象中属性的监听 (增删改属性)
Session监听HttpSessionListener对Session对象的整体对象的监听(创建,销毁)
HttpSessionAttributeListener对Session对象中的属性进行监听(增删改属性)
HttpSessionBindingListener监听对象属于Session的绑定和解除
HttpSessionActivationListener对Session数据的钝化和活化的监听
Requ监听ServletRequestListener对Requesst对象进行监听(创建、销毁)
ServletRequestAttributeListener对Request对象中属性的监听(增删改属性)

一、ServlerContextListener的使用

1.定义类,实现ServletContextListener接口

2.在类上添加@WebListener注解

@WebListener
public class ContextLoaderListener implements ServletContextListener {
​
​
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
​
        //加载资源
        System.out.println("contextInitialized...");
    }
​
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
​
        //释放资源
    }
}

AJAX

  • 概念:AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML

  • AJAX作用:

1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据

  • 使用AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了

2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想,用户是否可以校验,等等...

一、AJAX快速入门

1.编写AjaxServlet,并使用response输出字符串

2.创建XMLHttpRequest对象:用于和服务器交换数据

二、案例

使用AJAX验证用户名是否存在

需求:在完成用户注册时,当用户名输入框失去焦点时,检验用户名是否在数据库已存在

三、Axion异步框架

四、JSON

  • 概念:JavaScript Object Notation。JavaScript对象表示法

  • 由于其语法简单,层次结构鲜明,现多用于作为数据载体,在网络中进行数据传输

一、JSON基础语法

  • 定义

value的数据类型为:
​
                数字(整数或浮点数)
​
                字符串(在双引号中)
​
                逻辑值(true或false)
​
                数组(在方括号中)
​
                对象(在花括号在中)
​
                null

var 变量 = {"key1",value1,
            "key2",value2,
            ...
            };

示例:

var json = {"name":"zhangsan",
            "age":23,
            "addr":["北京","上海","西安"]
};
  • 获取数据:

变量名:key
json.name

二、JSON数据金额Java对象转换

  • 请求数据:JSON:JSON字符串转为Java对象

  • 响应数据:Java对象转为JSON字符串

JSON数据和Java对象转换

Fastjson时阿里巴巴提供的一个Java语言编写的高性能功能完善的JSON库,是目前Java语言中最快的JSON库,可是实现Java对象和JSON字符串的相互转换

使用:

1.导入坐标

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>

2.Java对象转JSON

String jsonStrings = JSON.toJSONString(obj);

3.JSON字符串转Java对象

User u = JSON.parseObject(jsonStr,User.class);

VUE

  • Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写

  • 基于MVVM(Model-View-ViewModel)思想,实现数据的双重绑定,将编程的关注点放在数据上

  • 官网:https://cn.vuejs.org

MVC:只能实现模型到视图的单向转换

MVVM:可以实现数据的双向绑定

一、Vue快速入门

二、Vue常用指令

指令:HTML标签上带有v-前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for...

常用指令:

指令作用
v-bind为HTML标签绑定属性值,如设置href,css样式等
v-model在表单元素上创建双向数据绑定
v-on为HTML标签绑定事件
v-if
v-else条件性的渲染其元素,判定为true时渲染,否则不渲染
v-else-if
v-show根据条件展示某元素,区别在于切换的是display属性的值
v-for列表渲染,遍历容器的元素或者对象的属性

三、Vue生命周期

生命周期的八个阶段:没触发一个生命周期事件,会自动执行一个生命周期方法(钩子)

状态阶段周期
beforeCreate创建前
created创建后
beforeMount载入前
mounted挂在完成
beforeUpdate更新前
update更新后
beforeDestroy销毁前
destroyed销毁后

Element

  • Element:是饿了么公司前端开发团队提供的一台基于Vue的网站组件库,用于快速构建网页

  • 组件:组成网页的 部件,例如:超链接,按钮,图片,表格等等~

Element快速入门

1.映入Element的css,js文件和Vue.js

2.创建Vue核心对象

3.官网复制Element组件代码

Element布局

Element有两种布局方式

  1. layout布局:通过基础的24分栏,迅速简便的创建布局

  2. Container布局容器:用于布局的容器组件,方便快速搭建页面的基本结构

Element组件

综合案例

第一步:编写BrandMapper中的查询方法

第二步:编写service层

第三步:编写web层

一、新增案例

①先写dao层

在brand Mapper中书写添加方法 void add(brand)

②书写service层

在BrandService中添加add方法,然后调用brandMapper中的 添加方法void add(brand)

③在前端页面,点击提交按钮,发送ajax请求,携带表单数据,在web层,接收品牌数据,然后调用service添加,相应成功标识,然后响应给前端页面,前端页面获取数据,判断是否添加成功,关闭窗口,重新加载数据

二、批量删除

Dao

在BrandMapper中定义方法deleteById(int[] ids)

Service

定义deleteById方法,然后调用brandMapper中的deleteById(int[] ids)方法

前端页面

1.点击批量删除按钮,发送ajax请求,携带被选中的id数组,向服务器发送请求,在web层中,在BrandServlet中接收id数组,调用service删除,响应成功标识,最后给服务器发送响应数据

前端页面获取标识,判断删除是否成功。给出提示,重新查询数据

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值