xml文件:Extentsible Markup Language即可扩展标记语言,是用来定义其它语言的一种元语言,其前身是SGML(标准通用标记语言)。xml文件是互联网数据传输的重要工具,因为不受编程语言和操作系统的限制,所以可以跨越互联网的任何平台,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。我们都知道xml文件的一些规则:
xml声明一般是xml文档的第一行:;
xml必须有且只有一个根节点,对大小写敏感,标签成对出现,标签不嵌套,但内部元素需要正确嵌套;
属性值用双引号包裹;一个元素可以有多个属性,它的基本格式为:<元素名 属性名=“属性值” 属性名=“属性值”>;
有效的(valid)xml文档:首先xml文档是个格式正规的xml文档,然后又需要满足DTD的要求,这样的xml文档称为有效的xml文档。
web.xml文件是整个web应用中最重要的配置文件,它必须放在WEB-INF目录中。在web应用开发中,涉及到web资源的配置都是在web.xml中进行的。例如:
<web-app id="WebApp_ID" version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
这是一般在写XML时所做的声明,定义了XML的版本,编码格式,还有重要的指明schema的来源,为http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd;schema是由Sum Microsystems公司(已被Oracle收购)定制的,Schema文件定义了web.xml所对应的xml中有多少种标签元素。
<welcome-file-list>
<welcome-file>index.jspwelcome-file>
<welcome-file>index1.jspwelcome-file>
welcome-file-list>
上述例子指定两个欢迎页,从上到下的优先级顺序;若没有上述配置将默认找index.html作为欢迎页;若所有页面都不存在,将会提示The requested resource (/XXX) is not available。
通过错误码指定错误处理页面
<error-page>
<error-code>404error-code>
<location>/error404.jsplocation>
error-page>
通过异常类型指定错误处理页面
<error-page>
<exception-type>java.lang.Exception<exception-type>
<location>/exception.jsp<location>
error-page>
<error-page>
<exception-type>java.lang.NullExceptionexception-type>
<location>/error.jsplocation>
error-page>
设定上下文初始化参数:
<context-param>
<param-name>param_nameparam-name>
<param-value>param_valueparam-value>
context-param>
此所设定的参数,在JSP网页中可以使用下列方法来取得:${initParam.param_name};若在Servlet可以使用下列方法来获得:String param_name=getServletContext().getInitParamter(“param_name”)。
<session-config>
<session-timeout>120session-timeout>
session-config>
如下述设置一个编码过滤器,过滤所有资源:
<filter>
<description>char encoding filterdescription>
<filter-name>encodingFilterfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>UTF-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
Filter可认为是Servlet的“增强版”,主要用于对用户请求request进行预处理,也可以对Response进行后处理,是个典型的处理链;因此Filter配置与Servlet的配置非常相似,需要配置两部分:配置Filter名称和Filter拦截器URL模式。区别在于Servlet通常只配置一个URL,而Filter可以同时配置多个请求的URL。
Filter的常用应用场合有:编码器Filter、认证Filter、图片转换Filter、数据压缩Filter、密码Filter、日志和审核Filter等。Filter必须实现javax.servlet.Filter接口,在该接口中定义了三个方法:void init(FilterConfig config)、void destroy()、void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)。
配置Listener只要向Web应用注册Listener实现类即可,无需配置参数之类的东西,因为Listener获取的是Web应用ServletContext(application)的配置参数。为Web应用配置Listener的两种方式:1.使用@WebListener修饰Listener实现类即可,2. 在web.xml文档中使用进行配置:
<listener>
<listener-class>监听器类的完整路径listener-class>
listener>
Servlet是个特殊的java类,继承于HttpServlet。客户端通常只有GET和POST两种请求方式,Servlet为了响应则两种请求,必须重写doGet()和doPost()方法。大部分时候,Servlet对于所有的请求响应都是完全一样的,此时只需要重写service()方法即可响应客户端的所有请求。
如下述Spring DispatcherServlet在web.xml中的配置:
<servlet>
<servlet-name>businessservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>publishContextparam-name>
<param-value>falseparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
标签存在如下元素标签:
集成Web环境的通用配置(加载Spring容器)
<context-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring.xmlparam-value>
context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
listener>
SpringMVC中的DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:servlet-context.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web.xml 的加载顺序是:ServletContext -> context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
characterEncodingFilter
/*
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:spring/applicationContext.xml
default
*.css
default
*.swf
default
*.gif
default
*.jpg
default
*.png
default
*.js
default
*.html
default
*.xml
default
*.json
default
*.map
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/dispatcher-servlet.xml
1
DispatcherServlet
/
login.html
404
/nopage.html
java.lang.NullPointerException
/error.html
360