tomcat部署配置和springmvc配置
-
项目访问方式,我想直接通过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启动两次的问题
-
tomcat启动两次
tomcat会先运行host节点,webapps下的项目,再运行context节点中的,咱们配置了两个所以会重复运行,解决办法直接复制到ROOT文件夹下,把原来项目删除,即可运行一次,也可以自己另写一个与webapps同级的目录,进行相关配置后即可避免重复运行
-
我部署上去后,必须得加.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
参考:
-
https://www.cnblogs.com/coder-lichao/p/10698996.html
-
https://blog.csdn.net/hao134838/article/details/78505668