tomcat部署配置和springmvc配置

  1. 项目访问方式,我想直接通过ip+端口直接访问到项目,而不是ip+端口+项目名,我该怎么做?

    两种办法:

    方法一:查看tomcat下conf目录下的server.xml文件,找到如下代码段

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    

    就在这个Host节点下,添加一行

    <Context docBase="projectName" path="" reloadable="true" />
    

    这里docBase可以写相对路径也可以写绝对路径,配置完成后保存,重启tomcat,即可完成~

    方法二:将webapps下的你的项目下的文件复制到ROOT文件夹下,我的做法是清空ROOT文件夹,放我自己项目的文件,输入ip+端口即可访问到项目

    上述配置完之后可能会遇到tomcat启动两次的问题

  2. tomcat启动两次

    tomcat会先运行host节点,webapps下的项目,再运行context节点中的,咱们配置了两个所以会重复运行,解决办法直接复制到ROOT文件夹下,把原来项目删除,即可运行一次,也可以自己另写一个与webapps同级的目录,进行相关配置后即可避免重复运行

  3. 我部署上去后,必须得加.do结尾才能到对应controller进行请求(不是tomcat了)

    这个是配置springmvc的dispatcherServlet,配置拦截路径进行处理的,在web.xml中进行配置

    <servlet>
       <servlet-name>spring</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
       <servlet-name>spring</servlet-name>
       <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    

    可以看到mvc只拦截do结尾的请求,修改的话修改为“/”就拦截除了jsp和.jspx结尾的所有后缀都拦截,下面说url-pattern的配置几种区别

    “/’表示匹配所有请求(其中包含除.jsp和.jspx外的所有后缀)。

    为什么不会匹配.jsp和.jspx?因为tomcat已经设置了jsp和jspx拦截

    /的意义在于符合restful风格,restful风格的请求不能有后缀,需要像 /user/name这种,需要配置静态资源:mvc:resources或mvc:default-servlet-handler/或Tomcat的web.xml中配置DefaultServlet

    “/*”表示匹配所有请求(包含所有后缀)

    /*的意义在于过滤器拦截所有资源使用,并不适用于DispatcherServlet

    *.do表示匹配所有以.do结尾的请求

    *.do适用于DispatcherServlet,免去了配置静态资源的麻烦,但不适用于restful风格

最后附上部署时遇到的问题:https://blog.csdn.net/hsunnyc/article/details/117445117

参考:

  1. https://www.cnblogs.com/coder-lichao/p/10698996.html

  2. https://blog.csdn.net/hao134838/article/details/78505668


版权声明:本文为hsunnyc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/hsunnyc/article/details/117514632