我在Spring上配置了一个Controller,我必须通过它来进行数据库连接以调用DAO操作。
这个连接实际上是在一个会话变量中可用的,由于它不是HttpServlet继承的,因此无法访问Spring Controller。
此Controller访问会话变量的正确方法是什么?我必须实现从HttpServlet继承的方法doGet和doPost,以便操作请求对象吗?可以在课堂上敲响Spring控制吗?
感谢您的回复。
@Controller
public class SpringController {
@RequestMapping("/create")
public String form(MyCar myCar) {
/*That's where I have to retrieve hibernateSession from
* HttpSession and pass to DAO class do its work.
*/
MyCarDAO myCarDao = new MyCarDAO(session);
myCarDao.saveOrUpdate(myCar);
return "WEB-INF/views/projeto/novo.jsp";
}
}
答案 0 :(得分:0)
假设您声明了3个会话属性,但在处理程序方法参数中只使用其中一个,因此:
@SessionAttributes({ "abc", "def", "ghi" })
public class BindingTestController {
@ModelAttribute("abc")
public String createABC() {
return "abc";
}
@RequestMapping(method = RequestMethod.GET)
public void onGet(@ModelAttribute("abc") String something) {
// do nothing :)
}
@RequestMapping(method = RequestMethod.POST)
public void onPost(@ModelAttribute("abc") String something, BindingResult bindingResult, SessionStatus sessionStatus) {
sessionStatus.setComplete();
}
}
如果在谷歌中点击它有很多例子
答案 1 :(得分:0)
您可以在方法中添加HttpSession
参数:
@RequestMapping("/create")
public String form(MyCar myCar, HttpSession session) {
...
}
Spring会在调用方法时自动添加session
参数。
查看RequestMapping的文档以获取可能的参数
答案 2 :(得分:0)
IMO正确的方法应该是将连接存储在会话范围的bean中而不是会话变量中。
使用 @Scope(value =“session”)
(参见http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html)