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

相关推荐
李冰然1 小时前
深入Java集合框架:HashMap源码解析(JDK 8)
java
桦说编程3 小时前
盘点并发集合里那些容易误判的行为
java·后端·性能优化
IT爱学堂4 小时前
java版数据结构和算法+AI算法和技能学习指南
java·开发语言
evans在进步4 小时前
LeetCode 394:字符串解码——Java 单栈模拟与嵌套解析详解
java·python·leetcode
AI人工智能+电脑小能手4 小时前
大白话说Java设计模式-17-装饰器模式(源码剖析篇)
java·spring·设计模式·装饰器模式·源码分析·io流
m0_547486665 小时前
《Java程序设计与实践 》全套PPT课件2026
java·开发语言
土司大王6 小时前
LeetCode hto100——字母异位词分组
java·算法·leetcode
码匠许师傅6 小时前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试
jason.zeng@15022076 小时前
linux的top命令
java·linux·服务器
QCodingDev6 小时前
Spring AI Alibaba ReAct Agent实战:从Tool Calling到Agent,企业AI复杂业务该如何设计?
java·人工智能·agent·ai编程·spring ai