java web环境构造_构建Java Web开发环境

1.Java的安装与配置

Step by step安装结束,安装路径为E:\dev\java

配置环境变量:

JAVA_HOME:E:\dev\java\jdk1.7.0_45

在PATH的最后添加:;%JAVA_HOME%\bin

在命令行输入java -version或javac即可测试安装是否成功。

2.Eclipse的安装

解压即安装,解压目录E:\dev,解压后Eclipse所在目录:E:\dev\eclipse

Workspace Path:E:\dev\workspace

在Eclipse中配置JRE:

Windows-Preference-Java-Installed JREs:

默认是JAVA_HOME(E:\dev\java\jdk1.7.0_45)所在目录下的jre。

3.在Eclipse中编辑并运行Java应用程序

File-Project-Java Project:

Project Name:demo

JRE:Use default JRE

点击Finally。

选中项目,右键New-Package:

Name:com.xxx.demo

点击Finally。

选中刚创建的包,右键New-Class:

Name:HelloWorld

点击Finally。

编辑HelloWorld.java:

在代码编辑区,单击右键-Run As-Java Application,即可运行成功。

Note:在Eclipse使用JDK源码

(1)点击"window"->"Preferences"->"Java"->"Installed JRES"

(2)此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)

(3)选中rt.jar文件的这一项:"E:\dev\java\jdk_1.7.0_45/lib/rt.jar"点 左边的"+" 号展开它,

(4)展开后,可以看到"Source Attachment:(none)",点这一项,点右边的按钮"Source Attachment...",选择你的JDK目录下的 "E:/dev/java/jdk1.7.0_45/src.zip"文件,

(5)一路点"ok",结束。

在代码窗口将鼠标定位在某个方法上如println,按住Ctrl键,然后单击鼠标左键,即可看到println方法的源代码。

Ctrl+左键

这个是大多数人经常用到的,用来查看变量、方法、类的定义

Ctrl+O:查看一个类的纲要,列出其方法和成员变量。

提示:再多按一次Ctrl+O,可以列出该类继承的方法和变量。

助记:"O"--->"Outline"--->"纲要"

Ctrl+T

查看一个类的继承关系树,是自顶向下的,

再多按一次Ctrl+T, 会换成自底向上的显示结构。

提示:选中一个方法名,按Ctrl+T,可以查看到有这个同名方法的父类、子类、接口。

4.Tomcat的安装与配置

解压即安装,解压目录E:\dev\tomcat,

解压后Tomcat所在目录:E:\dev\tomcat\apache-tomcat-7.0.52

配置环境变量:

CATALINA_HOME:E:\dev\tomcat\apache-tomcat-7.0.52

在PATH的最后添加:;%CATALINA_HOME%\bin

在命令行中输入:startup.bat即可启动tomcat

启动tomcat后,即可访问:http://localhost:8080/

在命令行中输入:shutdown.bat即可关闭tomcat。

5.在Eclipse中配置Tomcat

Windows-Preference-Server-Runtime Environment:

Add-Apache Tomcat v7.0--Next:

Name:Apache Tomcat v7.0

Tomcat installation directory: E:\dev\tomcat\apache-tomcat-7.0.52

JRE: 选择jdk1.7.0_45

单击OK,配置完成。

6.在Eclipse中编辑并运行Servlet

File-New-Web-Dynamic Web Project:

Project Name:webdemo

Target runtime:Apache Tomcat v7.0

Dynamic web module version:3.0

点击Finally。

选中项目,右键New-Package:

Name:com.xxx.webdemo

点击Finally。

选中刚创建的包,右键New-Servlet:

Project:webdemo

Source folder:/webdemo/src

Java package:com.xxx.webdemo

Class Name:HelloServlet

点击Finally。

编辑HelloServlet.java:

选中项目单击右键-Run as-Run on Server:

选择Manually define a new server(此时还没有存在的server)

Select the server type:Tomcat v7.0 Server

Server's host name:localhost

Server name:Tomcat v7.0 Server at localhost

Server runtime environment:Apache Tomcat v7.0

点击Next-Finaly。

注意:浏览器请求的URL中的HelloServlet是Web应用程序的路径,因为默认项目名就是Web应用程序的路径,其中URL中的/HelloServlet与@WebServlet("/HelloServlet")有关。详见后面讲解。

Note:在Eclipse使用servlet源码

JDK的源码中没有包含servlet的源码实现,所以之前关联的jdk的src后还是不能查看servlet相关方法的源码。tomcat中有servlet的实现,所以只需要下载tomcat的源码,然后点击servlet的某个方法关联一下源码,就可以查看servlet方法的源码了。

