1. 结果视图的配置
1.1 result标签
在sturts.xml文件中,Result的配置非常简单,使用
1 | <action name="demo1" class="com.wgy.web.action.Demo1Action" method="demo1"> |
1.2 配置全局结果视图
1.2.1 局部结果视图和全局结果视图
配置在action标签内的result,我们成为局部结果视图,它只能由当前action使用。
而在实际开发中,有很多页面,每个action可能都会用到。比如:success.jsp,error.jsp,login.jsp等等。当我们很多action都用到了login.jsp,在每个action标签中都配置一次,显然是不合理的,这个时候我们就用到了全局结果视图。
1.2.2 配置方式
1 | <!-- 定义一个公共包 |
2. 访问Servlet的API的两种方式
2.1 使用ServletActionContext
1 | /** |
2.2 通过实现接口的方式
1 | /** |
3. 请求参数的封装
3.1 请求参数封装概述
封装请求参数就是把我们通过浏览器发送请求时,要转递给服务器的数据封装到指定的对象中。这个对象一般都是实体类。但是有时就是Action中的一个属性。也就是说,我们封装请求参数时,可以有实体类,也可以没有。同时,我们还需要知道,请求参数的封装和请求方式无关。无论get还是post都可以封装。
3.2 属性驱动
3.2.1 没有实体类
此种情况,我们一般也称为动作类和模型在一起,也就是说我们在action中定义一些私有成员,并且提供它们的公有get/set方法。具体代码如下
动作类:
1 | /** |
jsp页面:
1 | <%--请求参数封装:第一种情况:属性驱动-没有实体类 --%> |
struts.xml:
1 | <action name="demo1" class="com.wgy.web.action.Demo1Action" method="demo1"> |
3.2.2 有实体类
此种情况是,我们有独立的实体类,在action中定义的是实体类对象,并且提供get/set方法。代码如下:
动作类:
1 | /** |
jsp页面:
1 | <%--请求参数封装:第二种情况:属性驱动-有实体类 --%> |
struts.xml:
1 | <action name="demo2" class="com.wgy.web.action.Demo2Action" method="demo2"> |
3.3 模型驱动
在Struts2中,Action处理请求参数还有另外一种方式,叫做模型驱动(ModelDriven)。通过实现ModelDriven接口来接收请求参数。
动作类:
1 | /** |
jsp页面:
1 | <%--请求参数封装:第三种情况:模型驱动 --%> |
struts.xml:
1 | <action name="demo3" class="com.wgy.web.action.Demo3Action" method="demo3"> |
3.4 封装集合数据
在实际的开发中,有些时候我们需要批量插入用户或者批量插入其他的对象,在Action中需要接受到这多个Action中封装的对象,然后传递给业务层。那么这个时候就需要将表单的数据封装到集合中。
3.4.1 封装到List
动作类:
1 | /** |
jsp页面:
1 | <%--请求参数封装:List集合类型的封装 --%> |
struts.xml:
1 | <action name="demo4" class="com.wgy.web.action.Demo4Action" method="demo4"> |
3.4.2 封装到Map
动作类:
1 | /** |
jsp页面:
1 | <%--请求参数封装:Map集合类型的封装 --%> |
struts.xml:
1 | <action name="demo5" class="com.wgy.web.action.Demo5Action" method="demo5"> |
4. 案例:Struts2+Hibernate实现保存删除客户
4.1 Struts2
4.1.1 修改jsp
menu.jsp
1 | <TR> |
add.jsp
1 | <FORM id=form1 name=form1 action="${pageContext.request.contextPath }/customer/addCustomer.action" method=post> |
list.jsp
1 | <SCRIPT language=javascript> |
4.1.2 配置xml并编写Action
struts.xml的配置
1 | <?xml version="1.0" encoding="UTF-8"?> |
动作类
1 | /** |
4.2 Hibernate
4.2.1 编写业务层接口及实现类
1 | /** |
1 | /** |
4.2.2 编写持久层接口及实现类
1 | /** |
1 | /** |
5. 请求参数封装失败后处理办法
5.1 配置input结果视图
视图路径应该是从哪来回哪去
1 | <action name="demo3" class="com.wgy.web.action.Demo3Action" method="demo3"> |
5.2 提示错误信息
引入struts2标签库
1 | <%@ taglib uri="/struts-tags" prefix="s" %> |
1 | <%--请求参数封装:类型转换失败的处理方式 --%> |
5.3 把提交的数据回显回来
html标签和struts2标签都可以实现
1 | <s:form action="demo3"> |
5.4 关于中文提示的问题
I18N : 国际化 Internationalization
同实体类创建.properties文件
1 | 请输入正确的日期格式。正确的格式是:yyyy-MM-dd = |
-------------本文结束感谢您的阅读-------------
本文标题: Struts2(二)
本文链接: https://wgy1993.gitee.io/archives/3f8ac9e0.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)