目录
背景
地点:长沙飞思
时间:2023/10/16~22
大致内容:JavaWeb,Servlet
前言
JavaWeb它的体系影响着后世的项目,在JavaWeb中Servlet是一个重要的内容,而在Servlet中Request和Response又是其中最重要的组成之一。
JavaWeb
体系框架
先简单构建一个普通的JavaWeb项目
工具:idea2023.2.3,tomcat9.0.78
dao:存放与实体层对应,需要与数据库查询的接口方法。
daoImpl:继承自dao层,用于具体实现dao层中的方法,编写sql语言等。
entity:实体层,用于存放与数据库对应的表或者一些其它数据。
service:业务层,用java处理dao层中的方法,和一些其它需要考虑条件与判断,仅提供方法。
serviceImpl:继承自service,负责具体实现。
(main)web:Servlet的主要运用位置,负责与前端进行交互,接收前端的数据或者响应后端的处理。
web:前端相关,放置css,js,html,http,jar,web配置等文件。
web.xml:用于帮助java识别web,但通过@WebServlet(“/Xxx”)注解已经不要配置文件了。
Servlet
提供了一系列与前端交互的方法,而主要围绕着Request和Response,负责接收和响应数据。
生命周期
最为直接的实现Servlet,就会去实现它的生命周期方法。
init():Servlet一创建就会执行该方法,并伴随着“第一次惩罚”。
“第一次惩罚”:Servlet的默认创建是在第一次请求该Servlet的时候。
service():每次对Servlet发起请求,都会执行该方法。
destroy():在销毁Servlet对象之前会执行该方法。
继承GenericServlet,则只需要重写service()方法。
继承HttpServlet,则不需要重写其生命周期函数,只需要重写请求方式。
请求方式
简单阐述一下:
get请求:通过url传递
post请求:通过请求体传递
Request
顶级接口: ServletRequest
父接口: HttpServletRequest
功能:
-
封装了请求头数据;
-
封装了请求正文数据,如果是GET请求,那么就没有正文;
-
request是一个域对象,可以把它当成Map来添加获取数据;
-
request提供了请求转发和请求包含功能;
-
其他方法,获取url相关信息,…
请求参数
//获取一个key对应的一个value值
String getParameter(String name)
//一次性获取所有请求参数封装到一个map中
Map<String,string[]> getParameterMap()
//获取一个key对应多个values
String[] getParametervalues(String name)
域对象
request域: 同一次请求内有效。
setAttribute():增加,修改指定属性的值。
getAttribute():获取指定属性的值。
remove Attribute():移除指定属性的值。
请求转发
-
资源跳转在服务器内部,客户端无感
-
请求转发, 都是同一个request对象, request域中的数据有效
-
客户端浏览器的地址栏不会发生变化
Response
顶级接口: ServletResponse
父接口: HttpServletResponse
response对象的功能分为以下四种:
-
设置响应头信息;
-
发送状态码;
-
设置响应正文;
-
重定向;
响应正文
响应数据,给客户端的数据(普通文本/文件)
借助输出流把内容写给客户端的浏览器上(不可同用)
//字节:万能流
ServletOutputStream.getOutputStream()
//字符:文本
PrintWriter getWriter()
响应头
可以使用response对象的setHeader()方法来设置响应头!使用该方法设置的响应头最终会发送给客户端浏览器
-
response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);
-
response.setHeader("Refresh","5; URL=http://Xxx"):5秒后自动跳转到该链接
响应状态
-
response.setStatus(200):设置状态码;
-
response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。
重定向与请求转发的区别
-
转发一次请求, 重定向两次请求, request域数据只能转发中有效,在重定向无效
-
转发客户端地址栏不会发生变化, 重定向客户端地址栏会发生变化
-
转发是服务器内部的跳转只能访问服务器资源,无法访问外部资源, 重定向,客户端的跳转, 可以访问服务器内部资源,也可以是外部资源
-
请求转发对AServlet和BServlet的请求方法是相同的,即要么都是GET,要么都是POST,因为请求转发是一个请求; 重定向的第二次请求一定是GET
编码处理
-
编码处理 : post请求编码, 响应编码
-
获取请求参数, 如果需要数据类型转换, 手动转换
-
调用业务类的方法,处理请求, 业务类调用dao类操作数据, 返回一个结果
-
根据3的结果,响应不同的内容给前端
总结
久旱逢甘霖