Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java Servlet API,鼓励开发者采用MVC架构。
缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并Struts。
Struts1设计的第一目标就是使MVC模式应用于web程序设计。在过去10年,Struts在更好的web应用方面所做的工作是值得肯定的。在某些方面,Struts社区注意到这一框架的局限性,所以这个活跃的社区通过对MVC运行模式的重新理解并同时引入一些新的建筑学方面的设计理念后,新的Struts2框架结构更清晰,使用更灵活方便。
这一新的结构包含应用逻辑的横切面拦截器,基于注释的配置以减少和去除XML形式的配置文件,功能强大的表达式语言,支持可更改、可重用UI组件的基于微MVC的标签库。Struts2有两方面的技术优势,一是所有的Struts2应用程序都是基于client/server HTTP交换协议,The Java Servlet API揭示了Java Servlet只是Java API的一个很小子集,这样我们可以在业务逻辑部分使用功能强大的Java语言进行程序设计。Struts 2提供了对MVC的一个清晰的实现,这一实现包含了很多参与对所以请求进行处理的关键组件,如:拦截器、OGNL表达式语言、堆栈。
idea构建struts2项目:
创建strus2项目(注意不要勾选download,最新的struts核心包可能会导致一系列的错误)
去struts官网下载项目所需要的包
解压下载好的文件,将lib文件夹内的所有包导入项目中
目录结构如下:
创建示例action
配置struts.xml文件,一共有三种方式,但用的最多的就是通配符的方式
处理返回值与视图相对应
需注意web.xml中包的路径 struts2.5版本略有不同
使用tomcat运行该示例如下:
如果在实际开发过程中,将所有的action写在一个配置文件内,这个文件就会显得异常臃肿,所以我们需要采用多个配置文件。
指定多个配置文件的示例:
我们将刚才写的struts.xml配置信息移到一个新的test.xml文件中,然后再struts.xml文件引入test.xml配置文件
我们也可以统一配置文件的编码格式为UTF-8,避免以后出错
我们也可以采用默认的action 防止404错误不友好体验
当用户输入错误的url
关于修改请求地址的后缀示例:
修改后缀为html
action接收参数的示例:创建一个登陆界面
创建一个接收参数的action
注意接收参数的命名与前端名称的一致性
配置struts信息
测试成功:
但是这样写,当参数过多时就会不利于维护,我们需要采用一种面向对象得到方式来接收参数
创建一个user实体类
使用user对象接收参数
更改前端参数
但是当传入参数改变的时候,我们需要改变接收实体的参数,所以也不建议使用。
我们使用实现接口的方式接收参数,这种方式需要实例化对象
关于使用集合接收参数
关于处理结果的类型
除了input比较特殊之外,其他的几种只是一种代码规范。
input来限制接收参数的类型
定义age的类型为int
修改配置文件信息,参数正确可以进入首页,否则继续停留在登陆界面
测试成功:
自定义拦截器示例:
新建拦截器,继承AbstractInterceptor类,重写intercept方法
在struts.xml中注册拦截器
在指定的action中调用拦截器
创建测试action
创建测试义页面
测试如下:
内置拦截器:
需要注意的是当我们为某个action指定拦截器后,则默认的拦截器不会被引用,所以需要手动引用默认拦截器
struts2权限控制示例:
WEB-INF是无法直接通过url访问的
相应的逻辑处理
视图的转发
自定义权限拦截器
配置信息
这样就完成了权限的控制
我好想你。