Web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
xml文件里面的所有内容都符合xml语法规范
属性,其中xmlns表示命名空间,xmlns="http://maven.apache.org/POM/4.0.0" 这表示默认命名空间
xmlns其实是XML Namespace的缩写,可译为“XML命名空间”
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 这个命名空间里面的元素或者属性就必须要以xsi:这种方式来写,比如schemaLocation就是他的一个属性,所以写成xsi:schemaLocation而默认命名空间不带类似xsi这种
其实xml标签名称有个专业叫法叫做QName,而如果没有前面的xsi:这种一般叫做NCName。所以你看mvn里面的<dependency>这种就是默认命名空间下面的元素
最后那一行就表示把定义这个命名空间的schema文件给引用进来,好让eclipse这类型工具能够解析和验证你的xml文件是否符合语法规范。等同于<import namespace="xxx" schemaLocation="xxx.xsd"/>。
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param>
<param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param><!--自定义文件名可以在web.xml里加入contextConfigLocation这个context参数-->
在启动Web容器时,自动装配spring applicationContext.xml的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成;
<!-- 配置druid的servlet --> <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name>
<servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name><url-pattern>/druid/*</url-pattern><!--url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html-->
</servlet-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<!-- 去除对druid的拦截 -->
<init-param>
<param-name>excludedPages</param-name>
<param-value>/druid*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>druid监控功能,https://github.com/alibaba/druid
struts2
基于MVC设计模式的Web应用框架,本质上相当于一个servlet,
在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开
<dispatcher></dispatcher>必须写在filter-mapping的最后,dispatcher的前提条件当然是要先满足url-pattern,然后dispatcher有四种可能的属性,REQUEST、FOWARD、INCLUDE、ERROR,意如其表,满足条件的会走这个过滤器,如上一次请求(request、forward)便会走指定的过滤器
项目中,JSP用到了:<%@ include file="../fontPage/menu.jsp"%>原来这个include指令,引申出include动作:<jsp:include page="menu.jsp" />,jsp指令是在menu.jsp被转换成Servlet前,将menu.jsp代码插入其中;jsp动作是在menu.jsp被请求时,将次级页面menu.jsp包含进来,对滴差别是调用时间不同 (两种include方式及filter中的dispatcher解析)
jsp本质就是servlet
<login-config> <auth-method>BASIC</auth-method> </login-config>
BASIC验证机制:指出采用basic验证方式,并指出了对于访问/member/*下的文件时,都需要获得 member角色的授权。
此外:form表单验证 http://blog.csdn.net/lisheng19870305/article/details/40819481
参考:
http://blog.csdn.net/muzizhuben/article/details/9135275
http://www.cnblogs.com/ansen/articles/2017360.html
https://baike.baidu.com/item/Struts%202/2187934?fr=aladdin&fromid=10711345&fromtitle=Struts2
http://blog.csdn.net/jethai/article/details/52345135
http://www.cnblogs.com/xrq730/p/4929029.html