怎么把web部署到tomcat(JSP部署在Tomcat上运行)
一、jsp简介
JSP:java server Pages。在传统的HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页。
二、学习重点:
- JSP语法(脚本、指令、动作)
- JSP的内置对象
- 创建动态的内容
- 用户会话跟踪
三、使用Tomcat软件在本地搭建服务器:
Tomcat是Apache组织的Jakarta项目中的一个重要子项目,是Sun公司推荐的运行Servlet和JSP的容器(引擎),其源代码完全公开。有了这个服务器,就相当于在本地的计算机有了一个网站,然后我们可以通过浏览器来访问这个网站。
下载Tomcat
下载之后,将压缩包解压:
Tomcat文件
注意目录名不能有中文和空格。目录介绍如下:
- bin:二进制执行文件。里面最常用的文件是startup.bat
- conf:配置目录。里面最核心的文件是server.xml。可以在里面改端口号等。默认端口号是8080,也就是说,此端口号不能被其他应用程序占用。
- lib:库文件。tomcat运行时需要的jar包所在的目录
- logs:日志
- temp:临时产生的文件,即缓存
- webapps:web的应用程序。web应用放置到此目录下浏览器可以直接访问
- work:编译以后的class文件。
软件运行之前要保证Java环境变量已经配置:
jdk环境变量
上图中,变量名为JAVA_HOME,变量值为:JDK安装的绝对路径。
注:Catalina_Home环境变量:指定tomcat在启动时启动哪个tomcat,一般不推荐配置。
回到tomcat的bin目录中, 双击startup.bat:
启动Tomcat文件
之后弹出如下界面:
启动成功
这个时候,本地的服务器就已经搭建起来了。如果想关闭服务器,可以直接关闭上面的窗口,或者在里面输入Ctrl C禁止服务。
首先查看自己电脑的ip地址,我的计算机的ip地址为:192.168.1.112。
在浏览器中输入http://192.168.1.112:8080/(或者输入http://localhost:8080/也是可以的)。如果弹出如下界面,进入本地服务器的首页,表示tomcat安装成功并且启动起来了:
Toncat启动表示成功
三、将Tomcat和eclipse相关联:
1.打开eclipse for Java EE ,选择菜单栏Windows-->preferences,弹出如下界面:
2.上图中,点击“add”的添加按钮,弹出如下界面:
3.上图中,选择对应的Tomcat版本,继续:
4.上图中,选择Tomcat的路径,以及JRE,点击“完成”,配置完毕。
新建java工程,建一个动态的工程:
5.注:对“动态”的理解:html是静态的,写成什么,就是什么。动态指的是根据服务器端返回的数据动态地生成页面。比如张三登陆可以看到张三的信息;换成李四登陆,可以看到李四的信息。
6.点开上图中的红框部分,弹出如下界面:
7.按照上图进行配置,其中,第三个红框中,是加载自己的jdk的安装路径即可:
8.然后,单击finish。继续:
9.工程文件结构:
10.上图中,deployment descriptor:部署的描述。Web App Libraries:自己加的包可以放在里面。build:放入编译之后的文件。WebContent:放进写入的页面。
在WebContent文件夹下新建一个jsp文件。在下图中可以看到它的默认代码:
11.上图中,这种编码方式不支持中文。我们来修改一下JSP文件的编码方式,按上图所示,鼠标右击,选择"Preferences",弹出如下对话框:
12.上图中,将编码方式改为UTF-8。
同样,我们还需要将文本内容的编码方式改为UTF-8(这个编码和程序无关),选择菜单栏Windows--preferences,打开如下界面,将编码方式改为UTF-8,并点击update:
13.以后每次新建一个jsp文件,默认的编码方式就是UTF-8了。默认代码如下:
14.现在我们开始运行程序:
15.运行时,弹出如下错误:(如果没有此错误,请忽略)
16.原因是,我们之前点击了Tomcat安装包中的startup.bat,这样一来就手动打开了Tomcat服务器,这明显是多余的,因为程序运行时,eclipse会自动开启Tomcat服务器。所以我们先手动关掉tomcat软件,再次运行程序,就行了。控制台信息如下:
17.浏览器会自动打开,网页信息如下:
18.现在来解释一下上方网址的名称为什么显示的是 http://localhost:8080/TomcatTest/
我们选中项目,右键选择“properties”,弹出如下对话框:
19.上图显示,我们所部署的路径是根目录,根目录的名称默认为我们新建的项目名,所以网址才会显示为:主机名 端口号 项目名。
网页显示的错误为404,即找不到网页,可见网页中并没有看到我们新建的jsp文件,我们再来找一下原因。打开工程文件中,WEB-INF目录下的web.xml文件:
20.上图解释:当程序运行时,Tomcat会首先读取工程的配置文件,且名字必须为web.xml。当系统默认进入的链接为:主机名 端口 工程名时,服务器就会找上图中<welcome-file-list>标签里的页面(有好几个页面的话,就依次往下找);而标签<welcome-file-list>中并没有hello.jsp文件。所以,我们需要在浏览器地址栏输入:http://localhost:8080/TomcatTest/hello.jsp,才会将hello.jsp页面显示出来。效果如下:
四、程序运行的原理:
我们现在来分析一下上面的程序运行的原理。
当在服务器上运行后,会生成与工程文件并列的一个文件夹:Servers。如下:(如果删掉了Servers文件夹,当重新运行时,文件夹又会自动生成)
这个文件夹是Tomcat服务器的一个基本的配置。
上图中表明,我们新建的项目已经部署到Tomcat服务器上去了,也就是看到了TomcatTest这个工程被发布出去了(发布的过程即:将写的工程打包以后放到Tomcat里)。
其实eclipse for EE已经包含了Tomcat服务的插件,但其也必须依赖Tomcat来启动。我们双击上图的红框部分,显示如下信息:
上图的红框部分表明,服务的部署是在eclipse里面(默认是放在工作空间里的.metadata文件夹下),而不是在Tomcat里面。我们来改一下,前提是工程并没有发布到Tomcat中去,那我们先把之前发布的版本删了吧(稍后重新发布):
然后就可以修改部署的路径了:
上图中,使用Tomcat的安装目录作为部署的位置,并修改部署的路径Deploy path(建议改成Tomcat的webapps目录下),然后保存即可。这时,重新运行程序。现在来到Tomcat的webapps目录下,发现多了一个TomcatTest文件夹(即工程文件名),并且文件夹下包含了工程文件中WebContent的内容:
上图说明,说明这才是真正将程序发布到服务器上。
我们再来到Tomcat的work目录中,看一下编译之后的文件:
上图表明,Tomcat会先将jsp文件转为java文件,然后再把java文件编译为class文件,最终执行的是class文件。现在来看一下JSP运行的原理。
四、JSP的运行原理:
- 只有当客户端第一次请求JSP时,才需要将其转换、编译(所以第二次浏览同样的网页时,速度会更快)
- Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。
- 程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能。
- 所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低。
总结:本文的整个过程,让我们学会了如何配置Tomcat和部署工程文件,明白了jsp文件是怎样发布到服务器上并最终显示出来。关于JSP的进一步学习,将在后面呈现。
五、Tomcat的其他问题:
1、端口占用问题:
在cmd中输入netstat -ano命令,查看占用端口的进程pid,再用任务管理器关闭相应进程即可。
我们在浏览器中输入"www.baidu.com",但是并没有输入端口号依然能进入网页,这是因为浏览器默认的端口号为80,如果对方服务器是监听在80端口上,则在浏览器中输入网址时,可以不用输入端口号。
Tomcat默认监听的端口号是8080(server.xml文件的第63行),可以在配置文件conf/server.xml中修改。
【备注】Tomcat关联帮助文档Javadoc
我们以后如果要使用到Servlet类,但是想查看里面的源码和帮助文档,发现看不到:
按住ctrl点进去之后,是下面的界面:
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com