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

相关推荐
Q_19284999063 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
Code_流苏5 分钟前
VSCode搭建Java开发环境 2024保姆级安装教程(Java环境搭建+VSCode安装+运行测试+背景图设置)
java·ide·vscode·搭建·java开发环境
禁默1 小时前
深入浅出:AWT的基本组件及其应用
java·开发语言·界面编程
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
Code哈哈笑1 小时前
【Java 学习】深度剖析Java多态:从向上转型到向下转型,解锁动态绑定的奥秘,让代码更优雅灵活
java·开发语言·学习
gb42152871 小时前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶1 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
zfoo-framework1 小时前
【jenkins插件】
java
风_流沙1 小时前
java 对ElasticSearch数据库操作封装工具类(对你是否适用嘞)
java·数据库·elasticsearch