JavaWeb

目录

背景

前言

JavaWeb

体系框架

Servlet

生命周期

请求方式

Request

请求参数

域对象

请求转发

Response

响应正文

响应头

响应状态

重定向与请求转发的区别

编码处理

总结

背景

地点:长沙飞思

时间: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():移除指定属性的值。

请求转发
  1. 资源跳转在服务器内部,客户端无感

  2. 请求转发, 都是同一个request对象, request域中的数据有效

  3. 客户端浏览器的地址栏不会发生变化

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会跳转到固定的错误页面去,但可以显示错误信息。

重定向与请求转发的区别
  1. 转发一次请求, 重定向两次请求, request域数据只能转发中有效,在重定向无效

  2. 转发客户端地址栏不会发生变化, 重定向客户端地址栏会发生变化

  3. 转发是服务器内部的跳转只能访问服务器资源,无法访问外部资源, 重定向,客户端的跳转, 可以访问服务器内部资源,也可以是外部资源

  4. 请求转发对AServlet和BServlet的请求方法是相同的,即要么都是GET,要么都是POST,因为请求转发是一个请求; 重定向的第二次请求一定是GET

编码处理

  1. 编码处理 : post请求编码, 响应编码

  2. 获取请求参数, 如果需要数据类型转换, 手动转换

  3. 调用业务类的方法,处理请求, 业务类调用dao类操作数据, 返回一个结果

  4. 根据3的结果,响应不同的内容给前端

总结

久旱逢甘霖

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值