JavaWeb基础-------零基础复习

1、基础概念

web资源放在服务器上的一切文件.称之为web资源.

静态web资源:内容是一成不变的.

动态web资源:内容有可能在不同的时间或者不同的人访问的时候会发生变化

静态web技术:例如 html css js ..

动态web技术:例如 servlet jsp ..

C/S结构:客户端和服务器端

B/S结构:浏览器和服务器端

常见的web服务器

(1)weblogic:所属于oracle,大型的收费的支持javaEE所有规范的web服务器(servlet和jsp)

(2)websphere:所属于IBM,大型的收费的支持javaEE所有规范的web服务器(servlet和jsp)

(3)tomcat:属apache

http协议:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法

请求行

请求信息的第一行  请求的方式--> 请求的资源--> 协议/版本

请求头:

Accept: text/html,image/*    --支持数据类型   mime类型

Accept-Charset: ISO-8859-1    --字符集

Accept-Encoding: gzip        --支持压缩

Accept-Language:zh-cn         --语言环境

Host: localhost        --访问主机

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT      --缓存文件的最后修改时间

Referer: http://www.test.com/index.jsp     --来自哪个页面、防盗链

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)   浏览器内核

Cookie:会话技术

Connection: close/Keep-Alive       --链接状态

 

Header解释示例
Accept指定客户端能够接收的内容类型Accept: text/plain, text/html,application/json
Accept-Charset浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5
Accept-Encoding指定浏览器可以支持的web服务器返回内容压缩编码类型。Accept-Encoding: compress, gzip
Accept-Language浏览器可接受的语言Accept-Language: en,zh
Accept-Ranges可以请求网页实体的一个或者多个子范围字段Accept-Ranges: bytes
AuthorizationHTTP授权的授权证书Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control指定请求和响应遵循的缓存机制Cache-Control: no-cache
Connection表示是否需要持久连接。(HTTP 1.1默认进行持久连接)Connection: close
CookieHTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。Cookie: $Version=1; Skin=new;
Content-Length请求的内容长度Content-Length: 348
Content-Type请求的与实体对应的MIME信息Content-Type: application/x-www-form-urlencoded
Date请求发送的日期和时间Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect请求的特定的服务器行为Expect: 100-continue
From发出请求的用户的EmailFrom: user@email.com
Host指定请求的服务器的域名和端口号Host: www.zcmhi.com
If-Match只有请求内容与实体相匹配才有效If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为EtagIf-Range: “737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since只在实体在指定时间之后未被修改才请求成功If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards限制信息通过代理和网关传送的时间Max-Forwards: 10
Pragma用来包含实现特定的指令Pragma: no-cache
Proxy-Authorization连接到代理的授权证书Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range只请求实体的一部分,指定范围Range: bytes=500-999
Referer先前网页的地址,当前请求网页紧随其后,即来路Referer: http://www.zcmhi.com/archives...
TE客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息TE: trailers,deflate;q=0.5
Upgrade向服务器指定某种传输协议以便服务器进行转换(如果支持)Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-AgentUser-Agent的内容包含发出请求的用户信息User-Agent: Mozilla/5.0 (Linux; X11)
Via通知中间网关或代理服务器地址,通信协议Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning关于消息实体的警告信息Warn: 199 Miscellaneous warning

请求体:和请求头之间有一个空行,存放的data数据。

响应头:

Location: http://www.ldd.com/index.jsp     --跳转方向

Server:apache tomcat            --服务器型号

Content-Encoding: gzip             --数据压缩

Content-Length: 80             --数据长度

Content-Type: text/html; charset=utf-8       --数据类型

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT    --最后修改时间

Refresh: 1;url=http://www.ldd.com        --定时刷新

Content-Language: zh-cn         --语言环境

Content-Disposition: attachment; filename=aaa.zip    --下载

Set-Cookie:SS=Q0=5Lb_nQ; path=/search

Cache-Control: no-cache              --缓存

Pragma: no-cache                   --缓存

Connection:Keep-Alive               --连接

Set-Cookie Location Content-Type Refresh Content-Disposition Last-Modified

响应体:和响应头之间有一个空行,浏览器解析的内容

2、Servlet

一个实现了servlet接口的普通java类,在于交互式地浏览和修改数据,接受请求,处理请求,生成动态的web内容。

实现servlet的两种方式

(1)原生实现        实现servlet接口  并且配置web.xml

处理业务的方法是:service() 方法。

(2)继承HttpServlet类

原理:HttpServlet extends GenericServlet  ,GenericServlet implements servlet,

HttpServlet间接的实现了servlet接口,并且HttpServlet重写了service方法,并且本地实现了

doGet、doPost方法。在service方法中判断当前请求是Get还是Post,然后调用相应的doGet或doPost.

然后咱们自定义的类继承了extends HttpServlet,重写了doGet doPost ,当然也继承了service方法,在请求过来的时候

先调用service方法,然后在调用相应的doGet 或者doPost。

Servlet的生命周期:

默认第一次请求来的时候,服务器创建servlet的对象,且调用init方法实现初始化操作,且调用一次service方法,每当请求来的时候,服务器获取一个线程,调用service方法,完成具体的业务逻辑(编写的代码)当servlet被移除的时候或者服务器正常关闭的时候,服务器调用destroy方法实现销毁操作。

补充:servlet是一个单实例,多线程的。每次请求的时候都会创建一个新的线程来对应一个service方法。

注意:因为在第一次请的时候,才会创建servlet。但是可以在web.xml配置启动的时候就创建servlet。

url-pattern的配置:

     完全匹配:  以"/"开始  例如 :    /hello

     目录匹配:  以"/"开始 以"*"结束  例如:     /*

    后缀名匹配: 以"*"开始  例如: *.jsp  *.action  *.do

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

注意:一个路径对应一个servlet,一个serlvet对应多个路径

3、servletContext(上下文)

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。

ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象或者直接getServletContext()获取对象。

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。
 

作用:获取全局初始化参数,资源共享(servlet通信),获取资源文件

创建:服务器启动的时候会为每个项目创建一个servletContext上下文对象,servleContext是项目的一个引用。

销毁:在服务器关闭或者移除项目的时候servletContext销毁。

常用方法

InputStream getResourceAsStream(String filepath)  //以流的方式返回一个文件

String getMimeType(String 文件名)  //获取一个文件的mime类型 text/html image/gif

setAttribute(String name,Object value) //设置

getAttribute(String name) //获取指定的属性值

removeAttribute(String name)  //移除指定的属性

4、response(响应)

响应行状态码分类:

302:重定向 配置响应头location使用

304:读缓存

常用方法

setHeader(String name,String value)  //设置一个字符串形式的响应头

setIntHeader(String name,int value) //设置一个整型的响应头

setDateHeader(String name,long value)  //设置一个时间的响应头

addHeader(String name,String value)  //追加一个字符串形式的响应头 若无设置则设置,若已设置则追加

addIntHeader(String name,int value)  //追加一个整型的响应头

addDateHeader(String name,long value) //追加一个时间的响应头

常见的响应头:

location:重定向:response.sendRedirect("/hello");

refresh:定时刷新:<meta http-equiv="refresh" content="3;url=/hello">

content-type:设置文件的mime类型; 设置响应流的编码,通知浏览器用什么编码打开

响应体:

常用方法:

PrintWriter getWriter()   //字符流

getOutputStream()   //字节流

响应中文乱码:

response.setContentType("文件的mime类型;charset=utf-8");

response.setHeader("content-type","文件的mime类型;charset=utf-8");

文件下载:

两个头一个流: 

设置文件的mime类型  response.setContentType(Stirng 文件的mime类型)

设置文件下载头  response.setHeader("content-disposition","attachment;filename="+文件名称)

输出流  response.getOutputStream()

注意事项:

火狐浏览器要求对中文编码成base64格式

其他浏览器要求对中文编码成utf格式

 

 

5、request

请求行常用方法:

String getMethod():获取请求的方式

String getContextPath():获取项目动态路径  /servletstudy

String getRemoteAddr() 获取请求者的ip

String getRequestURI():获取的是请求的资源(不带get请求的参数)  

String getQueryString():获取的get请求参数 username=sidadiao&password=123

String getProtocol():获取协议和版本

请求头常用方法:

String getHeader(String name):获取的一个请求头(返回值为string)

int getIntHeader(String name)

long getDataHeader(Stirng name)

Enumeration getHeaders(String name)

请求体(操作请求参数get或者post):

String getParameter(String name):获取的单值的请求参数

String[] getParameterValues(String name):获取的指定请求参数(多值)

 Map<String,String[]> getParameterMap():获取的所有的参数名称和值

请求的中文乱码:浏览器向服务器发送的数据存在中文乱码

 get/post通用     new String(乱码.getBytes("iso8859-1"), "utf-8");

针对post请求: request.setCharacterEncoding("utf-8")

转发和重定向:

转发:request.getRequestDispatcher("/内部路径").forward(request,response);

重定向:resp.sendRedirect(“/外部路径”);

重定向发送两次请求 请求转发发送一次请求
重定向地址栏变化 请求转发地址栏不变    
重定向是响应发起的 请求转发是请求发起
重定向路径不带协议和主机的绝对路径 请求转发是内部路径
重定向不能使用request的属性操作 请求转发可以使用request属性操作
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值