笔记总结四-Servlet

Servlet

概述

Servlet是由sun公司提供的一门动态Web资源开发技术

动态Web资源可以根据访问者的不同显示不同的数据,展示不同的页面,而静态Web资源则表示无论是谁去访问,得到的页面与数据都是相同的

Servlet本质是一个Java程序,但是它是无法独立运行的,需要将Servlet程序放在服务器中,由服务器调用才可执行

运行在服务器中的Servlet程序的作用是:对服务器接收的请求进行处理

配置

自己所写的Servlet需要实现Servlet接口或者是继承其实现类,一般来说我们都会继承HttpServlet

在项目的WebContent/WEB-INF下的web.xml文件中需要配置Servlet的映射

<servlet>	
   <servlet-name>HelloWorld</servlet-name>
   <servlet-class>com.tedu.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>HelloWorld</servlet-name>
   <url-pattern>/hello</url-pattern>
</servlet-mapping>

浏览器可以通过访问<url-pattern> 中的地址hello找到项目,通过相同的<servlet-name>HelloWorld找到对应的<servlet-class>Serlvet类的全类名com.tedu.HelloWorld,最后通过反射来获取Servlet类的实例

Servlet的调用过程

  1. 浏览器向服务器发送请求,服务器从中获取Host头,以此来判断浏览器访问的是哪一个虚拟主机
  2. 根据请求行中的资源路径获取浏览器访问的哪一个Web应用中的哪一个资源
  3. 根据获取的资源路径到web.xml中进行匹配,找到映射的真实类路径
  4. 调用Service方法根据具体的请求方式将请求交给doGet/doPost方法处理
  5. request中获取具体的业务需求,然后将处理的结果封装进response响应对象中
  6. 按照Http协议的规定组织成响应消息发送给浏览器

Request与Response

Web服务器收到客户端的http请求时会针对每一个请求创建一个用于代表请求的request对象与代表响应的response对象

Request

request对象可以获取浏览器发送过来的参数

获取请求行

  • getMethod() 获取请求方式如GET/POST
  • getRequestURI() 获取去请求资源URI
  • getProtocol() 获取协议名称与版本
  • getContextPath() 获取项目名称

获取请求参数

  • getParameter(String) 通过请求参数的名字获取对应的参数值,只能获取一个,不存在则返回null
  • getParameterValues(String) 通过请求参数名字获取所有对应参数值,不存在则返回null

setCharacterEncoding("utf-8") 设置客户端与服务器之间统一编码utf-8

Response

可以用来生成Http响应信息发送给用户

响应头

  • setStatus() 设置响应状态码
  • setError() 设置错误响应状态码
  • setHeader() 设置响应头中各种参数

获取流

  • getOutPutStream() 获取字节输出流
  • getWriter() 获取字符输出流

转发与重定向

转发:request.getRequestDispatcher(地址).forward(request,response)

  1. 一次请求一次响应
  2. 地址栏不会发生改变
  3. 只能在同一个Web应用间进行跳转
  4. 可以通过request域来进行数据的传递
    1. setAttribute(String,Object) 给request绑定数据,是一个键值对
    2. getAttribute(String) 通过Key来获取Value(绑定的数据)

重定向response.sendRedirect(地址)

  1. 两次请求两次响应
  2. 地址栏会发生改变
  3. 可以跨项目进行跳转
  4. 不可以通过request进行数据的传递
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值