【12】Servlet中的默认映射问题
来源:互联网 发布:淘宝销量排行榜怎么看 编辑:程序博客网 时间:2024/04/29 12:20
问题描述
Servlet中配置了缺省路径后,原先在WebRoot中的静态页面无法通过URL访问了,为什么?
尝试
已经做的努力:
- 将文件后缀改为.jsp后可以正常访问
- 将缺省映射删除后可以正常访问
- 原有的index.jsp可以正常访问
拨开迷雾
tomcat在/conf/web.xml中定义了”/”到DafaultServlet的映射,在DafaultServlet中有renderHTML和renderXML方法来表示或者渲染html和xml文件
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class></servlet><servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
并定义了”*.jsp”和”*.jspx”到JspServlet的映射,在JspServlet中处理jsp和jspx文件
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class></servlet><servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern></servlet-mapping><servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jspx</url-pattern></servlet-mapping>
如果在自己的web工程中定义了默认映射<url-pattern>/</url-pattern>,会使得tomcat中的默认映射失效,而自己定义的Servlet通常不具备处理html文件的能力,所以无法渲染html页面。那么对于jsp文件呢?这就得说到Servlet匹配过程了。
Servlet的匹配过程
- 严格匹配优于带*的匹配
- 最长pattern优于其他pattern
- 路径匹配优于文件类型匹配
- pattern/总是匹配没有其他pattern匹配的request
可见,由于tomcat中/conf/web.xml中定义了*.jsp的映射,根据规则4,是不会被默认映射捕获的。所以jsp文件的访问正常。
解决方案
那么问题来了,该怎么解决这种情况?
- 用jsp代替html;
- 工程不使用默认映射;
- 工程中的默认Servlet增加处理html的方法。
0 0
- 【12】Servlet中的默认映射问题
- Servlet映射到多个URL中的一些问题
- 默认的servlet映射url
- JSP 中的Servlet的映射
- Web项目中的Servlet映射
- 【转载】servlet映射冲突问题
- servlet与spring中的url映射
- 编程中的 默认问题
- servlet中的乱码问题
- servlet中的乱码问题
- Servlet中的小问题
- Servlet中的并发问题
- Servlet中的路径问题
- Servlet中的路径问题
- servlet中的乱码问题
- servlet映射
- GDI中的坐标映射问题
- GDI中的坐标映射问题
- 【11】Servlet
- IBOutlet 与IBAction
- 集合框架基础知识点
- c primer plus笔记
- 求助,javax.persistence.Table.indexes()
- 【12】Servlet中的默认映射问题
- ifconfig解析
- android悬浮控件-仿360手机助手应用详情页
- 自定义控件: 万能下拉刷新及上拉加载控件SuperRefreshLayout-2
- Delphi & BC++ 按钮单击事件代码查找
- 静
- 【C++】STL--MAP
- 【13】编码、解码与乱码
- Ubuntu安装Percona Server报libc6版本依赖错误解决方法