之前学习了springMVC,补充一下Struts2的知识.
在传统开发中,有一次请求就会对应一个Servlet.会导致出现很多Servlet.Struts2将所有请求都先经过一个前端控制器(过滤器实现),在前端控制器中实现框架的部分功能,剩下的具体操作提交到具体的Action中
从客户端发送请求过来,先经过前端控制器(核心过滤器StrutsPrepareAndExecuteFilter)过滤器中执行一组拦截器(一组拦截器就会完成部分功能代码),拦截器执行完成后,会执行目标Action,在Action中返回一个结果视图,根据Result的配置进行页面的跳转
核心过滤器StrutsPrepareAndExecuteFilter有两个功能:预处理和执行.预处理主要是加载配置文件,对应的是过滤器中的init方法,而执行是用来执行一组拦截器完成部分功能的,对应的是doFilter方法
根据查看预处理对应的方法,可以得到配置文件的加载顺序如下:
前三个配置文件是Struts2内部的配置文件,我们无法修改,能修改的是后三个文件.这三个配置文件的加载是按顺序的,都可以修改Struts2的常量的值,(重点)后加载的配置文件中的常量的值会将先加载的配置文件中的常量的值覆盖.
Struts2框架的核心配置文件是struts.xml,该文件主要用来配置Action和请求的对应关系{<package>的配置}
Struts2框架的核心组件是Action和拦截器,使用包来管理.每个包就是多个Action,多个拦截器,多个拦截器引用的集合.在struts.xml中,package元素用于定义包配置.package元素的常用属性如下:
在配置包时,必须指定name属性,也就是包的标识.extends属性是可选的,属性值必须是另一个包的name属性值,但该属性值通常设置为struts-default,这样该包中的Action就具有了Struts2框架默认的拦截器等功能.abstract属性值为true,表明该包为抽象包,抽象包不能包含Action定义.
package中还有namespace的配置,namespace属性与action标签的name属性共同决定了访问路径.
Action映射是框架中的基本"工作单元".Action映射就是将一个请求的URL映射到一个Action类,当一个请求匹配某个Action名称时,框架就使用这个映射来确定如何处理请求,在struts.xml中,通过<action>标签进行配置,属性如下:
常量配置有三种方式:
在实际开发中更习惯使用struts.xml修改常量,由于项目大部分由团队合作开发,所以Struts2支持分模块开发的配置
Action作为框架的核心类,实现对用户请求的处理,被称为业务逻辑控制器.用户的每次请求,都会转到一个相应的Action类里面,由这个Action类进行处理.
Action可以不继承特殊的类或不实现任何特殊接口,仅仅是一个POJO(简单的JAVA对象),只要具有一部分getter/setter方法的类,就可以称为POJO.一般在这个POJO类里,要有一个公共的无参的构造方法(默认的构造方法即可)和一个execute()方法.格式如下:
execute()方法的要求如下:
本文地址:https://blog.csdn.net/could98/article/details/107487487
如对本文有疑问, 点击进行留言回复!!
springmvc之ResponseBody响应json数据遇到的错误及解决
uni-app 后台升级 静默升级 uniapp 后台更新 静默更新 在线升级
SpringBoot多Module启动报错Could not transfer metadata
Hibernate项目报错:Cannot call sendError() after the response has been committed
网友评论