Servlet——Day24

Servlet

1.1、概述

Servlet时运行在Java 服务器的小程序
它提供了一套使Java类可以被浏览器(tomcat)所识别的规则(接口)

1.2、使用步骤

1、创建类实现Servlet接口
2、实现抽象方法
3、在web.xml配置映射文件

<servlet>
	<servlet-name>TestServlet</servlet-name>
	<servlet-class>com.wk.servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>TestServlet</servlet-name>
	<url-pattern>/test</url-pattern>
</servlet-mapping>

1.3、执行步骤

1、前端页面点击提交按钮,将表单信息提交到制定action
2、action中的地址会在web.xml中查找是否有与之匹配的中的
3、如果有则查找是否有对应的中的与D <servlet-name》一致
4、如果有则执行该下的
5、将此servlet类进行编译,编译的文件在\WEB-INF\classes\xxx
6、当这个servlet第一被访问时,执行init方法,并执行servlet方法

1.4、servlet的生命周期

1、init:第一次访问servlet时进行初始化工作
2、service:每次访问servlet时执行,进行获取请求,做出响应
3、destroy:服务器正常关闭时,进行资源的释放

1.5、HttpServlet

HttpServlet继承GenericServlet实现Servlet

二、Request

2.1获取请求参数

1、getParameter(name)
2、getParameterValues(name):通过name值获取value字符数组
3、getParameterMap():获取所有提交参数的键值对

注:
中文乱码问题
页面提交的编码格式是utf-8,而tomcat默认的编码是iso8859-1,iso8859-1不支持中文,所以产生乱码。
解决:
request.setCharacterEncoding(“utf-8”);

2.2请求转发

步骤:
1、获取请求转发器,并明确跳转的目标地址
request.getRequestDispatcher(path);
2、执行转发器的转发功能
dispatcher.forward(req,resp);

细节:
1、请求转发只能访问服务器内部资源
2、地址栏不发生变化
3、请求转发只执行了一次请求

2.3 共享数据

域对象:可以在指定生命周期内共享数据的对象
Request:作用范围仅在一次请求中,如果使用的是请求转发,那么转发后的页面可以获取存在域中的数据;如果使用的是重定向,那么重定向后的页面无法获取域中的数据,因为重定向执行力两次请求,而请求转发是在一次请求内的。
ServletContext
Session

通用方法:
1、setAttribute(String,Object):向域中存储键值对
2、getAttribute(String):通过键获取值
3、removeAttribute(String):通过键删除键值对

三、Response

3.1 响应行

  • 版本/协议:
  • 响应状态码:描述请求和响应的信息,3位数,设置状态码用response.setStatus(状态码)
    • 1xx:表示服务器接收到了客户端的数据,但是没有接收完毕
    • 2xx:成功
      • 200:OK
    • 3xx:重定向
      • 302:重定向
      • 304:访问缓存
    • 4xx:客户端错误
      • 404 not found:访问资源不存在
      • 405 Method Not Allowed:指定的访问方式没有对应的doXxx方法
    • 5xx:服务器内部错误
      • 500 Internal Server Error异常
  • 状态码描述:

3.2 响应头

格式:
键 : 值

常见的响应头:setHeader(键,值)
1、location:表示重定向的位置
重定向:

  • 设置响应行的状态码为302
    response.setStatus(302)
  • 设置重定向位置
    response.sentRedirect(“path”);
    2、content-type:告知浏览器本编码以何种编码响应
    设置响应的编码格式:
    response.setHeader(“content-type”,“text/html;charset=UTF-8”)
    简单写法: response.setContentType(“text/html;charset=UTF-8”)

3.3 响应体

响应的数据

1、使用字符输出流
response.getWrite().write();
2、使用字节输出流
response.getOutputStream().write();

四、请求转发和重定向

4.1 请求转发

RequestDispatcher dispatcher = request.getRequestSispatcher("地址");
dispatcher.forward(request,response);

4.2 重定向

response.sendRedirect("path")

4.3 区别:

请求转发地址栏不变,重定向改变
请求转发只请求了一次,重定向请求了两次
请求转发后的页面可以获取请求域中的数据,重定向不能

重定向可以访问外部资源,请求转发不能

请求的性能优于重定向

五、ServletContext

概述:它是整个web工程的对象,使web中最大的接口,每个web应用有且只有一个ServletContext对象
ServletContext的获取
1、request.getServletContext();
2\this.getServletContext();

5.1 获取全局的初始化参数

在web.xml中配置

name
zs
通过getInitParameter(name)获取对应的值

5.2 它是一个域对象

1、setAttribute(String,Object):向域中存储键值对
2、getAttribute(String):通过键获取值
3、removeAttribute(String):通过键删除键值对

只有在服务器关闭或者remove了才会释放ServletContext中的苏剧域对象

5.3 获取项目中任何资源的绝对路径

方法:getRealPath(相对路径)
1、WebContent下的资源

context.getRealPath("/img/a.txt");
context.getRealPath("/WEB-INF/b.txt")
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
Servlet 是 JavaEE 规范的一部分,是处理 Web 请求的组件。Servlet 运行在服务器端,能够接收客户端发来的请求,并给客户端响应结果。下面我们来看看 Servlet 的基本概念和使用方法。 ## 一、Servlet 的基本概念 ### 1.1 Servlet 的生命周期 Servlet 的生命周期包含以下三个阶段: - 初始化阶段(init):当 Servlet 实例化后,Web 容器会调用其 init() 方法进行初始化操作。在此阶段,Servlet 可以执行一些初始化操作,例如读取配置信息、建立数据库连接等。 - 请求处理阶段(service):当客户端发来请求时,Web 容器会创建一个线程调用 Servlet 的 service() 方法处理请求。在此阶段,Servlet 可以获取请求参数、处理请求并生成响应数据。 - 销毁阶段(destroy):当 Web 应用停止或 Servlet 被卸载时,Web 容器会调用 Servlet 的 destroy() 方法进行清理工作。在此阶段,Servlet 可以释放资源、关闭数据库连接等。 ### 1.2 Servlet 的配置 在使用 Servlet 时,需要在 web.xml 文件进行配置。以下是一个 Servlet 的基本配置: ```xml <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>com.example.MyServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MyServlet</servlet-name> <url-pattern>/myservlet</url-pattern> </servlet-mapping> ``` 其servlet-name 表示 Servlet 的名称,servlet-class 表示 Servlet 的类名,url-pattern 表示请求的 URL 匹配规则。 ## 二、Servlet 的使用方法 ### 2.1 编写 Servlet 编写 Servlet 有两种方法:一种是继承 HttpServlet 类,另一种是实现 Servlet 接口。这里以继承 HttpServlet 类为例: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 GET 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 处理 POST 请求 PrintWriter out = resp.getWriter(); out.println("Hello, world!"); } } ``` 在 Servlet ,doGet() 方法用于处理 GET 请求,doPost() 方法用于处理 POST 请求。通过调用 HttpServletResponse 对象的 getWriter() 方法可以向客户端返回响应数据。 ### 2.2 部署 Servlet 将编写好的 Servlet 部署到 Web 容器,有两种方法:一种是将 Servlet 类打成 war 包放到 Web 容器的 webapps 目录下,另一种是通过 Eclipse 等开发工具将 Servlet 部署到 Web 容器。部署完成后,可以通过访问 Servlet 的 URL 来测试 Servlet 是否正常工作。 ## 三、总结 本文介绍了 Servlet 的基本概念和使用方法。Servlet 是 Java Web 开发非常重要的组件,掌握 Servlet 的使用方法对于 Java Web 开发人员来说是必不可少的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值