servlet-1

一    http协议

 client server之间的传输数据的协议 

报文 首行 头 空行 体

二   servlet

用户请求 静态资源不能处理 要编程语言来处理 java类来处理

 服务器  也可以成为 servlet容器

server applet 服务端小程序 servlet

->作用 

  接受用户请求

  处理用户请求 java类

->编写 servlet流程 

  服务员的功能

1 创建以一个java类 实现servlet接口

2 在service方法中处理请求

3 web.xml中配置容器 servlet-class  servlet-name servlet-mapping  url-pattern

servlet 生命周期

创建到销毁的过程

---生命周期方法 自动被服务器调用的方法

  构造器 第一次访问 调用 创建 servlet

  init  初始化

  service  每次请求调用此方法 

  destroy  服务器销毁前调用

--相关接口 servletconfig

对应在 web.xml中的 配置信息

init时候 出入此对象

getservletname

getinitparameter(name)   <servlet></servlet>

获取 servletcontext对象

--servletcontext

一个项目 唯一一个servletcontext对象 项目启动时候创建 项目卸载时候 销毁

当前的web应用 web.xml

获取 getservletcontext 有很多方式来获取

--功能 getcontextpath 获取上下文路径 /项目名

获取全局的初始化参数

获取文件的真是路径 物理路径 getrealpath

整个项目的共享数据

HttpServlet

  三种方式

  实现servlet接口

  继承genericservlet

  继承httpservlet

--创建一个servlet文件

extends httpservlet

调用init方法 genericservlet.init()

调用service方法处理 重载的

service调用doget或者 dopost方法

HttpServletRequest:

请求对象 包装后的请求报文

在接受请求时候 创建一个request对象 并有相关的方法

获取用户的参数 

 request.getparameter(‘name’)

name是表单里面的属性值

value 表单的value属性值

请求头 value = request.getHeader(‘user-agent’)

转发 dispatcher = request.getrequestdispatcher(‘转发资源的地址’)

发起转发 dispatcher.forward(request,response)

[8]乱码.
编码格式和解码格式不一致会造成乱码
浏览器发送数据(通过请求报文,参数编码格由页面的编码决定UIF-8)到服务器(服务器默认的解码格式是IS08859-1)
服务器响应数据(通过响应报文,编码由页面文件的编码格式决定)到浏览器(解码格式由页面的编码格式决定,如果页面没有设置编码,使用系统默认的)


》get请求乱码解决 了当前工作空间中的所有的get请求乱码
在服务器配置文件server. xm1中65行标签内设置 属性: URIEncoding= "UTF-8* (告诉服务器在读取请求首行时使用的解码格式)


》post请求乱码解决 了当前servletpost请求乱码
post请求参数在请求体中携带
    在doGet中第一行(在request对象使用之前) : request. setCharacterEncoding("UTF-8");


》响应乱码解决当前servlet响应乱码
        response. setHeader (' Content-Type' ,”text/html;charset=UIF-8");
        写在reponse使用之前:response. setContentType( text/html; charset=UTF-8 ");
[8]相对路径和绝对路径
相对路径:不推荐使用
相对当前资源所在的路径
转发时会造成相对路径失效


绝对路径:
以/开始的路径就是绝对路径
  浏览器解析使用的路径: [标签,重定向地址]默认在绝对路径前添加http: //主机。地址:端口号
浏览器解析的绝对路径需要自己手动添加项目名
  服务器解析使用的路径: [转发, 配置文件中]默认添加http://主 机地址:端口号/项目名
不需要手动添加项目名|

[9]base标签
base+相对路径可以替代绝对路径
让相对路径可以当做绝对路径使用,默认会和base标签的地址拼接


base标签只会对当前页面的相对路径起作用
<base href=' http: //localhost:8080/项目名/* /><a href=* a/1. html' >1. html</a>

饭店的架构:
    顾客-----服务员---厨师---采购--菜市场
服务员:
  负责直接和顾客打交道,将用户请求收集,交给厨师,调用厨师的方法
  厨师完成需求之后将结果交给服务员,服务员将结果交给顾客
厨师:
  根据服务器传递的参数,让采购去购买原材料
  再对原材料进行加工,加工完成return
    好处:解耦,分工明确,出问题比较好定位
    坏处:成本高,效率低
采购:
    根据厨师的需求到菜市场购买原材料然后交给厨师

原文地址:https://www.cnblogs.com/liubosong/p/11990179.html