嗨,我对 Spring 很陌生。我的项目涉及spring+hibernate+jsp。我非常担心交给我的任务
任务:
我想在会话中存储一个jsp文本框值,然后在步骤之后我想在spring控制器中检索它以继续数据库过程......请帮助我。
嗨,我对 Spring 很陌生。我的项目涉及spring+hibernate+jsp。我非常担心交给我的任务
任务:
我想在会话中存储一个jsp文本框值,然后在步骤之后我想在spring控制器中检索它以继续数据库过程......请帮助我。
在jsp中:
<c:set var="name" value="yourname" scope="session" />
在春天
ServletRequestAttributes attr = (ServletRequestAttributes)
RequestContextHolder.currentRequestAttributes();
HttpSession session = attr.getRequest().getSession();
session.getAttribute("name");
如果您想使用 Spring 项目进行 4 步注册过程,我建议您查看 Spring Web Flow。您可以在此处找到示例教程,并在 stackoverflow 和网络上进行搜索。它用于完全按照您的意愿行事。
否则,您需要将@SessionAttributes 添加到您的控制器并声明@ModelAttributes。这是一个例子:
@SessionAttributes({"oneDto","secondDto", [...as many as you want...]})
public class MyController {
[...Declaration and init of forms and modelAttributes...]
@RequestMapping(method = RequestMethod.POST)
public String processFirstPage(
@ModelAttribute("oneDto") OneDto infoFromFirstPage,
BindingResult result, SessionStatus status) {
[...Do whatever you need...]
//return form success view
return "secondPageView"; //uses secondDto
}
@RequestMapping(method = RequestMethod.POST)
public String processSecondPage(
@ModelAttribute("oneDto") OneDto infoFromFirstPage, @ModelAttribute("secondDto") SecondDto infoFromSecondPage
BindingResult result, SessionStatus status) {
[...Do whatever you need...]
//return form success view
return "thirdPageView";
}
}
从 JSP 的角度来看,dto 在表单的“modelAttribute”中声明,所有字段都在输入、选择等路径中:
<form:form method="post" modelAttribute="oneDto" action="matchResquestMappingURL" enctype="application/x-www-form-urlencoded">
<form:input path="oneField"/>
etc.
您不必使用多个 DTO,您可以使用同一个并在每个页面上添加更多信息。使用完数据后,请致电status.setComplete();
清理会话。
这只是您理解该概念的基础,但还有许多其他方法可以解决此问题。例如,您可以在这里查看。(多页表格)