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