struts是表示层架构,做了很多控制层相应的工作,用mvc模式开发项目
开源,严格遵循mvc设计模式
定义:自动完成表示层功能的,开源的架构,鼓励程序员以mvc模式开发项目
model1:控制组件和视图组件写在一起,jsp+javaBean,只把业务逻辑分离
缺点:程序复杂,难维护(HTML中嵌入了大量java代码)
不能移植
健壮性差(容易产生空指针异常)
MVC(model2):将问题分解(视图逻辑、控制逻辑,业务逻辑、存储逻辑),各司其职,
降低耦合,可移植性好、易于维护
struts流程:
1、首先用户通过浏览器发请求,交给tomcat,Tocamt创建request接收请求参数,tomcat把请求交给struts框架,也就是ActionServlet
2、 ActionServlet对请求进行分析,通过分析请求到主配置文件(struts-config.xml)中找到与该请求对应的配置信息,找到ActionForm,自动把表单bean请求参数封装到ActionForm
3、然后又通过配置信息找到对应的业务层前端控制器action,调用action的execute方法,把该请求对应的request、response、收集请求参数的 ActionForm、ActionMapping配置信息注入给execute
4、在action前端控制器里创建业务对象,把请求交给业务层,业务层调用持久层,持久层访问数据库,拿到数据封装到结果bean,回传给业务层,
5、业务层回传给action,action把结果bean放到request内置对象,向struts的ActionServlet返回结果信息actionfoward(依赖该请求对应的配置信 息forward标签生成),ActionServlet通过对ActionFoward的分析转到视图层jsp页面
6、jsp从request里拿到结果信息,进行处理,然后通过response回传给浏览器
Struts组件:
ActionServlet:中央控制器
Struts-config.xml:主配置
Action:业务层前端控制器,拿到请求交给业务层
Action forword:封装了转向信息
<init-param>
<param-name>debug</param-name> //错误日志
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name> //解析日志,把xml解析成能看懂
<param-value>3</param-value>
</init-param>