7.深入解析Eclipse编译Servlet并将其部署到Tomcat的过程

到目前为止,借助IDE的辅助,完成了一个Servlet的编译部署和运行,但是具体的过程中许多细节被省略了,即IED帮助我们做了很多细节的事情。

比如:

(1)IDE的项目管理中看到的文件组织结构是部署到Web容器中的文件结构吗?

(2)HelloServlet.java的编译

(3)IDE是如何将Web项目部署到Web容器上的?

(4)Web容器会读取哪些设置?

(5)Web容器对于请求的到来,又如何调用Servlet?

(1)关于Eclipse编译web项目

删除项目中的build/classes中的com包。

这样即可编译HelloServlet到build/classes中了,此时只进行了编译(而Eclipse会发现文件有变化自动编译到build/classes并且自动部署到webapps/lib)。

(2)将Eclipse编译好的Servlet部署到tomcat中

双击代码区下方的Servers选项中的Tomcat v7.0 Server at localhost,处于已启动的状态。

在弹出的界面中,可以看到Server Locations,这里便是配置Server路径和项目的部署路径的。

但此时看到,这部分是灰色即不可编辑的。

若要编辑,点击该窗口下方的Modules选项卡:

选择已存在的Web Modules,单击右侧的"Remove",关闭该窗口时保存;

然后重新双击打开Tomcat Server,定位到Server Locations部分:

选择"Use Tomcat installation",Server path默认不可编辑且为tomcat的安装目录。

Deploy path:webapps

编辑好之后,Ctrl+S保存,接着单击窗口下方的Modules选项卡:

单击右侧的"Add Web Module",在弹出的窗口选择Modules为webdemo,单击OK即可。

保存关闭,即配置成功。

设置完成之后,每次"Run on Server"都会将当前项目部署到上面设置的部署路径下。

部署成功时,Tomcat的webapps目录下会多出一个webdemo的目录,且conf目录的server.xml的中会添加一个:

(3)Web容器会读取哪些设置?(部署Web app时)

server.xml中的Host元素中的autoDeploy="true"会自动监控webapps中的web项目(即监视web app中的web.xml文件),发现了就部署。

(3.1)使用@WebServlet

编写好Servlet之后,接下来要告诉Web容器有关这个Servlet的一些信息。在Servlet 3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。

如@WebServlet("/HelloServlet")

使用WebServlet注解类型来声明一个Servlet类,在声明Servlet的同时,还可以告诉容器是哪个URL调用这个Servlet。

只要在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。

上面的@WebServlet告诉容器,如果请求的URL是/HelloServlet,就会由当前的Servlet即HelloServlet的实例提供服务。

可以使用@WebServlet提供更多的信息:

上面的@WebServlet告知容器,HelloServlet这个Servlet的名称是HelloServlet,由name属性指定。

如果客户端请求的URL是/HelloServlet,则由有HelloServlet名字的Servlet(即当前的Servlet类)来处理,由urlPatterns属性指定。

在Java EE相关应用程序中使用注解类型时,没有设置的属性通常会有默认值。例如,若没有设置@WebServlet的name属性,其默认值会是Servlet类的完整名称。

当应用程序启动后,事实上并没有创建所有的Servlet实例。容器会在首次请求需要某个Servlet服务时,才会将对应的Servlet类实例化、进行初始化等操作,

然后再处理请求。这意味着第一次请求该Servlet的客户端,必须等待Servlet类实例化、初始化动作所必需花费的时间,才真正得到请求的处理。

如果希望Web app启动时,就先将Servlet类载入、实例化并做好初始化动作,则可以使用loadStartup属性。

设置大于0(默认值是-1),表示启动app后就要初始化Servlet,数字代表了Servlet的初始化顺序,容器必须保证较小数字的Servlet先初始化,

在使用注解类型的情况下,如果多个Servlet在设置loadStartup时使用了相同的数字,则容器实现厂商可以自行决定要如何加载哪个Servlet。

(3.2)使用web.xml(部署描述文件)

使用注解类型定义Servlet是Java EE6中的Servlet 3.0之后才有的功能,在先前的版本中,必须在Web app中的WEB-INF目录中,建立一个web.xml文件定义Servlet相关信息。

在Servlet 3.0中,可以使用web.xml文件来定义一个Servlet。

web.xml中的设置会覆盖Servlet中注解类型@WebServlet的设置,可以使用@WebServlet来做默认值,而web.xml作为日后更改设置值时使用。

(4)Web容器对于请求的到来,又如何调用Servlet?

