初学者易上手的SSH-struts2 02Action获取表单数据-通配符
在上一章中,我们已经搭建好了struts2的一个开发环境,那么这一章就来做一个简单的登录功能,利用action来获取表单数据。以及介绍和使用struts2里面一个重要的东西-通配符。
第一步,在WebContent下面新建一个login.jsp的页面,里面使用form表单实现一个简单的登录页面。
第二步:打开上一章中建好的LoginAction这个类,先在它的默认方法中来获取登录表单的数据。Action获取表单数据有三种方式。
那么第一种:使用ActionContext类:
但是使用这种方法的时候getParameters()可以通过map数据中key获得页面提交的参数名。理论上通过遍历key,可以获取value, (得到页面传来的值)。或者通过map.get("name")得到name参数的值。但是输出看到的却是如,[Ljava.lang.String;@1e630208 。(一个String对象!)所以,那要用这种方法输出name的值,System.out.println(((String[])map.get("name"))[0]); 输出即为传过来的name对应的值。
第二种:ServletActionContext类
.
这个就跟servlet一样,获取到一个HttpServletRequest。
第三种:使用接口注入(不常用),实现接口ServletRequestAware.
这个绕来绕去也是取到了HttpServletRequest。
以上三种方法可以获取到form表单提交的数据。
下面我们介绍以及使用通配符 *。
首先还是以登录为例。
在LoginAction中重新写一个login方法:
在struts.xml中修改配置如下:
到这里肯定有疑问了,为什么name="login_*",method="{1}"? *号就是我们所说的通配符,*可以有多个,method="{1}"代表执行哪个方法,{1}代表第一个*号,例如在页面上提交的地址为login_drop.action,那么*号就代表drop,那么执行的就是drop这个方法。那么为什么要使用通配符?它可以解决多个action地址只跳一个Action的类。
例如我们现在做的登录,使用通配符后,页面的提交地址也要进行改变。
以上就是该章的主要内容