2023/7/8总结

Tomcat

  • 启动:双击bin目录下的startup.bat文件
  • 停止:双击bin目录下的shutdown.bat 文件
  • 访问 :http://localhost:8080(默认是8080,可以修改)

 git的使用

打开git bash

  • git config --global user.name "名称"  提交时的名称
  • git config --global user.email "you@example.com"  提交时的邮箱
  • git add (文件路径)  加入缓存   小句点号是改文件路径下所有的文件
  • git commit -m(注释)  生成版本
  • git li-files 当前的已经存在的文件

  • git status -s 查看文件状态 
  • git restore 目标文件  从缓存里面覆盖当前文件
  • git rm --cached 目标文件 从暂存区移除文件 

Servlet

Servlet是Server与Applet的缩写,是服务器小程序的意思。主要运行在服务端。

 当请求到达Servlet容器时,Servlet容器会判断该Servlet对象是否存在,如果不存在,则会创建实例并且初始化,这个方法只会执行一次

HttpServletRequest对象

主要是用来接收客户端发送过来的请求信息,其中service方法中形参接收的是HttpServletRequest接口的实例化对象,表示该对象主要应用在HTTP协议上,该对象是由Tomcat封装好传递过来

常用方法

 

 Tomcat8.0以上版本,get请求不会乱码,post请求会乱码

请求转发

是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的url地址不会发生改变,得到响应后,服务器端会将响应发生给客户端,从始至终只有一个请求发出去。

 request作用域

通过该对象可以在一个请求中传递数据,只在一次请求中有效,即服务器跳转有效

 HttpServletResponse对象

当服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象。想要向客户端输出数据,需要通过response对象。这个对象中封装了向客户端发送数据,发送响应头,发送响应状态码的方法。

响应数据

接收到客户端请求后,可以通过HttpServletResponse对象之间进行响应,响应时需要获取输出流。

  • getWriter()获取字符流(只能响应回字符)
  • getOutputStream()获取字节流(能响应一切数据)

响应的数据会到客户端被浏览器进行解析   俩者不能同时被使用

响应乱码问题

getWriter()获取到的字符流,如果出现中文会乱码,写下面这句话就可以解决乱码问题

 重定向

重定向是一种服务器指导,客户端的行为。客户端发出第一个请求,被服务器接收处理后,进行响应的同时会给客户端一个新的地址,当客户端接收到响应之前,会马上根据服务器给的新地址发起第二次请求,服务器就会接收请求并且作出响应。

注意重定向是不会共享数据的   重定向可以跳转到域外,但是请求转发是不会的,请求转发只能在该项目内

 Cookie对象

这个是浏览器提供的一种技术,通过服务器的程序能将一些只需要保存在客户端,或者在客户端进行处理的数据,不需要通过网络传输,来提高网页的效率。安全性较差,常见的记住密码就是通过Cookie来实现的

 想要获取Cookie,只能获取到一个数组,不能单个获取

 Cookie的到期时间

我们可以手动设定cookie的有效时间(通过到期时间来计算),cookie的时间是以秒来设定的,用setMaxAge(int time)方法设定

  • 如果时间为负数,表示不存储该cookie,只在浏览器内存中存活,一旦关闭浏览器窗口,那么cookie就会消失。默认是-1.
  • 如果时间为正整数,表示存储的秒数,当数值大于0时,浏览器会把cookie存储到硬盘上,即使关闭浏览器,cookie也会存活。
  • 如果为0,表示需要删除该cookie,表示cookie作废。

Cookie是不能存储中文的。

Cookie的路径

 

 HttpSession对象

该对象不像HttpServletRequest或者HttpServletResponse一样,存在一个父接口,该接口只是一个纯粹的接口。对于服务器而言,每一个连接到它的客户端都是一个Session,servlet容器使用此接口创建HTTP客户端和HTTP服务器之间的会话,会话会保留指定的时间段,一个会话通常只会对于一个用户,该用户可能多次访问一个站点,可以通过该接口查看和操作有关某个会话的信息。

session无论是客户端还是服务器端都可以获得,且只存在于当前的浏览器当中。

它的作用就是在于标识一次会话,并且在一次会话期间共享数据。

当请求到达服务器,如果开启了会话,服务器会查看是否从客户端传一个名为JSESSIONID的cookie,如果没有则认为是一个新的会话,会创建一个新的session对象,用一个唯一的sessionid为此次会话做一个标志。它是依赖于cookie对象存储的。

session域对象