Servlet的请求对应:

1.客户端请求:http://localhost:8080/webdemo/HelloServlet?name=huhu

webdemo是Web应用程序环境的根目录

HelloServlet是逻辑资源名称

?号后面的name=huhu是请求参数

2.寻找对应的URL模式 servlet-mapping中的/HelloServlet

3.找出Servlet注册名称 servlet-mapping中的HelloServlet

4.对应的注册名称 servlet中的HelloServlet

找到实体类名称:servlet中的com.xxx.webdemo.HelloServlet

5.使用找到的实体类处理请求

Tomcat默认使用应用程序根目录(Context Root)作为环境根目录,对应到server.xml的Context元素。

Web应用程序环境根目录可以自行设置,不过不同的Web容器设置各不相同。如:在Eclipse设置(与应用程序根目录相同):

web项目右键-Properties-Web Project Settings-Context root

小结:

无论使用@WebServlet注解类型,还是使用web.xml设置,在请求时的URL是逻辑名称(Logical Name),请求/HelloServlet时并不是在服务器上找一个叫HelloServlet实体文件,而是会由Web容器映射到实际处理请求的文件或程序实体名称(Physical Name)。如果愿意,也可以再用个像hello.jsp之类的名称来伪装资源。

到目前为止可以知道,一个Servlet类在web.xml中会有是三个名称设置:设置的逻辑名称,注册的Servlet名称,设置的实体类名称。

注意:提供@WebServlet和web.xml两种配置方式的好处

1.@WebServlet的设置当做默认值;web.xml用来覆盖默认值

2.还有一个好处:

在Servlet3之前,只能使web.xml设置时的问题。

如写好一个Servlet类并编译完成,现在需要传给客户,需要告诉客户:

a.将编译好的Servlet放到WEB-INF/classes中

b.在web.xml进行设置

在Servlet3之后,使用了@WebServlet设置好默认的部署信息:

编译好发给客户,客户只需要将其放到WEB-INF/classes中即可,不需要设置额外的配置文件了。

部署上,简化了很多。

(5)IDE的项目管理中看到的文件组织结构是部署到Web容器中的文件结构吗?

IDE为了管理项目资源,会有其项目专属的文件组织,那并不是真正上传至Web容器之后该有的架构。

Web容器要求应用程序部署时,必须遵照如下的结构:

webdemo

|--WEB-INF

|       |--web.xml   部署描述文件

|       |--lib   放置当前应用程序所需的JAR文件

|             |--xxx.jar

|       |--classes   放置类文件含包的层次

|                |--com

|                       |--xxx

|                                |--webdemo

|                                          |--HelloServlet.java

|--other

|--

上图中的几个重要的目录与文件位置说明:

1.WEB-INF:这个目录名称是固定的,而且一定是位于应用程序根目录下。放置在WEB-INF中的文件或目录,对外界来说是封闭的,也就是客户端无法使用HTTP的任何方式直接访问到WEB-INF中的文件或目录。若有这类需要,则可以通过Servlet/JSP的请求转发(Forward)。不想让外界存取的资源,可以放置在这个目录下。

2.web.xml:这是Web应用程序部署描述文件,一定是放在WEB-INF根目录下,名称一定是web.xml。

3.lib:放置当前Web应用所需的JAR文件的目录,一定是放在WEB-INF根目录下,名称一定是lib。

4.classes:放置编译后class文件的目录,一定是放在WEB-INF目录下,名称一定是classes。编译过后的类文件,必须有与包名称相符的目录结构。

如果使用Tomcat作为Web容器,则可以讲符合上图的webdemo这个目录复制到Tomcat安装目录的webapps子目录下。可启动(之前没有启动)或不启动(已启动,且server.xml中的Host元素中的autoDeploy="true"),使用以下的URL请求访问:

http://localhost:8080/webdemo/HelloServlet?name=huhu

实际部署WEB应用程序时,会将Web应用程序封装成一个WAR文件,也就是一个后缀名为*.war的文件。WAR文件可使用JDK所附的JAR工具程序来建立。

例如,可按照以上方式组织好Web应用程序的文件之后,进入webdemo目录,然后运行以下命令:

也可以在Eclipse中点击项目右键-->Export/WAR file导出WAR文件。

WAR文件使用zip压缩格式封装,可以使用解压缩软件来查看其中的内容。

如果使用Tomcat,则可以将所建立的WAR文件复制到webapps目录下,重启Tomcat(也可以不重启),容器若发现webapps中有WAR文件,会将其解压缩,并载入Web应用程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值