Action获取表单数据的三种方式
1.使用ActionContext类
查看源码可以知道该类的该方法可以得到一个ActionContext对象,并且它是静态的可以直接调用,它的作用是获得当前线程的ActionContext对象。
我们写个测试类来测试ActionContext如何获取表单数据
现在去struts.xml文件配置一下这个Action
然后去写一个最简单的表单(${pageContext.request.contextPath}是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%>,这样提交的表单才能通过我们action处理 )
现在启动服务器测试一下
提交然后取后台控制台看一下
可以看出确实获得表单的数据内容
2.使用ServletActionContext类获取(这个更加清晰)
源码查看发现该方法可以返回一个HttpServletRequest对象,且是静态方法
同理我们再写一个测试类,
这里会出现一个缺少jar包的情况(IDEA下),此时我们去我们的tomcat安装目录下找到这两个包导入就可以使用HttpServletRequest了
同理配置一下struts.xml
记得jsp页面也要有相应的修改
直接测试结果看看
可以看出这种方式也同样能获取到表单的数据
3.使用接口注入的方式(这个比较麻烦要实现一个ServletRequestAware接口)
同理创建一个测试类
完成各种配置然后运行查看结果
总结如下,三种方式中官方推荐第一种,比较清晰的是第二种,第三种不建议比较麻烦