搭建tomcat服务器,目标可通过外网ip访问本机

本文记录了通过修改Tomcat的server.xml将本地服务器转变为可远程访问的步骤,涉及端口设置、默认Host配置及Context路径指定。同时介绍了servlet的使用,包括映射路径设置和IDE中WEB-INF目录的调整。此外,还提到了微信开发中的token和access token操作,以及在远程服务器上部署项目需要注意的事项。

最近学习了一些微信的开发者方面的东西,申请了一个阿里云,因为一些原因,不能在阿里云直接布置服务器,只能通过远程控制主机来布置,虽然我也不明白为什么我一个前端要去弄那些,但是也算收获一些东西了。记录一下。


以下主要内容有: 

1 . 如何把tomcat从localhost:8080访问变成可以在变的计算机通过域名173.168.0.1(乱写的)去访问


2. tomcat的servlet的使用(使用JavaEE for Web的IDE其实在使用servlet上会吃一些苦头)


3. servlet的WEB-INF目录下的classes目录到底有什么存在的必要?


4.附带一些微信的验证token和access token的具体操作(这两天在这里面吃了苦头,希望可以对用tomcat的朋友有些作用吧)






1.修改tomcat的server.xml,把计算机变成服务器.


      

1、首先你要确定你有一个外网ip地址。如果你分配到的是一个局域网IP地址需要经过一系列的转换为外网ip地址,然后继续下面操作。

2、拿到外网IP地址,进行tomcat的server.xml文件的配置。主要进行下面三个地方的配置(本次配置采用的tomcat版本号是7.0.30)

      1) <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

               将port端口改为80,基于http协议一般是通过80端口访问的(微信只支持80端口)

               如果不修改,通过ip访问就需要 http://192.168.1.2:8080


     2)<Engine name="Catalina" defaultHost="192.168.1.2">

            将defaulHost的localhost改变为你自己的外网ip地址,提供给外面访问。


     3)<Host name="192.168.1.2" appBase="webapps" unpackWARs="true" autoDeploy="true">

           <Context path="/" docBase="D:/tomcat" reloadable="true" crossContext="true"></Context>


           将Host 里的name改为外网IP地址,同时在该标签里加入Context标签

           path 代表访问的虚拟路径,docBase代表的是实际项目路径

           我们知道,web.xml里面的<welcome-file>设定第一个是index.html ,意思是如果访问服务器直接输入ip地址而没有指明任何文件的时候,会自动访问index.html的文件

            ocBase="D:/tomcat"的设定,当我们在别的计算机输入服务器域名(如192.168.1.2)时,会访问服务器D盘下,tomcat文件夹里面的index.html

            这就是项目路径,可以随意修改。


经过上面三步的配置,已经实现了服务器的配置。我们就可以启动Tomcat,此时通过ip地址可以直接访问该项目啦。




2. servlet的使用


        在很久以前,我看新浪体育的页面,发现地址上面区别于其他网站,新浪的地址是没有任何html,jsp,php这样的后缀的,后来学乐servlet才知道,那就是servlet的映射


<servlet>
<servlet-name>suibian</servlet-name>
<servlet-class>com.gc.action.CoreServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>suibian</servlet-name>
<url-pattern>/ABCDEFG</url-pattern>
<pre name="code" class="html"><servlet-mapping>


以上就是servlet的映射,写在WEB-INF目录下的web.xml,分为两部分servlet映射路径的指定 mapping拦截路径  

注意:以上顺序不能改,servlet定义必须在mapping之前。

因为网上已经说几万遍了,我再记录多一遍吧:

1)两个<servlet-name>必须一样,至于内容是什么可以乱起,不要求存在suibian这个.java或.class文件,只是为了规范我们一遍会起coreServlet

2)<url-pattern>表示拦截路径,当我们输入http://192.168.2.1/ABCDEFG  的时候,web.xml会发现自己的url-pattern中有一个也叫 ABCDEFG,于是找到 servlet-mapping的servlet-name ,再找servlet的servlet-name(所以这两个要一样),然后找servlet得servlet-class进行访问,这样就是servlet的拦截-访问

注意了,那么<servlet-class>里面的com.gc.action.CoreServlet在哪里呢? 是什么呢?

因为IDE的问题,现在的JavaEE for WEB工具在创建项目的时候,会把默认的编译路径(也就是产生.class文件的路径)存放在上图中的build文件夹里面,所以我们在创建完项目后,还需要在WEB-INF专门建一个classes目录,然后  右键项目——Properties——Java Build Path——Source——在最下面的"Default output folder"下把原来的Build/classes改为 WebContent/WEB-INF/classes ,表示我们变Servlet编译.java文件产生的.class文件存放在WEB-INF下的classes里面。

好了。如果你做了以上的时候,你在浏览器里面输入192.168.2.1/ABCDEFG后,还是不能跳转的com.gc.action.CoreServlet的话,有2个原因:

1)tomcat的config下,web.xml里面的有一个

<init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
</init-param>
把false改为ture;

2)如果你的项目名叫"work",那么你想在浏览器看见被拦截后转向的servlet的页面,你应该输入 192.168.2.1/work/ABCDEFG 对吗? 如果你没有看见,因为你的WEB-INF还在WebConten里面,也就是work/WebCont/WEB-INF    请把WEB-INF拿出来,放在项目目录下,也就是 work/WEB-INF ,因为每个项目下都必须有个WEB-INF才可以在浏览器显示。而IDE是不会帮你做这个的。




3. 为什么非要在WEB-INF下建立classes文件夹?


         Servlet编译.java文件产生的.class文件存放在WEB-INF下的classes里面。那为什么非要放在WEB-INF下面呢?为什么非要专门建一个classes呢?  请打开你的config目录,找到catalina.policy——ctrl+F——输入classes,你会发现catalina.base有很多是跟classes关联的,而config里面的web.xml也有很多是引用了catalina.base的。

         总结一句话,你想你的servlet能够在浏览器内工作,请照做..



4. 微信的token和access token操作


         因为这次是远程操作服务器来搭建的,在搭建tomcat时候需要jdk, 如果要完成验证token和后面的access token,请记得用jdk1.7以上,因为用java实现token的验证,包括自写sha1函数,需要jdk1.7以上的支持。


         搭建tomcat时候,基本是上面3点提到的 

                 1)修改server.xml(端口80,default的修改等等)

                 2)IDE下的WebContent目录,中文叫网页内容,其实除了lib库以外,当你在IDE做好一个项目,用startup.bat编译一遍后,就可以把WebContent丢去服务器了,其他的src什么也不需要,所以总结是:项目的目录下一定要有WEB-INF ,而WEB-INF下一定要有classes。






这几天的感想:  这次开发其实不算成功,因为一些原因,搭建好服务器,弄好token就没继续了。自己本来是学前端了,弄起后台(其实也不算后台)也不是太顺手。但是这几天却出奇地锻炼了我的意志力。。那种弄了几个小时又坚持几小时,最后发现是一些很低级的失误(比如项目下并没有WEB-INF目录),这些经验会让我以后在学习,开发过程中更加细心地去做事。


程序员总会犯低级错误的,早一点把该错的都做错了,以后就会好过了。大家共勉!



(如有错误,请务必指出!感谢!)




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值