java 请求行 消息头_JavaWeb基础了解---web、tomacat、http、

静态web资源开发技术:Html

常用动态web资源开发技术:JSP/Servlet等

2、WEB应用程序

指供浏览器访问的程序,通常也简称为web应用。例如有a.html

、b.html…..多个web资源,这多个web资源用于对外提供服务,此时应把这多个web资源放在一个目录中,以组成一个web应用(或web应用程序)

一个web应用由多个静态web资源和动态web资源组成,如:html、css、js文件,Jsp文件、java程序、支持jar包、配置文件等等。

3、静态web和动态web

(1)静态web的后缀一般为:html,htm

缺点:

1)静态web无法动态更新,内容始终不变,但可以使用javascriipt进行动态效果显示,但这      并不代表就是动态网页,只是有动态的效果显示而已;

2)无法连接数据库,不能和用户进行交互

(2)动态web后缀可以是jsp,asp,php等

动态不是指页面会动,主要的特性的是:“WEB的页面展示效果因时因人而变”,而且动态WEB具有交互性,WEB的页面的内容可以动态更新。

(3)如果WEB Server Plugin发现客户端请求的是静态资源(*.htm或者是*.htm),则将请求直接转交给WEB服务器,之后WEB服务器从文件系统中取出内容,发送回客户端浏览器进行解析执行。

如果WEB Server Plugin发现客户端请求的是动态资源(*.jsp、*.asp/*.aspx、*.php),则先将请求转交给WEB Container(WEB容器),在WEB Container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面的展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

二、web服务器

1、webLogic,IIS,WebSphere,Tomact----本文主要使用

双击 bin 目录下的 startup.bat 文件启动Tomcat服务器

2、启动问题

1)JAVA_HOME环境变量设置问题

要想双击bin目录下的startup.bat文件启动Tomcat服务器,首先要做的就是在windows中设置JAVA_HOME环境变量,因为Tomcat服务器的启动需要用到这个JAVA_HOME环境变量,如果windows中不存在JAVA_HOME环境变量,则Tomcat服务器是无法启动的。

2)在网页中输入http://localhost:8080/ 看到apache首页则表示成功

三、HTTP协议

1、协议版本---HTTP1.0,HTTP1.1

在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。

在HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

2、请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容

1)请求行

GET /mail/1.html?name=abc&password=xyz HTTP/1.1

请求行中的GET称之为请求方式,请求方式有:POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT,常用的有:

GET、 POST

GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K。

如果请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制。

2)HTTP请求中的常用消息头

accept:浏览器通过这个头告诉服务器,它所支持的数据类型

Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集

Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式

Accept-Language:浏览器通过这个头告诉服务器,它的语言环境

Host:浏览器通过这个头告诉服务器,想访问哪台主机

If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间

Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的  防盗链

Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接

例如:

73560315_1.gif1 Accept: application/x-ms-application, image/jpeg, application/xaml+xml,image/gif, image/pjpeg,2 application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

3 Referer: http://localhost:8080/JavaWebDemoProject/Web/2.jsp

4 Accept-Language: zh-CN

5 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)

6 Accept-Encoding: gzip, deflate

7 Host: localhost:8080

8 Connection: Keep-Alive3、响应

一个HTTP响应代表服务器向客户端回送的数据,它包括:

一个状态行、若干消息头、以及实体内容 。

1 HTTP/1.1 200 OK

2 Server: Apache-Coyote/1.1

3 Content-Type: text/html;charset=ISO-8859-1

4 Content-Length: 105

5 Date: Tue, 27 May 2014 16:23:28 GMT1)状态行

状态行格式: HTTP版本号 状态码 原因叙述

状态码

100~199:成功接收请求,要求客户端继续提交下一次请求才能完成整个过程;

200~299:收到请求,请求已处理

300~399:收到请求,请求未处理为完成请求,请求需要客户端进一步细化

400~499:客户端请求出现错误--404

500~599:服务器端出现错误--500

四、Servlet

1、Servlet和普通java的区别

Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。

针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

如果在元素中配置了一个元素,那么WEB应用程序在启动时,就会装载并创建Servlet的实例对象、以及调用Servlet实例对象的init()方法。

举例:

invoker

org.apache.catalina.servlets.InvokerServlet

1

用途:为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据。

2、Servlet的线程安全问题

1)加了Synchronize后可以解决线程安全问题;

24 synchronized (this) {//在java中,每一个对象都有一把锁,这里的this指的就 是Servlet对象

25 i++;

26 try {

27 Thread.sleep(1000*4);

28 } catch (InterruptedException e) {

29 e.printStackTrace();

30 }

31 response.getWriter().write(i+"");

32 }

这种做法虽然解决了线程安全问题,但是编写Servlet却万万不能用这种方式处理线程安全问题,假如有9999个人同时访问这个Servlet,那么这9999个人必须按先后顺序排队轮流访问。

2)让Servlet实现了SingleThreadModel接口,只要在Servlet类的定义中增加实现SingleThreadModel接口的声明即可。

对于实现了SingleThreadModel接口的Servlet,Servlet引擎仍然支持对该Servlet的多线程并发访问,其采用的方式是产生多个Servlet实例对象,并发的每个线程分别调用一个独立的Servlet实例对象。

实现SingleThreadModel接口并不能真正解决Servlet的线程安全问题,因为Servlet引擎会创建多个Servlet实例对象,而真正意义上解决多线程安全问题是指一个Servlet实例对象被多个线程同时调用的问题。事实上,在Servlet API 2.4中,已经将SingleThreadModel标记为Deprecated(过时的)。

3、Servlet配置

2 ServletConfigDemo1

3 gacl.servlet.study.ServletConfigDemo1

4

5

6 name

7 gacl

8

9

10 password

11 123

12

13

14 charset

15 UTF-8

16

17

详情见http://www.cnblogs.com/xdp-gacl/p/3729033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值