Servlet运行原理,乱码问题
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的关系由服务器保障的