web.xml中配置访问资源URL<url-pattern>/</url-pattern>时无法访问.html、.jsp、.js、.css等静态资源时的解决方案

在web应用中,我们在web.xml配置URL路径问题时,经常这样配置:

<servlet-mapping>
	<servlet-name>spring-MVC</servlet-name>
	<url-pattern>/</url-pattern>
</servlet-mapping>

当然也存在这样的配置:

<servlet-mapping>
	<servlet-name>spring-MVC</servlet-name>
 	<url-pattern>*.do</url-pattern> 
</servlet-mapping>

两种配置的区别就是第一种,当我们访问任意URL资源时,都被名为spring-MVC的servlet来处理,例如:localhost:8080/test/login。第二种则是仅仅是后缀为.do的URL才会被spring-MVC处理,例如:localhost:8080/test/login.do

但是如果我们使用第二种配置,那么我们对于后台的访问都必须加上后缀.do,这明显没有第一种配置方便,所有我们往往会使用第一种配置方式,但是,问题来了,当我们访问一个静态资源时,比如html页面,同样的这个URL也会被spring-MVC来处理,这样往往得不到我们想要的静态页面。

解决方案很简单,在spring-MVC前面,激活tomcat的defaultServlet来拦截静态资源的请求,在web.xml配置文件中,加上以下代码即可:

<servlet-mapping>  
	<servlet-name>default</servlet-name>  
	<url-pattern>*.html</url-pattern>  
</servlet-mapping>

对于.css等其他资源,以此类推。

以下是其他服务器的情况

Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"
Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"
Resin 自带的 默认Servlet的名字 -- "resin-file"
WebLogic 自带的 默认Servlet的名字  -- "FileServlet"
WebSphere  自带的 默认Servlet的名字 -- "SimpleFileServlet" 


参考资料:

http://www.cnblogs.com/rollenholt/archive/2012/12/26/2834209.html
http://blog.csdn.net/this_super/article/details/7884383

原文链接:http://blog.csdn.net/yqfcxy/article/details/51931053
















  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Java Web 应用程序,`web.xml` 文件用于配置 Web 应用程序的部署描述符。`&lt;context-param&gt;` 标签是 `web.xml` 文件的一种配置元素,用于声明应用程序的初始化参数。 `&lt;context-param&gt;` 标签包含了应用程序需要的一些全局参数,这些参数可以在整个应用程序使用。例如,数据库连接字符串、日志输出路径等。通过在 `web.xml` 文件定义这些参数,我们可以在应用程序的任何位置使用它们,而不必硬编码到应用程序的代码。这样,当这些参数需要修改,我们只需要修改 `web.xml` 文件的值,而不必修改代码。 下面是一个使用 `&lt;context-param&gt;` 标签定义应用程序初始化参数的示例: ```xml &lt;web-app&gt; &lt;context-param&gt; &lt;param-name&gt;databaseUrl&lt;/param-name&gt; &lt;param-value&gt;jdbc:mysql://localhost:3306/mydatabase&lt;/param-value&gt; &lt;/context-param&gt; &lt;context-param&gt; &lt;param-name&gt;logFilePath&lt;/param-name&gt; &lt;param-value&gt;/var/log/myapp.log&lt;/param-value&gt; &lt;/context-param&gt; &lt;/web-app&gt; ``` 在上面的示例,应用程序定义了两个初始化参数 `databaseUrl` 和 `logFilePath`。这些参数可以在应用程序通过 ServletContext 或者 JSP 的 `getInitParameter()` 方法来获取。例如,在一个 Servlet 获取 `databaseUrl` 参数的方式如下: ```java public class MyServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String databaseUrl = getServletContext().getInitParameter("databaseUrl"); // ... } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值