web.xml的配置问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web.xml的配置问题相关的知识,希望对你有一定的参考价值。

第一个
<servlet-name>
context
</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>

第二个

<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

上面那些是什么,ssh我都见有这两段代码,请问是干嘛的呀?详细说明一下哈

在深入研究如何集成受支持的 Web 框架之前,让我们先看看对所有 Web 框架都适用的 Spring 配置。(这一节同样适用于 Spring 自己的 Web 框架,SpringMVC)。

在 Spring 所支持的轻量级应用模型中,有一个概念叫“分层架构”。在经典的分层架构中, Web 层只是很多层中的一层...它是服务器端应用的一个入口,它将请求委派给定义在服务层的服务对象 (门面)以满足业务用例需求(这些是表现层技术触及不到的)。在 Spring 中,这些服务对象,以及其他的业务对象, 数据访问对象等等,都存在于一个独立的“businnes context”中,这个context不含有任何 Web 或者表现层的对象(表现层对象诸如 Spring MVC 控制器通常被配置于一个独立的“presentation context”中)。 这一节详细介绍在一个应用中如何配置一个 Spring 容器(WebApplicationContext)来容纳所有的“business beans”。

现在进入细节部分...所有你需要做的就是在 Web 应用的 web.xml 文件中声明一个 ContextLoaderListener 并且在同一文件里增加一个 contextConfigLocation <context-param/> , 这个声明决定了哪些 Spring XML 配置文件将要被加载。

以下是 <listener/> 的配置:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
注意
Listener 是在 Servlet API 2.3 版本中才加入的。如果你使用只支持 Servlet 2.2 版本的容器, 你可以使用 ContextLoaderServlet 完成相同的功能。

以下是 <context-param/> 的配置:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>
如果你没有指定 contextConfigLocation 的context参数, ContextLoaderListener 将会寻找一个名为 /WEB-INF/applicationContext.xml 的文件以加载。 一旦context文件被加载,Spring 通过文件中 bean 的定义创建一个 WebApplicationContext 对象并且将它储存在 Web 应用的 ServletContext 中。

所有 Java Web 框架都构建在 Servlet API 之上,所以可以使用下面的代码片断访问这个 由 ContextLoaderListener 创建的ApplicationContext。

WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext);
WebApplicationContextUtils 这个类提供了方便的功能,这样你就不必去记 ServletContext 中属性的名字。 它的 getWebApplicationContext() 方法在 WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE 这个键值不对应任何对象的时候将返回 null。 不过,为了避免在应用中得到 NullPointerExceptions ,我们推荐你使用 getRequiredWebApplicationContext() 方法。 这个方法在ApplicationContext 缺失的时候会抛出一个异常。

一旦你获得了一个 WebApplicationContext 的引用, 你可以通过 bean 的名字或类型来获得它们。大多数开发人员通过名字获得 bean, 然后将它们转换成相应的接口类型。

幸运的是,这一节中的大多数框架都有更简单的方法来查询 bean。我们不仅仅可以更简单地从 Spring 容器中 得到 bean,我们还可以在控制器中使用 Spring 依赖注入的特性。下面的几个小节是每种框架集成策略的详细描述。

参考资料:Spring Framework开发参考手册

参考技术A servlet容器启动的时候,加载配置文件时用的! 参考技术B 第一个是配置servlet类的,<servlet-name>是自定义的,<servlet-class>要写你自己编写的servlet类的路径。第二个是配置监听器的,同样<listener-class>要写你所编写的监听器的类路径,并且包裹在<listener></listener>标签中。

请教一个问题,关于web.xml配置的

1、定义头和根元素
部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文
件的字符编码。
DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并
指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。
所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素不像HTML,他们是大小写敏感的。因
此,web-App和WEB-APP都是不合法的,web-app必须用小写。
XML 元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。例如,XML头必须是文件中
的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。在web-app元素内,元素的次序也
很重要。服务器不一定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全 拒绝执
行含有次序不正确的元素的Web应用。这表示使用非标准元素次序的web.xml文件是不可移植的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
参考技术A 在深入研究如何集成受支持的 Web 框架之前,让我们先看看对所有 Web 框架都适用的 Spring 配置。(这一节同样适用于 Spring 自己的 Web 框架,SpringMVC)。 在 Spring 所支持的轻量级应用模型中,有一个概念叫“分层架构”。在经典的分层架构中,... 参考技术B 应该不是楼上的问题,我看了下,估计你这个项目还是未打包的,对吧。你目录应该有个bulid.xml,因为测试的时候都需要部署测试,也就是要把项目先打包。你打完包之后有解压工具在查看目录,会发现web-inf目录下有那几个配置文件的。

以上是关于web.xml的配置问题的主要内容,如果未能解决你的问题,请参考以下文章

关于web项目web.xml配置文件路径的问题。

java web.xml配置问题

jsp中web.xml的配置问题,404错误

使用Idea创建出来的web项目,web.xml有问题

在没有插件 web.xml 问题的情况下配置 Spring Security

web.xml配置遇到的问题