1.Struts2的引入
JSP中请求的处理使用Servlet,由请求URL以及request域中引入参数,在Servlet中获取请求参数,手动访问POJO类(业务逻辑层)的某些方法,然后根据不同的返回值,决定重定向,请求转发决定要跳转的页面
而除去Servlet,Filter也可以进行请求的处理,这其中一个请求URL对应一个POJO类,一个POJO类方法的返回值对应一个跳转页面,使用多个Filter成链式处理请求自然可以,但每一个Filter进行处理并放行并不好,此时考虑-----这样一对一的关系正好可以只利用一个Filter,而Filter内部维护一个Map,key为请求的url,value为被请求访问的POJO类的全限定类名,底层通过全限定类名Class.forName().newInstance()获取实例对象,进而获取对应的方法.invoke执行,而对于返回值,key为返回值,value为跳转的页面,这样便实现一个Filter处理多个页面的处理
但其中由来的问题是-->程序需要增加新的请求,增加新的返回值与跳转页,就需要再向Map增加键值对,此时源码进行变化-->就需要重新编译程序-->此时,便用到了配置文件
在配置文件中注册相关请求对应的url,跳转页面等--->struts2就实现了这一功能
配置文件.xml/.properties的区别
xml文件: 文件较大,由各个标签组成,标签语义性强,可读性强,所以经常被使用于核心配置文件
properties文件:文件体积小,但语义性低,只是适用于常用的简单配置,例如数据源连接四要素
2.Struts2环境的配置
由上引入可知,Struts依赖于核心的Filter,由此Filter成为了Struts的启动项
0)导入依赖的jar包
apps中struts-blank.war(由于war和zip的解压逻辑相同),修改后缀名为.zip,解压得到内部内容,其中lib中13个jar包
1)web.xml中配置Struts2的启动项 filter,filtermapping为 /*
其中Filter核心类的全限定类名可根据ctrl+shift+T搜索--->可根据下载的struts2的jar包中app->struts-blank中web.xml为参考(复制粘贴)
2)src下配置struts.xml(xml名必须是struts.xml)
文件头在struts-core核心包中查找对应版本的dtd,文件头在其中的注释中
<!-- Struts configuration DTD. Use the following DOCTYPE <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> -->
DOCTYPE后的单词便是此XML的根标签
类似框架jar包核心,公共的部分-->在core核心包中根部或者基础中
struts2中的基本jar包作用