Servlet

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、Servlet

1、 B/S架构

在这里插入图片描述

2、web服务器

在这里插入图片描述

3、安装注意事项

在这里插入图片描述

4、war包

在这里插入图片描述

5、热部署、开发版、开发版

热部署就是idea不会这边改变代码那边给i你放到tomcate上解压部署,而是等你确定好了再去打包成war包部署到tomcate上

6、http

在这里插入图片描述

7、请求报文

在这里插入图片描述
响应
在这里插入图片描述

8、状态码

在这里插入图片描述

9、servlet

tomcate处理HTTP解析好之后servlet类接受,作出回应,tomcate再对回应处理解析成http协议传给客户端

9.1 Httpservlet

创建servlet的两种方式,一种是最基础的实现GenaricServlet 简化servlet的实现方式
另外一种就是servlet继承Httpservlet,Httpservlet根据请求方式的不同调用不同的方法,处理请求

9.2 get和post请求

get是把数据放在请求头也就是request中能获得
post是把数据封装成jason,通过@requestBody获取
在这里插入图片描述
post请求更安全,因为这里不出现请求参数
在这里插入图片描述

9.3 HttpServletRequest HttpServletResponse

传来的数据在HttpServletRequest中 主要方法有getParameter()

9.3.1HttpServletResponse 介绍

1)resp在请求发起后进入容器创建的,然后再进入方法
2)客户端的每一个请求都有唯一的一个response(所以哪个请求要的响应可以一一对应上
++++++++++

3)HttpServletRequest接口是继承自ServletRequest接口的。增加了和HTTP相关的一些方法,所以只有HttpServletRequest可以调用getsession方法。

1、响应的数据在HttpServletResponse类中,Web服务器收到客户端的http请求,会针对每一次请求分别创建一个用于**代表请求**的 request 对象和**代表响应**的 response 对象。
​
2、request 和 response 对象代表请求和响应:
获取客户端数据,需要通过 request 对象;
**向客户端输出数据,需要通过 response 对象**

3、**Servlet 容器会针对每次请求创建一个 response 对象**,并把它作为参数传递给 Servlet 的 service 方法。Servlet 处理请求后,会将响应信息封装到 response 对象中,并由容器解析后返回给客户端。

9.3.2HttpServletResponse输出流

由于在 HTTP 响应消息中,大量的数据都是通过响应消息体传递的。因此 ServletResponse 遵循以 I/O 流传递大量数据的设计理念,在发送响应消息体时,定义了两个与输出流相关的方法。

返回值类型 方法 描述
ServletOutputStream getOutputStream() 获取输出流对象
PrintWriter getWriter 获取输出流对象
输出流对象调用write()输出

注意:getOutputStream() 和 getWriter() 方法互相排斥,不可同时使用,否则会发生 IllegalStateException 异常。

在这里插入图片描述

9.3.1怎样把数据响应给客户端

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

9.3.2解决中文乱码问题

加在过滤器中
response.setCharacterEncoding(“utf-8”);
response.setHeader(“Content-Type”, “text/html;charset=utf-8”);
在这里插入图片描述
注意,这个要写在getwrite之前

9.3.3 request实现转发跳转

使用forward跳转时,是在服务器内部跳转,地址栏不发生变化,属于同一次请求
forward表示一次请求,是在服务器内部跳转,可以共享同一次request作用域中的数据。

request作用域:拥有存储数据的空间,作用范围是一次请求有效(一次请求可以经过多次转发)
可以将数据存入request后,在一次请求过程中的任何位置进行获取
可以传递任何数据(基本数据类型,对象,数组,集合等)
存数据:request.setAttribute(key,value);
以键值对形式存储在request作用域中,key为String类型,value为Object类型
取数据:request.getAttribute(key);
通过String类型的key访问Object类型的value 

在这里插入图片描述

9.3.4重定向

在这里插入图片描述
在这里插入图片描述

9.4 servelt生命周期

在这里插入图片描述
在这里插入图片描述

9.4.1 servlte线程问题

在这里插入图片描述
在这里插入图片描述

10、状态管理器

在这里插入图片描述

10.1 cookie 和 session

10.1.1 cookie

在这里插入图片描述
cookie:
浏览器发出请求,servlet这边创建一个cookie保存信息
返回response过程中将cookie带着给浏览器 ,再次请求的时候浏览器就带着这个cookie数据在请求头中,服务器根据这个判断是不是之前请求过

在这里插入图片描述

10.1.2 session

同一个浏览器多次请求属于一次会话(session)
在这里插入图片描述
原理
在这里插入图片描述
作用
在这里插入图片描述
获取session
session在request中
在这里插入图片描述
浏览器首次发送请求服务器端就会创建一个session
且获得此次会话的唯一sessionId

服务器怎么把sessionId传给浏览器cookie保存的呢
session借助cookie发送给客户端

session保存数据
在这里插入图片描述
在这里插入图片描述
session生命周期

在这里插入图片描述

11、servletContext

在这里插入图片描述

11.1 怎么获取servletContext对象

session.getServletContext()

在这里插入图片描述

11.2servletContext作用

11.2.1 获取项目真实路径

System.out.println(session.getServletContext().getRealPath(“/”));
在这里插入图片描述

11.2.2获取项目名称

在这里插入图片描述

11.2.3全局容器

在这里插入图片描述
在这里插入图片描述

作用域总结

在这里插入图片描述

12、过滤器

客户端与目标资源之间过滤

12.1 为什么用过滤器

在这里插入图片描述

12.2 过滤器作用

请求经过过滤器,拦截也经过过滤器在这里插入图片描述

12.3 如何编写过滤器

在这里插入图片描述

12.3.1编写过程

在这里插入图片描述
在这里插入图片描述

package com.example.demofx.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName="MyFilter", urlPatterns="/hello")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

        System.out.println("过滤器生效了");
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("拦截结束");
    }

    @Override
    public void destroy() {

    }
}

    @RequestMapping("/hello")
    public String login(HttpServletRequest request){
        System.out.println("请求经过过滤器后转发到我这了");

        return "登陆成功";

    }

在这里插入图片描述

12.3.2过滤器的配置

在这里插入图片描述

12.4过滤器的拦截路径

在这里插入图片描述

12.4.1拦截优先顺序

注解配置情况下按照字母顺序

12.5过滤器的应用

12.5.1统一在这里插入图片描述

乱码处理
在这里插入图片描述

12.5.2 权限验证

1)注意事项
要先转型才能获得session, HttpServletRequest和dofilter的参数servletRequest可不一样,只有HttpServletRequest才能获得session
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值