在一次会话当中,数据是可以共享的。

 Session默认在tomcat中它的时间到期为30分钟。

销毁Session:(立即销毁)

 ServletContext对象

每一个web应用都有切记有一个ServletContext对象,又称为Application对象,该对象在WEB容器启动的时候,会为每一个WEB应用程序创建一个对应的ServletContext对象。

该对象使得整个应用程序共享某些数据,一旦存储进去,如果没有手动删除会一直保存,

主要作用为:作为域对象用来共享数据,此时数据在整个应用程序中共享,该对象保存了当前应用程序相关信息。

在Servlet中如果想要支持文件上传表单,需要加@MultipartConfig注解

文件下载

当我们在HTML页面使用a标签时,如果浏览器能够识别的内容就会显示出来,如果时浏览器不能识别的内容,浏览器就会执行下载。此时如果我们想要能够识别的内容进行下载,就需要设置download属性规定浏览器进行下载,但是有些浏览器并不支持。

MVC分层

  • M->  model   数据访问层
  • V-> view  视图层
  • C-> controller  控制层

Mybatis

ORM  对象关系映射

指的是持久化数据和实体对象的映射方式,为了解决面向对象于关系型数据库存在的互不匹配的现象的技术

映射规则

  • 数据表   ->  类
  • 表字段   ->  类属性
  • 表数据   ->  对象

mybatis 是一个持久层框架,内部封装了JDBC,开发者只需要关注到SQL语句本身,而不需要花费精力去处理加载驱动,创建连接、创建执行者等复杂的操作

它通过xml或者注解的方式将要执行的各种Statement配置起来,并且通过java对象和Statement中SQL的动态参数进行映射生成最终要执行的SQL语句。 最后执行完SQL会将结果映射为java对象并且返回,对JDBC进行了封装,屏蔽了JDBC API的底层访问细节。

相关API

  • Resources

getResourcesAsStream(String fileName) 通过类加载器返回指定资源的字节输入流

  • SqlSessionFactoryBuilder

获取SqlSessionFactory工厂对象的功能类

build(InputStream is) 通过指定资源字节输入流获取SqlSession工厂对象

  • SqlSessionFactory

获取SqlSession构建对象的工厂接口

openSession()  获取SqlSession构建者对象,并且开启手动提交事务

openSession(boolean autoCommit)  获取SqlSession构建者对象,true开启,false关闭

  • SqlSession

构建者对象接口,用于执行SQL、管理事务,接口代理

  • selectList(String statement,Object paramter) 执行查询语句,返回List
  • selectOne(String statement,Object paramter) 执行查询语句,返回一个结果对象
  • insert(String statement,Object paramter)  执行新增语句 返回影响行数
  • update(String statement,Object paramter)  执行修改语句,返回影响行数
  • delete(String statement,Object parmater)  执行删除语句,返回影响行数
  • commit()  提交事务
  • rollback()  回滚事务
  • getMapper(Class <T> cls)  获取指定接口的代理实现类对象
  • close()  释放资源

下面是一个案例: 

起别名

 然后在对应的映射文件,就可以只写User了

下面是一些系统已经给我们起好的名字

 Mybatis接口代理方式--实现规则

利用接口代理方式,我们可以只用编写接口,又Mybatis框架根据接口的定义来创建该接口的动态代理对象。

实现规则的要求:

  1. 映射配置文件中的名称空间必须和Dao层接口的全类名相同
  2. 映射配置文件中的增删查改标签的id属性必须和Dao层接口的方法名称相同
  3. 映射配置文件中的增删改查标签的parameterType属性必须和Dao层接口方法的参数相同
  4. 映射配置文件中的增删查改标签的resultType属性必须和Dao层接口方法的返回值相同

具体实现:

 

 然后调用这个对象的相应的方法就可以了

动态sql

也就是多条件查询,有时候我们需要变换查询条件,如果参数不同,需要写很多sql语句,为了解决这个问题,所以出现了多条件查询

if 标签

 foreach标签

 SQL片段抽取

我们在写sql语句的时候,通常会写一些重复的语句,为了简化,所以出现了SQL片段抽取。

 多表操作:

  • 一对一

  •  一对多

  •  多对多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13757.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11 S整数小波分解图像(matlab程序)

1.简述 学习目标&#xff1a; 非标准小波分解&#xff08;用S整数变换&#xff09; 小波分解过程&#xff1a;读取加入噪声后的图片后&#xff0c;数据即是高度*宽度个数据点。对此矩阵数据要做二维离散小波分解&#xff0c;二维小波变换和一维小波变换的区别从原理上来说就是…

