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片段抽取。

 多表操作:

  • 一对一

  •  一对多

  •  多对多

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV读取一张深度图像并显示

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> #include

服务端研发提测模板

test环境分支自测通过 提测邮件标注test环境分支 【xxxxxx需求】服务端研发提测了&#xff0c;快去测试吧!

第十二章 elk

1、ELK可以帮助我们解决哪些问题 日志分布在多台不同的服务器上,业务一旦出现故障,需要一台台查看日志 单个日志文件巨大,无法使用常用的文本工具分析,检索困难; 2、架构设计分析 Filebeat和Logstash ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、i…

简述JMeter实现分布式并发及操作

为什么要分布式并发&#xff1f; JMeter性能实践过程中&#xff0c;一旦进行高并发操作时就会出现以下尴尬场景&#xff0c;JMeter客户端卡死、请求错误或是超时等&#xff0c;导致很难得出准确的性能测试结论。 目前知道的有两个方法可以解决JMeter支撑高并发&#xff1a; …

【ELK企业级日志分析系统】部署Filebeat+ELK详解

部署FilebeatELK详解 1. 部署Filebeat节点&#xff08;CentOS 7-4&#xff09;1.1 部署Apache服务1.2 部署Filebeat服务 2. filter插件2.1 grok正则捕获插件2.1.1 内置正则表达式调用2.1.2 自定义表达式调用2.1.3 设置正则表达式过滤条件 2.2 mutate数据修改插件2.2.1 Mutate过…

抖音seo矩阵系统源码|需求文档编译说明(二)

目录 1.抖音seo矩阵系统文档开发流程 2.各平台源码编译方式说明 3.底层技术功能表达式 1.抖音seo矩阵系统文档开发流程 ①产品原型 ②需求文档 ③产品流程图 ④部署方式说明 ⑤完整源码 ⑥源码编译方式说明 ⑦三方框架和SDK使用情况说明和代码位置 ⑧平台操作文档 ⑨程序架…

Ubuntu 20.04 L2TP VPN 自动重连脚本,cron定时任务设置

1、连接VNP脚本 reconnect_l2tp_vpn.sh #!/bin/sh ppp0_flagifconfig | grep ppp0 echo $ppp0_flag if [ -z "$ppp0_flag" ];thenecho "connet to vpn ..."# connet vpn# echo PASSWORD &#xff5c; sudo -S 这样可以不用手动输入密码!echo abc123| su…

IDEA集成Maven

目录 配置Maven环境 创建Maven项目 Maven坐标 导入Maven项目 Maven依赖管理&#xff08;核心&#xff09; 配置Maven环境 两种方法 每没创建一个maven项目都需要在项目中配置一遍在所有设置中进行全局设置&#xff0c;适用于所有的maven项目 步骤 在idea的初始界面中找到所…

【雕爷学编程】Arduino动手做(158)---VL53L0X激光测距模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【Django学习】(十二)GenericAPIView_过滤_排序_分页

上篇文章初步接触了GenericAPIView&#xff0c;这次来更加深入的学习它&#xff0c;了解里面的一些使用和方法 get_object&#xff1a;源码中&#xff1a;处理查询集&#xff0c;并含有所需要得pk值,lookup_fieldget_queryset&#xff1a;源码中&#xff1a;先判断queryset是否…

可使用Linux 测试IP和端口是否能访问,查看返回状态码

一、 使用wget判断 wget是linux下的下载工具&#xff0c;需要先安装. 用法: wget ip:port wget ip:port连接存在的端口 二、使用telnet判断 telnet是windows标准服务&#xff0c;可以直接用&#xff1b;如果是linux机器&#xff0c;需要安装telnet. 用法: telnet ip port…

uniapp电子签名以及竖屏签名后内容旋转90度变为横屏图片

用该插件挺不错的 电子签名插件地址 如果你一个页面要用多个该插件&#xff0c;就改成不同的cavas-id&#xff0c;修改插件源码 效果图 竖屏写 旋转成横屏图片 插件内 在拿到签名临时地址后的页面 <!-- 旋转图片canvas --> <canvas canvas-id"camCacnvs&quo…

MySQL-SQL存储函数以及触发器详解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

15 Java 使用for进行死循环

括号里直接写两个分号即可。for(;;) package demo;public class Demo8 {public static void main(String[] args) {for (;;){System.out.println("你是最棒的&#xff01;");}} }

springboot高校党务系统

开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9

神经网络解决预测问题(以共享单车预测为例)

背景:大约从2015年起,共享单车席卷了大部分城市。共享单车在给人们带来便利的同时,也存在一些问题:单车的分布很不均匀。比如在早高峰的时候,一些地铁口往往聚集着大量的单车,而到了晚高峰却很难找到一辆单车了。那么如何解决共享单车分布不均匀的问题呢?目前,共享单车…

Docker镜像

是什么 是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等)&#xff0c;这个打包好的运行环境就是image镜像文件。 只有通…

离散化模板(附 区间和 解决方法)

目录 用于解决的问题类型&#xff1a; 作用&#xff1a; 使用到的函数&#xff1a; 常用模板&#xff1a; 例题引入&#xff1a; 题目&#xff1a; 解题思路&#xff1a; 代码详解&#xff1a; 用于解决的问题类型&#xff1a; 对于值域比较大&#xff0c;但个数比较少…

Window10 系统 RabbitMQ的安装和简单使用

1、下载 & 安装 Erlang 因为RabbitMQ的服务端是基于 Erlang编写的&#xff0c;所以&#xff0c;首先需要安装Erlang。 1&#xff09;下载 下载地址如下&#xff1a; https://www.erlang.org/downloads此处下载比较慢&#xff0c;可以参考如下百度网盘&#xff1a; 链接…

SSM框架训练 实现各个功能时遇到的常见问题

快速复制当前代码到下一行&#xff1a;ctrlD 格式化代码&#xff08;快速整理代码&#xff09;&#xff1a;ctrilaltL 一步一步来&#xff0c;后续会不停添加功能。 先创建项目结构&#xff1a;搭建框架 (36条消息) SSM框架模板&#xff08;高配&#xff1a;一次性配完所有…