JavaWeb总复习——servlet

http:要求:掌握一些头信息

  1. 超文本传输协议:
            规定数据的格式规定数据的格式规定数据的格式规定数据的格式

  2. 浏览器往服务器发送 ---- 请求

  3. 服务器往浏览器回写 ---- 响应

请求:(request)

  • 组成部分:

               请求行 请求头 请求体

  • 请求行:请求信息的第一行

     格式:请求方式	访问的资源 协议/版本
     例如:GET /day0801/1.html HTTP/1.1
     请求方式:get和post
     	get会把参数放在url的后面 post不会
     	get参数大小有限制,post请求却没有限制
     	get请求没有请求体;post请求有请求体 请求参数放在请求体中
    
  • 请求头:请求信息的第二行到空行结束

     格式:key/value (value可以是多个值)
    
常见的请求头:
常见请求头含义
Accept: text/html,image/bmp所支持的数据类型
Accept-Charset: ISO-8859-1字符集
Accept-Encoding: gzip支持压缩
Accept-Language:zh-cn语言环境
Host: www.itcast.cn:80访问主机
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT缓存文件的最后修改时间
Referer: http://www.itcast.com/index.jsp来自哪个页面、防盗链
Connection:Keep-Alive链接状态

掌握的头信息:

Referer User-Agent Cookie If-Modified-Since

  • 请求体:空行以下的内容

     只有post才有请求体  get请求参数 http://xxxx?username=tom&password=123
     格式:username=tom&password=123
    

响应:(response)

	组成部分:
		响应行 响应头 响应体
	响应行:响应信息的第一行
		格式:协议/版本 状态码 状态码说明
		例如:HTTP/1.1 200 OK
		状态码:
			200 正常响应成功
			302 重定向
			304 读缓存
			404 用户操作资源不存在
			500 服务器内部异常
	响应头:从响应信息的第二行到空行结束
		格式:key/value(value可以是多个值)
		常见的头
			Location: http://www.it315.org/index.jsp 	--跳转方向 和302一起使用的
			Server:apache tomcat			--服务器型号
			Content-Encoding: gzip 			--数据压缩
			Content-Length: 80 			--数据长度
			Content-Language: zh-cn 		--语言环境
			Content-Type: text/html; charset=GB2312 		--数据类型
			Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT	--最后修改时间
			Refresh: 1;url=http://www.it315.org		--定时刷新
			Content-Disposition: attachment; filename=aaa.zip	--下载
			Set-Cookie:SS=Q0=5Lb_nQ; path=/search
			Expires: -1					--缓存
			Cache-Control: no-cache  			--缓存
			Pragma: no-cache   				--缓存
			Connection: Keep-Alive   			--连接
		掌握的头信息
			Content-Type Location  Last-Modified Refresh Content-Disposition Set-Cookie
	响应体:空行以下的内容
		页面上展示的内容

servlet:

	动态的web开发技术,本质就是一个类,运行在服务器端的一个java小程序
处理业务逻辑,生成动态web内容
编写一个servlet步骤:
  1. 编写一个类

    a.继承HttpServlet
    b.重写doGet或者doPost方法
    
  2. 编写配置文件(web-inf/web.xml)

    a.注册servlet
    b.绑定路径
    
  3. 访问

    http://主机:端口号/项目名/路径
    
  4. 接受参数: 格式:key=value

    Sting value=request.getParameter(“key”)
    例如: http://localhost/day09/hello?username=tom
    request.getParameter(“username”)就可以获取tom值

  5. 回写内容:

    response
    response.getWriter().print(“success”);
    处理响应数据中文乱码:
    resp.setContentType(“text/html;charset=utf-8”); //建议大家放在方法中的第一行

servlet的体系结构:(了解)

Servlet:接口
	|
GenericServlet:抽象类
	|
HttpServlet:抽象类
	|
自定义servlet
servlet常用方法:
	void init(ServletConfig config):初始化
	void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
	void destroy():销毁
	
	ServletConfig getServletConfig() :获取当前servlet的配置对象
GenericServlet常用方法:
	除了service方法没有显示,其他都实现了
	空参的Init() 若我们自己想对servlet进行初始化操作,重写这个init()方法即可
