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 分钟前
vue3 封装request请求
java·前端·typescript·vue
陈王卜19 分钟前
django+boostrap实现发布博客权限控制
java·前端·django
小码的头发丝、19 分钟前
Spring Boot 注解
java·spring boot
java亮小白199724 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF30 分钟前
java Queue 详解
java·队列
武子康1 小时前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康1 小时前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql
苏-言1 小时前
Spring IOC实战指南:从零到一的构建过程
java·数据库·spring
界面开发小八哥1 小时前
更高效的Java 23开发,IntelliJ IDEA助力全面升级
java·开发语言·ide·intellij-idea·开发工具
草莓base1 小时前
【手写一个spring】spring源码的简单实现--容器启动
java·后端·spring