当前位置: 首页 > news >正文

JavaWeb期末速成 Servlet

关键词:Servlet API 生命周期 处理请求 表单数据处理 发送响应

Servlet接口

Servlet接口是Servlet API中的基本接口,每个Servlet必须直接或间接实现该接口
该接口定义了如下5个方法:

void init(ServletConfig config)
void service(ServletRequest request, ServletResponse response)
void destroy()
ServletConfig getServletConfig()
String getServletInfo()

HttpServlet类

在HttpServlet类中增加了一个新的service()方法,格式如下:

protected void service(HttpServletRequest request,HttpServletResponse response)

在HttpServlet中针对不同的HTTP请求方法定义了不同的处理方法,如处理GET请求的doGet()格式如下:

protected void doGet(HttpServletRequest request,HttpServletResponse response) 

还定义了处理其他请求的方法,如处理POST请求的方法是doPost()


处理请求

GET方法POST方法
资源类型静态的或动态的动态的
数据类型文本文本或二进制数据
数据量般不超过255个字符没有限制
可见性数据是URL的一部分数据不是URL的一部分,作为请求的消息体送
数据缓存数据可在浏览器的URL历史中缓存数据不能在浏览器的URL历史中缓存

在客户端如果发生下面的事件,浏览器就向Web服务器发送一个HTTP请求。

  • 用户在浏览器的地址栏中输入URL并按回车键 GET
  • 用户点击了HTML页面中的超链接 GET
  • 用户在HTML页面中添写一个表单并提交 GET/POST

前两种方法向Web服务器发送的都是 GET请求。如果使用HTML表单发送请求可以通过method属性指定使用GET请求或POST请求

默认情况下使用表单发送的请求也是GET请求,如果发送POST请求,需要将method属性值指定为post,例如:

<form action="user-login" method="post">用户名:<input type="text" name="username" />密码:<input type="password" name="password" /><input type="submit"  value="登录">
</form>

请求参数传递和获取

请求参数是随请求一起发送到服务器的数据,它以“名/值”对的形式发送。POST请求,参数在数据区;GET请求,参数附加在URI后面

从客户端向服务器端传递请求参数有下面两种方法

  • 通过表单指定请求参数,每个表单域可以传递一个请求参数,这种方法适用于GET请求和POST请求。
  • 通过URL中的查询串指定请求参数,将参数名和值附加在请求URI后面,这种方法只适用于GET请求

使用HttpServletRequest中定义的方法检索这些参数:

  • String getParameter(String name)
  • String[] getParameterValues(String name)

向服务器发送GET请求,还可以将请求参数附加在请求URL的后面。例如,可以直接使用下面的URL访问LoginServet,而不需要通过表单提供参数:

http://localhost:8080/chapter02/user-login?username=admin&password=admin

这里,问号后面内容为请求参数名和参数值对,若有多个参数,中间用“&”符号分隔,参数名和参数值之间用等号(=)分隔。问号后面内容称为查询串(query string)


请求转发

可能需要将请求转发(forward)到其他资源。通过请求对象的getRequestDispatcher()得到RequestDispatcher对象,该对象称为请求转发器对象,格式如下:
RequestDispatcher getRequestDispatcher(String path)
调用RequestDispatcher对象的forward()方法:
void forward(ServletRequest request, ServletResponse response)


响应重定向

Servlet在对请求进行分析后,可能不直接向浏览器发送响应,而是向浏览器发送一个Location响应头,告诉浏览器访问其他资源,这称为响应重定向。
响应重定向是通过响应对象的sendRedirect()实现,格式如下:
public void sendRedirect(String location)
URL可以是绝对URL,也可以是相对URL。


状态码

状态码范围含义示例
100~199表示信息100表示服务器同意处理客户的请求
200~299表示请求成功200表示请求成功,204表示内容不存在
300~399表示重定向301表示页面移走了,304表示缓存的页面仍然有效
400~499表示客户的错误403表示禁止的页面,404表示页面没有找到
500~599表示服务器的错误500表示服务器内部错误,503表示以后再试

相关文章:

  • [C++11] : 谈谈包装器和lambda表达式,仿函数,bind的坑
  • Ntfs!NtfsVolumeCheckpointDpc函数分析到调用Ntfs!NtfsCheckpointAllVolumes函数
  • ubuntu 挂载问题
  • 【51单片机】6. 定时器、按键切换流水灯时钟Demo
  • Harbor 2.12.2 and 2.12.3 初始化密码错误
  • 风控系统中,要调用第三方服务获取信息,很慢,如何解决?
  • Pytorch中view函数详解和工程实战示例
  • Vue + element实现电子围栏功能, 根据省市区选择围栏, 自定义围栏 ,手动输入地名围栏, 保存围栏,清除围栏,加载围栏,批量检测标点是否在围栏内。
  • 杭州电商代运营公司排名前十
  • 网络的那些事——初级——路由策略
  • FastDFS 分布式存储
  • Vue 3.6前瞻:响应式性能革命与Vapor模式展望
  • codeforces 2057D. Gifts Order
  • springboot3+mybatisplus(5)-backend-mybaitsplus+frontend-router
  • 7.8 Evaluating the finetuned LLM
  • Linux下OLLAMA安装卡住怎么办?
  • uni-app项目怎么实现多服务环境切换
  • LangChain--(1)
  • 如何将一个url地址打包成一个windows桌面版本的应用程序
  • 质因数分解_java
  • 苏州做网站平台/广州seo代理
  • 行业网站模版/seo网站搜索优化
  • 查重网站开发/朋友圈软文范例
  • 苏州建设网站的公司/微信朋友圈营销文案
  • 模版网站怎么做/事件营销的案例有哪些
  • 广电基础设施建设官方网站/seo与网络推广的区别和联系