分别基于红黑树、timefd、多级时间轮实现定时器

文章目录 一、定时器的应用二、定时器的触发方式2.1 网络事件和定时事件在一个线程中处理2.2 二、定时器的设计2.1 接口设计2.2 数据结构设计2.2.1 红黑树2.2.3 最小堆2.2.4 时间轮 三、利用红黑树实现定时器3.1 数据结构3.2 接口实现3.2.1 初始化定时器3.2.2 添加定时器3.2.3 …

dubbo入门

Dubbo概述 官网&#xff1a; https://dubbo.apache.org Dubbo快速入门 1 安装zk 参考 https://blog.csdn.net/qq_34914039/article/details/131614771 2 实现步骤

【Linux系统编程】20.程序、进程、CPU和MMU、PCB

目录 程序 进程 CPU和MMU PCB 程序 编译好的二进制文件&#xff0c;存在磁盘上&#xff0c;只占用磁盘资源。 进程 进程是活跃的程序&#xff0c;占用系统资源&#xff0c;在内存中执行。程序运行起来&#xff0c;产生一个进程。 程序类似于剧本&#xff0c;进程类似于一场…

Docker学习笔记16

在生产环境中使用Docker&#xff0c;往往需要对数据进行持久化&#xff0c;或者需要在多个容器之间进行数据共享。 容器管理数据有两种方式&#xff1a; 1&#xff09;数据卷&#xff1a;容器内数据直接映射到本地主机环境&#xff1b; 2&#xff09;数据卷容器&#xff1a;…

STM32实战项目—楼宇人员计数系统

本文项目比较简单&#xff0c;目的是介绍一下红外对管的使用&#xff0c;程序设计也比较简单。因此&#xff0c;博主并没有将程序工程上传资源&#xff0c;如果有需要的话可以私信。 文章目录 一、任务要求二、实现方法2.1 红外对管简介2.2 进出人员检测 三、程序设计3.1 红外对…

Jenkins基础介绍以及docker安装Jenkins

Jenkins基础介绍以及docker安装Jenkins 什么是Jenkins&#xff1f; Jenkins是一个可扩展的持续集成引擎 持续集成就是通常说的CI&#xff08;Continues Integration&#xff09; 每次集成都通过自动化的构建&#xff08;包括编译&#xff0c;发布&#xff0c;自动化测试&am…

基于simulink仿真车道偏离警告系统(附源码)

一、前言 此示例演示如何在视频序列中检测和跟踪道路车道标记&#xff0c;并在驾驶员穿过车道时通知驾驶员。该示例说明了如何使用霍夫变换、霍夫线和卡尔曼滤波器模块来创建线检测和跟踪算法。该示例使用以下步骤实现此算法&#xff1a;1&#xff09; 检测当前视频帧中的车道…

Zabbix 6.0 介绍及部署

目录 一、Zabbix 6.0 介绍1. 简介2. **利用一个优秀的监控软件带来的好处**3. **zabbix 6.0 的功能组件**4.zabbix 监控原理 二、Zabbix 6.0 部署 一、Zabbix 6.0 介绍 1. 简介 Zabbix 是由 Alexei Vladishev 创建&#xff0c;目前是由 Zabbix SIA 在持续开发和提供支持。zab…

python 实现简易的学员管理系统

文章目录 前言基本思路需求实现1.实现菜单的功能2.提示用户输入需要进行的操作&#xff0c;并执行相关操作3.具体函数功能的实现增加学员信息显示所有学员信息删除学员信息修改学员信息查询学员信息 整体代码展示 前言 前面我们已经学习了 python 的输入输出、条件语句、循环、…

Redis - 一篇讲解根据 Key 前缀统计分析内存占用

问题描述 今天遇到一个 Redis 内存打挂了的问题&#xff0c;想看看哪个前缀 Key 占用内存比较大&#xff1f;&#xff01; 原因分析 我们都知道如果直接用 Keys 参数去做统计很危险&#xff0c;而且也只能统计数量&#xff0c;当然也可以排序去前几名的占用内存 Key 对应的大…

逆转乾坤,反转字符串

本篇博客会讲解力扣“344. 反转字符串”的解题思路&#xff0c;这是题目链接。 这是一道经典题目了。解题思路是&#xff1a;双下标&#xff0c;left指向最左边的字符&#xff0c;right指向最右边的字符&#xff0c;交换2个字符&#xff0c;left向右挪动一格&#xff0c;right向…