"这篇教程主要讲解了如何配置Struts2框架中的struts.xml文件以及在Struts2中使用标签库来处理用户输入和错误信息。此外,还提到了Struts2框架的一些核心概念和优势,包括其无侵入式设计、拦截器、类型转换器、多视图支持和输入验证等功能。"
在Struts2框架中,`struts.xml`文件是配置的核心,用于定义应用的行为和结构。在这个例子中,我们看到一个名为`aa`的包被配置,它的命名空间是`/test`,这意味着所有在这个命名空间下的请求都会被这个包处理。`extends="struts-default"`表示该包继承自默认的Struts配置,这样可以获得基础的Struts行为。
`action`元素定义了一个名为`login*`的动作,这里的星号通配符表示所有以`login`开头的请求都将映射到`com.cn.PersonAction`类,并调用与请求匹配的方法。例如,`login`、`loginUpdate`等都会被处理。`method="{1}"`意味着请求的剩余部分将作为方法名,如果没有,则默认调用`execute`方法。
`result`元素定义了动作执行后的结果页面。`name="input"`表示如果验证失败或者有错误,用户会被重定向到`/index.jsp`,而`name="success"`表示当操作成功时,用户会被转发到`/success.jsp`。
在`login.jsp`中,使用了Struts2的标签库 `<%@taglib uri="/struts-tags" prefix="s"%>`,这允许在JSP页面中使用Struts2的标签。`<s:fielderror>` 用于显示全局错误信息,而 `<s:fielderror><s:param>username</s:param></s:fielderror>` 和 `<s:fielderror><s:param>mobile</s:param></s:fielderror>` 则用于显示特定字段的错误信息。
Struts2框架是一个强大的MVC框架,它的出现是对Struts1的改进和增强。相比于Struts1,Struts2有以下优势:
1. **无侵入式设计**:Struts2的应用程序可以独立于Servlet API和Struts API,这提高了代码的可维护性和可测试性。
2. **拦截器机制**:通过拦截器,可以实现如权限验证、日志记录等功能,提供了AOP编程的支持。
3. **类型转换**:Struts2内置了类型转换器,自动将请求参数转换为所需的类型,避免了手动转换的繁琐工作。
4. **多视图支持**:除了JSP,Struts2还支持FreeMarker、Velocity等模板技术,提供了更灵活的视图选择。
5. **输入验证**:Struts2的验证机制可以针对特定方法进行,提高了验证的灵活性和效率。
6. **国际化**:Struts2支持全球化,可以在全局、包和Action级别管理国际化的资源文件。
从Struts1到Struts2的升级,关键变化之一是控制器从ActionServlet转变为过滤器,这使得Struts2能更好地与其他过滤器和Servlet容器集成,提供了更高的灵活性。