Java课题笔记~ 数据提交的方式

前四种数据注入的方式,会自动进行类型转换。但无法自动转换日期类型。

(1)单个数据(基本数据类型)注入

在方法中声明一个和表单提交的参数名称相同的参数,由框架按照名称直接注入。

 

(2)对象封装注入

在方法中声明一个自定义的实体类参数,框架调用实体类中相应的setter方法注入属性值,只要保证实体类中成员变量的名称与提交请求的name属性值一致即可。

 

实体Bean含对象属性

比如:Student对象,其中有一个Address的对象属性,在Address对象中有country和city两个基本类型的属性。

<form action="${pageContext.request.contextPath}/objectParam" method="post">
        <fieldset>
            <legend>对象数据提交</legend>
            姓名:<input type="text" name="stuname" /> <br />
            年龄:<input type="text" name="stuage" /> <br />
            国家:<input type="text" name="address.country" /> <br />
            城市:<input type="text" name="address.city" /> <br />
            <input type="submit" value="提交">
        </fieldset>
 </form>

(3)动态占位符提交/路径变量(仅用于超链接)

使用框架提供的一个注解@PathVariable,将请求url中的值作为参数进行提取,只能是超链接。restful风格下的数据提取方式。

restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。

它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

RESTful风格是把请求参数变为请求路径的一种编程风格。通过路径变量的使用,可以实现RESTful风格的编程。

中文乱码:

由于tomcat默认使用ISO-8859-1对接收的文本编码,因此要获得正确中文有两种解决方式:

  1. 自己转码

使用如下转码方式。先把name以ISO-8859-1再编码,还原成字节数组,再用UTF-8进行解码,即可获得正确中文。

String newName=new String(name.getBytes("ISO-8859-1"),"UTF-8");
  1. 修改tomcat | conf | server.xml

在server.xml的Connect中添加URIEncoding="utf-8",这样默认就是用utf-8解码了,参数绑定中文也可以正确显示:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" URIEncoding="utf-8"/>

另,web.xml配置的filter只对post请求有效,因此对此问题不是解决之道。

(4)请求参数名称与形参名称不一致

请求与形参中的名字不对应,可以使用

@RequestParam(value="name1",required=true) String namea来进行参数名称绑定。

(5)数组类型的请求参数

@RequestMapping("/arrayParam")
public String arrayParam(String[] hobby){
    System.out.println("我的爱好:");
    for(String s:hobby){
    	System.out.println(s);
    }
    return "main";
}

(6)使用HttpServletRequest对象提取

在方法参数中声明一个request对象,使用request的getParameter()获取表单提交的数据,这样得到的数据还要手工进行数据类型的转换。

public String five(HttpServletRequest request){
    int age=new Integer(request.getParameter("stuage"));
    String name=request.getParameter("stuname");
    System.out.println(age+"*********"+name);
    return "main";
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肉肉肉肉肉肉~丸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值