HttpServlet常用方法:
	service做了实现,把参数强转,调用了重载的service方法
		重载的service方法获取请求的方式,根据请求方式的不同调用相应doXxx()方法
	doGet和doPost方法
servlet生命周期 ★★★
void init(ServletConfig config):初始化
 * 初始化方法
 * 执行者:服务器
 * 执行次数:一次
 * 执行时机:默认第一次访问的时候
void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑
 * 服务
 * 执行者:服务器
 * 执行次数:请求一次执行一次
 * 执行时机:请求来的时候
void destroy():销毁
 * 销毁
 * 执行者:服务器
 * 执行次数:只执行一次
 * 执行时机:当servlet被移除的时候或者服务器正常关闭的时候
 
 serlvet是单实例多线程
	 默认第一次访问的时候,服务器创建servlet,并调用init实现初始化操作.并调用一次service方法
	 每当请求来的时候,服务器创建一个线程,调用service方法执行自己的业务逻辑
 	当serlvet被移除的时候服务器正常关闭的时候,服务器调用servlet的destroy方法实现销毁操作.

url-pattern的配置:★

方式1:完全匹配  必须以"/"开始 例如: /hello /a/b/c
方式2:目录匹配  必须"/"开始  以"*"结束   例如: /a/*  /*
方式3:后缀名匹配 以"*"开始 以字符结尾 例如: *.jsp  *.do  *.action

优先级:
	完全匹配>目录匹配>后缀名匹配

练习:

有如下的一些映射关系:
	Servlet1 映射到 /abc/* 
	Servlet2 映射到 /*
	Servlet3 映射到 /abc 
	Servlet4 映射到 *.do 
问题:
当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应
	Servlet引擎将调用Servlet1。
当请求URL为“/abc”时,“/*”和“/abc”都匹配,哪个servlet响应
	Servlet引擎将调用Servlet3。
当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
	Servlet引擎将调用Servlet1。
当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
	Servlet引擎将调用Servlet2.
当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
	Servlet引擎将调用Servlet2。

在servlet标签有一个子标签 load-on-startup

作用:用来修改servlet的初始化时机
取值:正整数  值越大优先级越低
当我们的配置文件里面没有指定配置的话,会查找tomcat的web.xml,
若请求我们自己的项目处理不了,tomcat的默认的servlet会帮我们处理信息

ServletContext:

上下文(全局管理者)
  1. 常用的方法:
    setAttribute(String key,Object value);//设置值
    Object getAttribute(String key);//获取值
    removeAttribute(String key);//移除值

  2. 获取全局管理者:

    getServletContext();

ServletContext:理解

上下文(全局管理者)
一个项目的引用.代表了当前项目.
当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
当项目被移除的时候或者服务器关闭的时候servletcontext销毁
作用:
	1.获取全局的初始化参数
	2.共享资源(xxxAttribute)
	3.获取文件资源
	4.其他操作
获取servletcontext:
	方式1:了解 
		getServletConfig().getServletContext()
	方式2:
		getServletContext()
常用方法:
	1.了解
		String  getInitParameter(String key):通过名称获取指定的参数值
		Enumeration getInitParameterNames() :获取所有的参数名称	
		 在根标签下有一个 context-param子标签 用来存放初始化参数
			<context-param>
				<param-name>encoding</param-name>
				<param-value>utf-8</param-value>
			</context-param>
	2.xxxAttribute
	3.
		String getRealPath(String path):获取文件部署到tomcat上的真实路径(带tomcat路径)
			getRealPath("/"):D:\javaTools\apache-tomcat-7.0.52\webapps\day09\
		InputStream getResourceAsStream(String path):以流的形式返回一个文件
	4.获取文件的mime类型  大类型/小类型
		String getMimeType(String 文件名称)

域对象:★★★

servletcontext
当成map集合
	常用方法:
		xxxAttribute()
servletcontext创建和销毁:
	当项目启动的时候,服务器为每一个web项目创建一个servletcontext对象.
	当项目被移除的时候或者服务器关闭的时候servletcontext销毁
存放:
	共享的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值