tomcat 或eclipse 修改访问地址不带项目名称(即/)

版权声明:第一次写文章,有什么需要补充的还望各位大神多多指教。 https://blog.csdn.net/mengxiangxingdong/article/details/80623522

目标: 访问地址不带项目名称(即/)

有三种方法

第一种(eclipse修改)

这种方法的好处是,修改项目,再加载在tomcat里面时不需要配置

这里写图片描述
这里写图片描述

第二种(eclipse 中的tomcat 修改)

这里写图片描述
这第二种方法其本质与第三种方法相同,都是把server.xml 所加载的项目 的path修改了名称

第三种(在tomcat的server.xml里面修改)

这里写图片描述

下面是对MVC 的一些通读,来自老大的多年经验

Mvc的核心任务就是将 HTTP 请求的 URL 映射到某一个入口函数,概述中已经提到,映射的配置信息是通过注解 @ActionName已及@MethodName来设置的,两个注解也非常
简单,配置起来应该没有什么障碍。
@ActionName是配置到类名上,一般相同业务的访问会有一个公共部分,这样的请求基本都会放到同一个Action中,相同的部分就可以配置到@ActionName上。
@MethodName用来配置具体执行该业务的方法,所以加到方法上。
但是,依然在某些时候,你会在你的应用出现 404 错误,为了能让你在编写项目是,心里非常有底,这里将详细的解释一下JSP/Servlet 以及 Nutz.Mvc 映射部分的工作原理,在你遇到讨厌的 404 时,只要通读本文,相信就能找到问题的症结。

什么是 URL

任何 URL 都由如下部分组成
http://www.csdn.net /app /module /action

http:// - 协议,也可以是 https://;
www.csdn.net - 域名或者IP地址,由DNS服务器负责转发;
/app - Context的path,这个匹配到server.xml中每个的path属性,由HTTP服务负责转发;
/module /action - 从这里以后的匹配将交给相应的Context的web.xml,由HTTP
服务器根据web.xml来转发;
因此,我们主要研究的就是 /module /action 的部分是如何转发的。

web.xml中的映射url-pattern

通常,在 web.xml 中,我们可以声明各种 HttpServlet 子类,为了能让某一个子类接受 URL,就需要配置映射,众所周知你可以通过 ,为你的 Servelet 增加一组至多组的配置:
[web.xml]

MyServletName
/*

同样,根据 Servlet 的规范,你的 可以有如下几种形式的值:
假设你的 Context 的 URL 为 : http://localhost:8080/testweb

1、 web.xml 中的全匹配 - /*

转发到本 Context 的任何请求都会调用这个 Servlet,比如:
/abc
/abc /dosome
/index .jsp
/img /logo .png
如果请求为:
http://localhost:8080/testweb/abc/getlist
调用 request 对象不同方法将会返回的值:
req.getRequestURL() “http://localhost:8080/testweb/abc/getlist
req.getRequestURI() “/testweb/abc/getlist”
req.getPathInfo() “/abc/getlist”
req.getServletPath() “”

2、 web.xml 中的目录匹配 - /abc/*

转发到本Context的任何请求只要以/abc/开头,都会调用这个Servlet,比如:
/abc
/abc /dosome
/abc /index .jsp
/img /logo .png
如果请求为:
http://localhost:8080/testweb/abc/getlist
调用 request 对象不同方法将会返回的值:
req.getRequestURL() “http://localhost:8080/testweb/abc/getlist
req.getRequestURI() “/testweb/abc/getlist”
req.getPathInfo() “/getlist”
req.getServletPath() “/abc”
因此我们可以认为,req.getPathInfo()的值是:
http://localhost:8080/testweb/abc/getlist.nut
—————————–^ 匹配 /abc/*,从这个位置之后的字符串

3、 web.xml 中的后缀匹配 - *.shtml

转发到本Context的任何请求只要以.shtml 结尾,都会调用这个Servlet,比如:
/abc .shtml
/abc /dosome.shtml
如果请求为:
http://localhost:8080/testweb/abc/getlist.shtml
调用 request 对象不同方法将会返回的值:
req.getRequestURL() “http://localhost:8080/testweb/abc/getlist.shtml
req.getRequestURI() “/testweb/abc/getlist.shtml”
req.getPathInfo() null
req.getServletPath() “/abc/getlist.shtml”

4、 web.xml 中的精确匹配 - /abc/getlist.shtml

转发到本 Context 的任何请求必须为 /abc/getlist.shtml,才会调用这个 Servlet
如果请求为:
http://localhost:8080/testweb/abc/getlist.shtml调用 request 对象不同方法将会返回的值:
req.getRequestURL() “http://localhost:8080/testweb/abc/getlist.shtml
req.getRequestURI() “/testweb/abc/getlist.shtml”
req.getPathInfo() null
req.getServletPath() “/abc/getlist.shtml”

猜你喜欢

转载自blog.csdn.net/mengxiangxingdong/article/details/80623522
今日推荐