Web(B/S架构)

B/S架构

HTTP

请求数据格式

get和post的请求参数不一样

get的请求参数在请求行,没有请求体

post的请求参数在请求体

响应格式

状态码

通过

404去改路径

服务端

500去修改java代码

Tomcat

部署

Web项目

创建web项目

1.使用骨架

2.不适用骨架

部署到idea

通过pom文件配置

Servlet

实现Servlet接口,重写五个方法

Tomcat会创建servlet对象和自动调用service方法

Request放的是请求的数据,response可以设置成相应的数据

servlet执行流程

servlet生命周期

init()只会被执行一次,sercive()方法是每次请求都会被调用

init()在创建对象时默认调用一次,调用完就不会再调用了

配置服务器启动时自动创建Servlet对象,使用注解时,要是有多个值不能省value=,现在要设置另外一个值,因此要加上url=

service()方法,多次调用

destory()方法

getSercletConfig方法的返回值是一个Sercletconfig对象,而init要传入的参数就是Sercletconfig对象,要把局部变量变成成员变量

先在外面定义config,再在init里面this.config就可以给成员变量赋值,在整个类中都可以用

Serclet体系结构

针对HTTP协议自定义Servlet都会继承HttpServlet,再重写doget()和dopost()方法

收到get请求就会执行doget,收到post请求就会执行dopost

自己实现dpget和dopost

在子类中重写doget和dopost方法;注意:这种写法就是运用多态,对象可以调用父类所有的方法和调用子类中重写的方法,所以可以调用父类的service方法和调用子类的dopost,doget

可以再urlPattern中配置多个访问路径,用数组的形式{}

urlpattern配置

当一个路径同时满足精确匹配和目录匹配,优先调用精确匹配

XML配置servlet

Request和Response

Request

Request

获取请求行的数据方法

获取请求头的数据

获取请求体的数据(post请求中)

字节:文件,图片用字节输入流

字符:文本用字符输入流

通过Request对象先获取输入流的对象,再用br去调用readline(读一行的信息)

前端这个表格一提交就会提交到/req1这个目录下

执行过程

提交完

get获取参数的方法

post获取参数的方法

由于业务逻辑一样,可以用this.doGet简化代码

Request获取请求参数的方法,request会将数据封装成键值对的形式放到map集合中,这个map集合中键是String类型,值是String的数组

1.getparameter();将这个存放数据的map集合返回回来

2.通过键获得值,值是数组String类型的

3.通过键获得单个值

1.遍历map集合;用keyset()获得所有键并返回放在一个set集合中;再用get()方法传入key键名获取对应的值,由于值可能是一个字符串数组;因此也要遍历这个值

注意:这里每个键的名字和都是前端中对应的name,每一个框都是一对键值对,键的名字是前端的name,值就是自己输入的内容

2.根据key获取值的数组

传入复选框的名字进来获取一个string数组

3.根据key获取单个值

Post请求

方法完全一模一样

用this简化

解决post请求中文乱码,设置utf-8

get处理乱码

方法:先编码再解码

请求转发

setAtt存放数据,放一对键值对数据进入域中,会随着发送到req6的时候发送过去

getAtt获取,根据键的名称获取

Response

设置响应数据

response完成重定向

简化重定向

虚拟目录

动态获取虚拟目录

设置响应字符数据的响应体

用Response对象调用setheader方法,传入html,告诉浏览器用html来解析

设置中文不会乱码,setconttype

响应字节数据

先用输入流fis读取文件信息,再用response对象获取字节输出流;设置一个数组,循环中每次fis倒入数组buff一定大小的字节,用os.write来读取buff数组中的元素

导入xml,用工具完成copy

用户登录

定义接口,注意接口中有多个参数要加注解@param后面跟着的名字要和传入#{}的名字相同

前端的form表单中路径前记得加/并且要加虚拟路径

mybatis的代码完成

使用响应,将数据传递给页面

用户注册

接口

xml中,id是自增长,传入null就可以

要是空就添加对象,记得要开启事务commit!!!

代码优化,创建一个工具类

解决乱码

修改

回显操作,当进行修改操作时,要将原来的数据回显到上面

Dao

Service

前端

将修改加上超链接,并将id放到没一个超链接后面

Web

先接收传进来的id,再用selectbyid查询;将查询到的brand对象存储到request数据域中,一同发给jsp

数据回显,利用数据域中的brand和el表达式

在mapper中加入resultmap

相关推荐
wuminyu3 小时前
专家视角看Java字节码加载与存储指令机制
java·linux·c语言·jvm·c++
callJJ4 小时前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
wbs_scy5 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
jinanwuhuaguo6 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup7 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952367 小时前
SpringBoot统一功能处理
java·spring boot·后端
Lyyaoo.8 小时前
优惠券秒杀业务分析
java·开发语言
消失的旧时光-19438 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
勿忘初心12218 小时前
Java 国密 SM4 加密工具类实战(Hutool + BouncyCastle)|企业级数据加密 + 兼容 JDK8
java·数据安全·数据加密·后端开发·企业级开发·国密 sm4
庞轩px8 小时前
第8篇:原子类与CAS底层原理——无锁并发的实现
java·cas·乐观锁·aba·无锁编程·自旋