SpringMVC中使用bean来接收form表单提交的参数时的注意点

本文详述了在SpringMVC中使用bean接收表单数据的必要条件,包括POJO需具备默认构造函数及setter方法,解释了后台如何通过setter方法填充bean对象的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是前辈们对于SpringMVC接收表单数据记录下来的总结经验:

下面是我自己在使用时发现的,前辈们没有记录的细节和注意点:

使用bean来接收form表单提交的参数时,pojo中必须含有默认的(即空的)构造函数,同时,需要设置到bean中的变量必须有setter方法。

注:以下代码均为示例代码,非本人实际运行代码,请自行补充。

例如:我有一个bean类是User,具有变量username和password。同时,表单提交的内容为:

<form action="save-user-info" method="post">
    <span>帐号:</span><input type="text" name="username"><br>
    <span>密码:</span><input type="text" name="password"><br>
    <input type="submit" value="保存">
</form>

那么,在User.java文件中必须具有

public User {}

public void setUsername(String username) {
    this.username = username;
}

public void setPassword(String password) {
    this.password = password;
}

此时,我在Controller中才能成功接收到参数并生成对应的bean对象

@RequestMapping(value="/save-user-info")
public String saveUser(SsbiUser user) {
    System.out.println(user.toString);
    return "user-info";
}

通过一些测试,我把这个过程理解为,前台提交了一个包含User数据的form表单后,后台接受到参数后,首先会生成一个不包含任何参数的User对象,然后通过setter方法往这个空的对象这设置对应的值,最终得到我们需要的User对象。

而不是我一开始以为的,后台接受到参数以及直接调用对应的User(username, password)构造方法生成需要的对象。

--------------------- 本文来自 师太,老衲把持不住了 的优快云 博客 ,全文地址请点击:https://blog.youkuaiyun.com/u011277123/article/details/71195173?utm_source=copy

### 实现表单提交后的重定向 在Spring MVC应用程序中处理表单提交后进行重定向可以有效防止重复提交问题。通过采用“Post/Redirect/Get”设计模式,可以在用户提交数据之后将其重定向到另一个页面,从而避免刷新浏览器再次触发相同的POST请求[^1]。 #### 使用`RedirectView` 为了完成这一过程,在控制器方法返回视图名之前创建并配置一个`RedirectView`实例来指定目标URL。这可以通过直接返回字符串形式的目标路径或者构建具体的`RedirectView`对象两种方式达成目的。下面是一个简单的例子展示如何利用`RedirectView`来进行重定向操作: ```java import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.view.RedirectView; @Controller public class FormController { @RequestMapping(value="/submitForm", method=RequestMethod.POST) public RedirectView submit(ModelMap model) { // 处理业务逻辑... String redirectUrl = "/successPage"; RedirectView redirectView = new RedirectView(redirectUrl); return redirectView; } } ``` 上述代码片段展示了当接收到HTTP POST请求至`/submitForm`端,会先执行相应的业务逻辑(此处省略),随后构造一个新的`RedirectView`并将之作为响应返回给客户端,指示其访问新的资源位置即成功页面 `/successPage`[^2]。 另外一种更简洁的方式是直接返回重定向地址字符串: ```java @RequestMapping(value="/submitForm", method=RequestMethod.POST) public String submit() { // 执行必要的业务流程... return "redirect:/successPage"; } ``` 这种方式同样实现了相同的功能,但是更加直观易读。对于大多数场景而言,推荐使用这种更为简便的方法除非有特殊需求需要自定义`RedirectView`的行为。 #### 应用程序组件注解说明 在整个应用架构层面来看,不同的Java类扮演着各自的角色以支持整个Web层的工作流。例如,`@Controller`用于标记负责接收HTTP请求并与前端交互的服务类;而像`@Service`, `@Repository`这样的注解则分别用来标识服务层和持久化层中的Bean。这些注解有助于清晰划分职责边界,并促进依赖注入机制的有效运作[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值