在做一个网站的时候,首页使用的是http://XXX.xxx.xxx.xxx:8080/项目名/index,但是客户为了安全起见,要求使用ip+端口号访问首页,看网上解决方案,对直接用ip+端口号取代ip+端口号+项目名的问题得到了解决,但是项目名后面加上一个action就没有解决,这样让我想起struts2里面有一个设置默action,如果只输入项目名,就会跳转到默认的action,这样的话就解决了后面有action的问题,因此我的问题可以分解为两部分来解决,先去掉action,再去掉项目名。
在去掉action名的时候,在struts.xml中添加默认action
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index"/>
<action name="index" class="com.xujie.application.action.ShowAction" method="show">
<result>/index.jsp</result>
</action>
</package>
<default-action-ref name="index"/>
<action name="index" class="com.xujie.application.action.ShowAction" method="show">
<result>/index.jsp</result>
</action>
</package>
这样出现一个问题,发现程序虽然跳转到了对应的jsp页面,但是根本没有跳进默认的action方法里面,查找发现在程序的web.xml有这么一段代码
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
这是设置默认首页的,这样两个jsp页面就一样了,先进入jsp页面但是没有执行相关的后台程序代码,导致首页页面有一些内容没有显示出来,因此我就将默认首页修改了一下,修改为一个不存在的页面,这样的话在web.xml中进不到默认首页,而是去struts.xml中执行默认action的代码,这样就解决了第一个问题去掉了action名字。
第二个问题,去掉项目名,这个问题就是按照网上说的更改tomcat的server.xml文件中的<Host></Host>中的内容,具体修改如下所述:(使用的是Tomcat6.0)
【原tomcat的server.xml文件中的Host部分内容】
Xml代码
<Host name="localhost" appBase="webapps"
【原tomcat的server.xml文件中的Host部分内容】
Xml代码
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applications
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
</Host>
<Host name="localhost" appBase="webapps"
-->
</Host>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<!-- SingleSignOn valve, share authentication between web applications
<!-- SingleSignOn valve, share authentication between web applications
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.authenticator.SingleSignOn" />
-->
<!-- Access log processes all example.
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html -->
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
</Host> 【修改后的server.xml文件中的Host部分】
Xml代码
Xml代码
<Host name="200.200.200.135" appBase="webapps/membermanage"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="." />
<Context path="/membermanage" docBase="." />
</Host>
<Host name="200.200.200.135" appBase="webapps/membermanage"
<Context path="" docBase="." />
<Context path="/membermanage" docBase="." />
</Host>
<Host name="200.200.200.135" appBase="webapps/membermanage"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="." />
<Context path="/membermanage" docBase="." />
<Context path="" docBase="." />
<Context path="/membermanage" docBase="." />
</Host>name后面可以填IP也可以是域名,如www.os.cn,这样修改以后,可以实现直接用
http://200.200.200.135:8080访问,可以看到不用加入项目名称了
备注:以上方法,在Tomcat6.0测试通过,如果是tomcat5.x,在按照上述方法配置后不成功的话,可能<Context path=""
docBase="." /> 这里要改成<Context path="/" docBase="." />
这样通过这两步就解决了通过ip+端口号访问对应的网站了,本来想去掉端口号,
但是发现服务器有程序已经使用80端口了,所以没有改动,如果想去掉端口号即修改tomact端口号为80,可以这样修改,在
tomact文件夹中
找到conf文件里面的 server.xml打开,找到 <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />这段,把8080改成80即可。