创建Dynamic Web Project工程(详细的科普文)
一.web环境搭建
1. Web服务器
(1) Web服务器主要用来接收客户端发送的请求和响应客户端请求。
(2) 作为JavaWeb程序来说,还需要有Servlet容器,容器的主要作用就是调用java程序处理用户发送的请求,并响应指定的资源,关于Servlet容器我们还需要一点一点学习。
(3) 开发JavaWeb项目Web服务器和Servlet容器是必须的,通常情况二者是合在一起的。
(4) 常见的JavaWeb服务器:
- Tomcat(Apache):当前应用最广的JavaWeb服务器;
- JBoss(Redhat红帽):支持JavaEE,应用比较广;
- GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;
- Resin(Caucho):支持JavaEE,应用越来越广;
- Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
- Websphere(IBM):要钱的!支持JavaEE,适合大型项目;
2. Tomcat
2.1 Tomcat概述
(1). Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前最新版本是8.0。
(2) Tomcat6.0 支持Servlet 2.5
(3) Tomcat7.0 支持Servlet3.0
(4) Tomcat8.0 支持Servlet 3.1
2.2 安装、启动、配置Tomcat
2.2.1 下载
(1) Tomcat官方网站:http://tomcat.apache.org/
(2) 安装版:需要安装,一般不考虑使用。一个电脑只能安装一个!卸载也比较麻烦!
(3) 解压版: 直接解压缩使用,我们使用的版本。
(4) 版本:目前Tomcat的最新版本为8.0。我们使用的是7.0版本。
2.2.2 安装
(1) 直接把Tomcat的压缩包解压到安装目录,例如:D:\tomcat-7。
(2) D:\tomcat-7,这个目录下直接包含Tomcat的bin目录,conf目录等,我们称之为Tomcat的安装目录或根目录。
2.2.3启动和停止
环境变量的配置:
① JAVA_HOME:jdk的安装目录,Tomcat依赖于JDK,所以必须指定该环境变量。
② CATALINA_HOME:tomcat的安装目录,在终端(CMD)启用时,需要配置,不必须。
③PATH:安装jdk的bin目录
④启动:在Tomcat安装目录下的bin目录,双击startup.bat
⑤停止:在Tomcat安装目录下的bin目录,双击shutdown.bat
注意: startup.bat会调用catalina.bat,而catalina.bat会调用setclasspath.bat,setclasspath.bat会使用JAVA_HOME环境变量,所以我们必须在启动Tomcat之前把JAVA_HOME配置正确。如果JAVA_HOME配置不正确,就会导致startup.bat一闪而过!
问题:如果双击startup.bat后窗口一闪而过,请查看JAVA_HOME是否配置正确。
2.2.4访问Tomcat
打开浏览器地址栏输入:http://localhost:8080
2.2.5 配置端口号
打开Tomcat安装目录下的conf/server.xml
(1) 端口:web服务器在启动时,实际上是监听了本机上的一个端口,当有客户端向该端口发送请求时,web服务器就会处理请求。但是如果不是向其所监听的端口发送请求,web服务器不会做任何响应。例如:Tomcat启动监听了80端口,而访问的地址是http://localhost:8080,将不能正常访问。
(2)80端口:80端口是http协议默认的端口号,也就是说如果在url中不指定端口号那默认会向80端口发送请求。
2.2.6 Tomcat目录结构
(1) bin:该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
(2) conf:这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:
- server.xml:配置整个服务器信息。例如修改端口号,添加虚拟主机等;下面会详细介绍这个文件;
- tomcatusers.xml:存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;
- web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!
- context.xml:对所有应用的统一配置,通常我们不会去配置它。
(3) lib:Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的jar包了,所以建议只把Tomcat需要的jar包放到这个目录下;
(4) logs:这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
(5) temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
(6) webapps:存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。
(7) work:运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。
(8) LICENSE:许可证。
(9) NOTICE:说明文件。
2.3 Eclipse配置Tomcat
配置步骤:
1. 在servers标签中,右键à New à Server
2.在出现的窗口中选中Tomcat v7.0 Server,点击下一步
3.选择tomcat安装路径,选择系统的JDK,点击Finish
4 创建好后,Servers标签下出现刚刚创建好的服务器
3.处理tomcat端口占用问题
(1)打开cmd输入命令:netstat -ano|findstr 8080
查看占用8080端口的进程
(2)输入命令:taskkill /pid 8768 /f
将占用端口号结束进程
二. 创建Web应用
1.项目hello目录介绍
(1) hello:应用目录,hello就是应用的名称;
(2) index.html:应用资源。应用下可以有多个资源,例如css、js、html、jsp等,也可以把资源放到文件夹中,例如:hello\html \index.html,这时访问URL为:http://localhost:8080/hello/html/index.html;
(3) WEB-INF:这个目录名称必须是大写,这个目录下的东西是无法通过浏览器直接访问的,也就是说放到这里的东西是安全的;
(4) web.xml:应用程序的部署描述符文件,可以在该文件中对应用进行配置,例如配置应用的首页:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
(5) classes:存放class文件的目录;
(6) lib:存放jar包的目录;
2. Eclipse创建Web应用
2.1 Eclipse创建动态Web应用
1. 右键Dynamic Web Project
2 . 配置项目信息
- 输入项目名,
- 选择配置好的tomcat,
- 选择Dynamic web module version 为 3.0
3. 点击Finish,创建好的项目会出现在左侧的列表中。
4. 在项目的WebContent目录下创建一个index.html文件
2.2 部署/移除Web项目
(1) 右键点击刚创建好的Tomcat服务器,选择Add and Remove …
(2) 选中刚创建的项目,点击add,点击Finish
2.3启动/关闭Tomcat
(1) 右键选择服务器,单击start,启动服务器
(2) 看到控制台输出:类似信息: Server startup in 161 ms,证明服务器启动成功
(3)访问 http://localhost:8080/项目名称,就可以访问你的项目
2.4 Eclipse使用Tomcat的原理
(1) 当我们使用Eclipse将项目部署到Tomcat的时,我们发现,在Tomcat下的webapps目录下并没有我们创建好的项目,但是当通过Eclipse启动服务器后,项目却真的可以访问到,这是为什么呢?
(2) 实际上,Eclipse在使用Tomcat时,并没有将项目部署到Tomcat的目录下,而是在其工作空间中,创建了一个Tomcat的镜像,Eclipse启动的Tomcat是他自己配置的镜像。
(3) Eclipse镜像所在目录
你的工作空间目录\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
(4) 在这个目录下,我们会发现一个和Tomcat安装目录几乎一模一样的目录结构。
(5) 在这里Eclipse中Tomcat镜像配置文件也是独立的,而我们所创建的项目是部署到wtpwebapps目录下的,这样做的好处是Eclipse中Tomcat和我们本机的Tomcat可以保持相互独立,不会影响彼此。
三.浏览器与服务器之间的请求与响应
1.HTTP协议简介
1.1.HTTP协议:就是指的通信双方所必须遵守的报文规则!
1.2.报文:客户端与服务端通信时传输的内容我们称之为报文。
报文格式:
①报文首部
报文首行
报文头部
② 空行
③报文主体
报文分类:
① 请求报文
get请求报文
post请求报文
② 响应报文
(1)get请求报文
GET /bookstore01/b.html?username=dfadf&pwd=dfa HTTP/1.1
//报文首行
请求方式 请求路径?参数键值对&
//报文头部【键值对格式】
Host: localhost:8080 //请求目标ip地址和端口号
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101Firefox/27.0//当前浏览器
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
//浏览器告诉服务器,浏览器可以接收什么格式的文件
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
//可以判断你是在是哪个位置
zh-cn:简体中文
en-us:美式英语
Accept-Encoding: gzip, deflate
//浏览器告诉服务器浏览器可以识别的解压方式
Referer: http://localhost:8080/bookstore01/index.html
Referer:指的是当前页面是从哪个页面跳转过来的
Connection: keep-alive
//keep-alive:表示浏览器告诉服务器这是一个长连接
get请求没有空行和报文主体,get请求是通过地址栏传递参数的!
(2)post请求报文
POST /bookstore01/b.html HTTP/1.1
//请求首行
请求方式 请求路径 请求协议/版本号
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/bookstore01/index.html
Connection: keep-alive
post请求有空行和请求体, post请求通过请求体传递请求参数!
(3)get请求和post请求的区别
①get请求通过地址栏传递参数,post请求通过请求体传递请求参数,相对安全一点!
②get请求没有空行和请求体,post请求有
③get请求传递的字符是有限制的,255个字符,而post请求通过请求体传递参数,没有大小限制
总结:通常只有在form表单中,我们使用的是post请求,而在其它地方都是get请求!
(4)几种常见的响应状态码
200:响应成功
302: 重定向
404:请求路径错误
405:请求方式有问题 以4xx开头的响应状态码,都表示是浏览器端的错误
500:服务器端的错误,表示自己写的java,jsp代码有bug