获取请求参数
2015-08-05 21:35
169 查看
获取jsp页面中提交的参数:
1、先定义好jsp页面的目标action
2、定义好method(牵涉到编码问题)
3、关于请求内容
3.1、请求内容是普通的字段(不存在级联)
3.2、存在级联(牵涉到ognl表达式)
3.3、数组内容
3.4、日期类型(这里不做详细论述)
1、jsp页面中的目标action:
注意这里的action,是给浏览器用的,所以要写全目标Uri,此时El表达式还是适用,并且“/”在这里不代表整个应用,那么应该使用
2、关于method:
这里一般表单页面,都是使用post方法,应为get方法 在地址栏中有大小限制,详细参见javaWeb的基础知识点:get/post的区别;另外,在struts2-2.1.6版本之前使用post/get方法还要进行重新编码,否则用户提交的中文数据也会乱码,这种情况,使用全站中文编码过滤器可以解决,这里有个问题就是过滤器的配置一定要在struts2的核心过滤器之前,如果在核心过滤器之后,那么一切的过滤都错过了时机。
3、获取的请求内容
3.1、是普通的字段(不存在级联):
使用struts2框架获取用户输入的数据,所获取的数据对应的字段名称要与目标动作类中对应class的setter方法中的名字要有对应,而不是其字段名。即我在表单中定义一个输入域的name=”name”,表单的
那么我要获取到用户输入的name这个字段的值,框架要先到struts.xml中找到名称空间为/names1的action:addOrder。然后再找到这个action对应的class:
然后到相应的class中找到:
注意:这里获取所有的字段属性,都是框架使用内省技术先通过相应的setter方法来设置的!
3.2、存在级联的字段:
级联的意思就是,我要找的那个属性,它代表的不是一个字段,而是一对象,在这个对象里面还有我需要读取到的值,在这里我用省份和城市作为例子,我在表单中我定义了省份和城市的输入域,我在设置名字时是这样 的:
如果我这样做了,首先说明,我在目标action对应的目标class中,设置有这样一个对象:
然后我肯定还设置了这个对象的getter和setter方法(这点很重要,如果这一步没有做,就读取不到,因为在设置的时候都设置不进去,拿什么来get?)
然后显而易见的是在对应的对象中,肯定有省份和城市这2个字段以及相应的getter&setter方法!
那么我输出数据的时候是在哪里输出的呢?
还是在目标class里面,因为province和city都是他们属性的属性(这个就叫级联),可以在里面直接获取。
注意:关于对象的问题-除了数组对象,其他的框架都会利用反射技术,在设置其中的属性之前创建一个新的对象!数组则不行,看下面。
3.3、获取数组内容
我拿爱好来做例子,每一个人的爱好可能有很多,所以,我们用checkbox来代表爱好,列出对我们网站需要了解的信息作为选项,这里我只用了睡觉、吃饭、阅读 - - || _or2 关于它们相关的定义如下:
他们是以数组的形式传到相关的类中的,所以在目标类中我们定义的也是字符串数组,然后还是借助setter方法设置值,然后读取,就没套路啦,便利读取~~
3.4、日期类型:
这里涉及到类型转换器,暂时不讨论!(但是基本数据类型能够进行自动转换,date不可以,struts默认的是yyyy-MM-dd,遇到其他类型的就需要类型转换器)
比如我们使用到的Id,在类中我们定义的是
在表单中我们定义的是:
但是最后还是能获取到用户输入的Id数据。
1、先定义好jsp页面的目标action
2、定义好method(牵涉到编码问题)
3、关于请求内容
3.1、请求内容是普通的字段(不存在级联)
3.2、存在级联(牵涉到ognl表达式)
3.3、数组内容
3.4、日期类型(这里不做详细论述)
1、jsp页面中的目标action:
注意这里的action,是给浏览器用的,所以要写全目标Uri,此时El表达式还是适用,并且“/”在这里不代表整个应用,那么应该使用
${pageContext.request.contextPath}/namespace/targetActoin
2、关于method:
这里一般表单页面,都是使用post方法,应为get方法 在地址栏中有大小限制,详细参见javaWeb的基础知识点:get/post的区别;另外,在struts2-2.1.6版本之前使用post/get方法还要进行重新编码,否则用户提交的中文数据也会乱码,这种情况,使用全站中文编码过滤器可以解决,这里有个问题就是过滤器的配置一定要在struts2的核心过滤器之前,如果在核心过滤器之后,那么一切的过滤都错过了时机。
3、获取的请求内容
3.1、是普通的字段(不存在级联):
使用struts2框架获取用户输入的数据,所获取的数据对应的字段名称要与目标动作类中对应class的setter方法中的名字要有对应,而不是其字段名。即我在表单中定义一个输入域的name=”name”,表单的
action="${pageContext.request.contextPath}/names1/addOrder.action"
那么我要获取到用户输入的name这个字段的值,框架要先到struts.xml中找到名称空间为/names1的action:addOrder。然后再找到这个action对应的class:
class="cn.anasel.domain.Order"
然后到相应的class中找到:
public void setName(String name) { this.name = name; }
注意:这里获取所有的字段属性,都是框架使用内省技术先通过相应的setter方法来设置的!
3.2、存在级联的字段:
级联的意思就是,我要找的那个属性,它代表的不是一个字段,而是一对象,在这个对象里面还有我需要读取到的值,在这里我用省份和城市作为例子,我在表单中我定义了省份和城市的输入域,我在设置名字时是这样 的:
<input type="text" name="address.province"/> <input type="text" name="address.city"/>
如果我这样做了,首先说明,我在目标action对应的目标class中,设置有这样一个对象:
private Address address;
然后我肯定还设置了这个对象的getter和setter方法(这点很重要,如果这一步没有做,就读取不到,因为在设置的时候都设置不进去,拿什么来get?)
public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }
然后显而易见的是在对应的对象中,肯定有省份和城市这2个字段以及相应的getter&setter方法!
private String province; private String city; public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; }
那么我输出数据的时候是在哪里输出的呢?
还是在目标class里面,因为province和city都是他们属性的属性(这个就叫级联),可以在里面直接获取。
注意:关于对象的问题-除了数组对象,其他的框架都会利用反射技术,在设置其中的属性之前创建一个新的对象!数组则不行,看下面。
3.3、获取数组内容
我拿爱好来做例子,每一个人的爱好可能有很多,所以,我们用checkbox来代表爱好,列出对我们网站需要了解的信息作为选项,这里我只用了睡觉、吃饭、阅读 - - || _or2 关于它们相关的定义如下:
<tr> <td>爱好:</td> <td> <input type="checkbox" name="hobbys" value="睡觉"/>睡觉 <input type="checkbox" name="hobbys" value="吃饭"/>吃饭 <input type="checkbox" name="hobbys" value="看书"/>看书 </td> </tr>
他们是以数组的形式传到相关的类中的,所以在目标类中我们定义的也是字符串数组,然后还是借助setter方法设置值,然后读取,就没套路啦,便利读取~~
3.4、日期类型:
这里涉及到类型转换器,暂时不讨论!(但是基本数据类型能够进行自动转换,date不可以,struts默认的是yyyy-MM-dd,遇到其他类型的就需要类型转换器)
比如我们使用到的Id,在类中我们定义的是
private Integer id;
在表单中我们定义的是:
<tr> <td>id:</td> <td> <input type="text" name="id"/> </td> </tr>
但是最后还是能获取到用户输入的Id数据。
相关文章推荐
- struts2 jquery 打造无限层次的树
- ajax交互Struts2的action(客户端/服务器端)
- struts2 spring整合fieldError问题
- Struts2的s:radio标签使用及用jquery添加change事件
- struts2 中文乱码的解决办法分享
- Struts2访问servlet分享
- struts2单个文件上传的两种实现方式
- struts2+jquery实现ajax登陆实例详解
- struts2中一个表单中提交多个请求的例子(多个提交按钮)
- Java(基于Struts2) 分页实现代码
- 从搭建Struts2 开发环境说起
- JAVA+Struts2获取服务器地址的方法
- 使用maven+eclipse搭建struts2开发环境
- 关于国际化、OGNL表达式语言
- 在Struts2中如何将父类属性序列化为JSON格式的解决方法
- 在Struts2中的结果集类型
- 关于Struts2的类型转换详解
- 搭建EXTJS和STRUTS2框架(ext和struts2简单实例)
- 关于Struts2文件上传与自定义拦截器
- JavaWeb中struts2实现文件上传下载功能实例解析