如何将我们的 Java 代码,运行在网络上,初学时,首先接触到的一般都是Servlet以及Jsp(或略过Jsp)而 Tomcat 就是这两者的容器,帮你处理动态网页部分
JBoss:Redhat 红帽,支持所有的 JavaEE 规则,适合大型项目,收费
Weblogic:Orcale,支持所有 JavaEE 规则,适合大型项目,收费
Websphere:IBM,支持所有 JavaEE 规则,适合大型项目,收费
Resin:Caucho,支持 所有 JavaEE 规则,应用趋于广泛
而我,我叫汤姆猫( Tomcat ),来自 Apache基金组织 ,可能因为我 开源且免费 ,算是应用比较广泛的web服务器了,不过天下没有白吃的午餐,我仅仅 支持少量的 javaEE规范 (Servlet/Jsp等)所以 中小型项目 ,在我这里跑的比较多
比如现存一个搜索引擎,我们将它看成一个完整的web项目,它基于http协议中的请求和响应,我输入一些内容查询,而它接收到了这个请求后,简单的认为,背后有一个Servlet(一些应用于web项目的java代码)在处理这个请求,它会通过一系列方法,对你的数据进行处理,以及查询,例如,正常则查询,存在非法字则不查询,返回文字警告,最后再把相应的界面展示给用户,而 Tomcat 就作为一个容器,其中存放着Servlet等东西
想要在浏览器中访问我们本地的web项目,那必然需要一个URL地址,例如 http://localhost:8080/
(本地) ,也就是IP+端口号,那这个开放的端口,总得帮助我完成一些操作,它需要找到我再web.xml中配置的一些信息,然后找到我的Servlet,将我所需要的功能实现,执行完后,将结果返回到浏览器上,这样就能用java代码配合一些页面,实现数据动态的互动,从而在浏览器上查看这个效果
Tomcat的运行需要依赖 JDK,它会通过JAVA_HOME路径来寻找 JDK,我们是有 Java基础的,所以这一步可以忽略
在我们的安装路径下的bin文件夹中, startup.bat 、 shutdown.bat 这两个文件分别代表着 启动 和 关闭
例如在我的电脑中开启 Tomcat:D:developJavaapache-tomcat-8.5.40binstartup.bat
如果想更加方便一点,可以将这两者也设为环境变量
计算机 --> 右键属性 --> 高级系统设置(左侧)--> 高级 --> 环境变量
新建系统变量 --> 变量名:CATALINA_HOME 变量值:Tomcat安装路径
修改path变量 --> 追加:%CATALINA_HOME%bin
这样我们就可以在cmd中直接输入startup或shudown,启动我们的 Tomcat
启动后,弹出名为Tomcat的框,内打印出 日志信息 ,即代表成功开启
如果在浏览器地址栏中输入 http://localhost:8080
,如果出现对应Tomcat页面,说明配置也就成功了
因为服务器在本地上,所以我们的主机名可以为, http://127.0.0.1:8080
或者 http://localhost:8080
,端口前代表本地的主机名,tomcat的默认端口为8080
Tomcat安装路径confserver.xml 修改,找到 Connector port="8080"
内容,修改8080的值
如果将端口号修改为80,那么以后再访问服务器的时候,就不需要再输入端口号了,因为 http协议默认端口号就是80
,即输入 http://localhost
即可
conf:存放各种配置文件,例如:context.xml、web.xml、tomcat-users.xml
webapps:目录下的每个文件夹对应我们的一个Web应用
webapps:目录下的每个文件夹对应我们的一个Web应用
默认情况下 webapps 下的文件夹可以被 Tomcat 自动管理成一个一个web站点,但是如果我们存在非常多的站点, 一:过于占据内存 , 二:文件数过多不利于管理 ,所以我们需要在外部开辟一块空间,将我们的web站点分散到别的盘符中去
在Tomcat安装目录下 找到 conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- 待添加位置 --> </Host>
添加代码:<Context path="/URL访问路径" docBase="外部应用的绝对路径"/>
例如添加:<Context path="/web001" docBase="F:/develop/web001"/>
在Tomcat安装目录下 找到 conf/Catalina/loaclhost文件夹,在其中创建一个以web项目为名的文件夹
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="外部应用的绝对路径" reloadable="true"> </Context>
一般在网络中部署站点的时候,index页面将作为一个网站的首页,也就是说只需要输入域名即可直接跳转到这个页面上去,不需要输入其文件名,而如何在本地Tomcat服务器中设置某一个web项目的首页呢?
1、我们在webapps中创建一个文件夹web1作为我们的一个web项目,在其中新建两个html文档,page1.html 以及 page2.html
2、在web1目录下新建一个名为WEB-INF的文件夹,并且在其中新建一个名为web.xml的文件
可以从别处复制格式,例如 webappsROOTWEB-INF 下的web.xml文件,添加下方代码
<welcome-file-list> <welcome-file>首页文件名</welcome-file> </welcome-file-list>
例如:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <welcome-file-list> <welcome-file>page2.html</welcome-file> </welcome-file-list> </web-app>
这样我们就不需要指定资源文件名访问了,page2已经成为了我们站点的首页
在本地开发好了一个web项目,我们部署在本地的tomcat服务器中,但是如果想要让别人通过外网访问我们的项目,帮助我们临时测试,或者提出意见,简单的可以通过Tomcat + 花生壳解决这个问题
首先自行安装注册花生壳这款软件,新建一条内网映射,输入相应数据
我们通过外网访问一下
如果内容中有什么不足,或者错误的地方,欢迎大家给我留言提出意见, 蟹蟹大家 !^_^
如果能帮到你的话,那就来关注我吧!(系列文章均会在公众号第一时间更新)
一个坚持推送原创Java技术的公众号:理想二旬不止