Servlet运行原理,乱码问题

来源:互联网 发布:八字预测软件下载 编辑:程序博客网 时间:2024/06/05 03:43

Servlet运行原理

这里写图片描述

步骤

  • 1 连接 浏览器和服务器建立连接
  • 2 将数据打包成一个大字符串(通俗)
  • 3 通过通信组件发送到服务器
  • 4 服务器按照默认的ISO-8859-1进行拆包(在服务端未指定字符集)
  • 5 创建 XXXRequest,XXXResponse 接口的实现类对象。
  • 6 将拆包的数据封装到 request,response对象中 (装载)
  • 7 服务器创建HttpServlet的实现类的对象.
  • 8 系统调用servlet(req,res),将req,res封装好的数据传入
  • 9
  • 10 服务器打包数据
  • 11 发送数据
  • 12 拆包
  • 13 关闭连接

请求方式

  • 定义

    浏览器向服务器发送业务数据的方式

  • GET和POST的区别(面试题)

    GET
    采用路径传参
    参数在传递过程中可见,所以隐私性差
    路径的大小有限制,所以只能传少量参数

POST
采用实体内容传参
参数在传递过程中不可见,所以隐私性好
实体内容专门用于传参,大小不受限制
若在form上加method=”post”则为POST请求

乱码问题

这里写图片描述

路径问题

  • 所谓的访问路径都是针对部署代码而言的.
    静态资源(HTML/图片等): 就是它在tomcat内存放的位置,如/EmpManager/add_emp.html
    动态资源(Servlet): 就是在web.xml中声明的网名,如/EmpManager/addEmp
  • 项目部署的过程
    这里写图片描述

如何配置Servlet访问路径

  • 1)精确匹配
  • 如/hello,只有/hello这一个路径可以访问HelloServlet,HelloServlet只能处理这一个请求
  • 2 通配符匹配
  • 如/*
    所有的路径都可以访问HelloServlet
    HelloServlet能处理所有请求
  • 3 后缀匹配
  • 如*.abc
    所有以abc为后缀的路径都可以访问HelloServlet
    HelloServlet可以处理相似的一批请求

web项目相关的概念和规则

这里写图片描述

HttpServlet

  • 1) 图例

蓝色框:接口
红色框:类
绿色字:public
黄色字:protected

  • 2)要点

RequestFacade是服务器提供的实现类
服务器实例化并调用的是web.xml中我们配置的Servlet
服务器调用的是子Servlet中的公有的service()
无论子Servlet是否重写此方法,它都有此方法(继承)
HttpServlet中的方法相互调用,重写哪一个都能解决问题
doGet()和doPost()内部直接抛出异常,强制开发者重写

  • 3) Servlet生命周期

    默认情况下,用户第一次访问Servlet时,tomcat会实例化它
    可以修改为,启动服务器时,就让服务器自动实例化Servlet
    第1,2,4步只执行一次,所以每个类型的Servlet都是单(个实)例
    这里写图片描述

  • 4) ServletConfig和ServletContext

它们都能加载web.xml中的参数,给Servlet使用
config和Servlet是一对一关系,config中的参数只能给某一个Servlet使用
context和Servlet是一对多关系,context中的参数可以给所有Servlet使用它们和Servlet的关系由服务器保障的

这里写图片描述

原创粉丝点击