今天我们来讲解ssh另一个框架---Struts2框架
1.什么是Struts2?
Struts2 是apache的一个开源项目,它是纯java开发,它是一个非常优秀的MVC框架,基于Model2 设计模型。
struts2取代jsp+servlet+javabean的开发模式。
解决jsp+servlet+javabean中的问题:
1、将控制逻辑单独封装成通用的控制器
2、原控制逻辑中封装请参数、调用业务逻辑代码抽取出来。
3、支持多视图技术。
2.Struts2的执行流程
1、控制器
struts2提供前端控制器(Struts2PreparedAndExecutFilter),控制逻辑封装起来
接收请求
2、模型
封装请求参数,进行业务处理
struts2提供了action接口,根据业务需求开发不同的action,比如:注册用户Action
3、提供Result接口,支持多视图技术
Result将结果响应给用户
3.实现Struts2的使用
那下面我们给上面的流程表一个顺序
1、用户请求前端控制器StrutspreapredAndExecuteFilter
它是一个 Filter,拦截用户的请求,根据用户请求的url调用Action
提前在struts.xml配置文件将action类进行配置。
url和action对应关系。
2、前端控制器调用Action
Action:封装请求参数,调用service
Action:根据不同业务需求,需要程序员开发。
3、Action调用service获取数据,业务处理
4、前端控制器调用Result,响应结果
Result:响应结果,支持不同的视图技术。
在struts.xml中配置Result
5、Result根据用户的调用使用不同的视图技术,使用jsp
在struts.xml中配置Result转发到的jsp路径
6、Result响应结果
底层通过servlet api进行响应。
整理好了顺序然后我们开始进行例子使用:
首先我们要导入Struts2的必备包
这是我们使用Struts2框架要导入的包。
然后我们新建一个web项目在web.xml中配置前端控制器,这个前端控制器实际上就是一个拦截器(fifter);
这就是我们配置好的前端控制器,关于控制器的路径配置,在注解中已经说明白了。
然后我们开始写Action
Action定义的规范:
1、Action可以是一个pojo(不实现任何类和接口)
2、Action可以继承Action接口或继承ActionSupport
3、Action中定义的请求处理方法必须是public、且没有参数,方法名称不限制,方法的返回值可以是void或String
我们这里已继承ActionSupport的Action经行举例:
当然这个action并没有什么功能,如果在实际开发中action中可以根据需求写不同的功能。
下面我们要配置struts.xml
需要在classpath定义一个struts.xml(名称固定,位置固定)!!
struts2框架运行会按照以下顺序加载配置文件:
default.properties(框架提供):配置了struts运行的参数
struts-default.xml(框架提供):struts框架加载创建、Result、拦截器等,框架运行要用
struts-plugin.xml(插件提供):插件文件,比如:第三方插件,转json插件、struts2和spring整合插件。。
struts.xml(程序员定义):它能配置的内容和struts-default.xml一样,重点要配置Action、自定义运行参数、自定义的拦截器
struts.properties(程序员定义):可以配置struts运行的参数
实际开发中,建议配置struts.xml。
所以我们这里也就直接配置struts.xml
在配置xml的是时候我们按照
常量->package->action->result这个顺序来配置。
首先我们要先配置struts.xml的运行参数:
struts框架提供default.properties,配置了很多常量。
在struts.xml中自定义设置常量值。
哪些文件可以配置常量:
default.properties
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
struts加载上边的配置文件,下边的常量覆盖上边同名的常量值。
我们就配置里几个我们需要用到的常量,如果还有其他需要可以在struts框架提供的struts-default.xml中自己查看。
开始配置package与action
最后就剩下配置resul了
如果action的方法是string,执行完成返回一个逻辑视图名
Struts2 根据逻辑视图名决定调用哪个result
通过<result>元素配置一个result,result有两个属性:
name 该属性指定配置逻辑视图名,框架提供了一些默认的success、error等逻辑视图名。
type 该属性指定结果类型,常用的:
dispatcher:转发
redirect:重定向
要注意result的name要与action中返回值相同,然后执行重定向或者转发到你指定的前台界面。
下面前台我们写一个form表单提交到这个action
这样我们的一个小例子就写完了。struts2的简单应用你学会了吗?别忘记打赏哦!