我想自己处理请求和会话属性,而不是将其留给spring @SessionAttributes
,例如登录cookie处理.
我只是无法弄清楚如何HttpRequest
在控制器中访问from,我需要一种方法去上面一层@RequestAttribute
并访问它HttpRequest
自己.使用Stripes来实现ApplicationContext
和调用getAttribute()
.
此外,传递HttpServletRequest
as参数似乎不起作用:
@RequestMapping(value="/") public String home(HttpServletRequest request){
System.out.println(""+request.getSession().getCreationTime());
return "home";
}
Run Code Online (Sandbox Code Playgroud)
上述方法不打印任何内容.
你对此有什么建议吗?
有人可以解释每个连接的每个请求和线程的线程是什么?servlet工作的模型是什么?如何分配线程来处理HTTP请求?是线程/请求还是连接?
让我们说如果我想在我Servlet
的doGet()
方法中异步执行一个耗时的任务,我会使用Java执行程序启动一个新线程,以便在一个单独的线程中完成冗长的计算,并立即发送响应.
现在这样做是否确保我已经释放了处理我的线程,HttpServletRequest
或者它仍然被使用,因为子线程仍在运行?
Spring-MVC单例中的所有控制器是否都在不同的会话和请求之间共享?
如果是这样,我假设一个类变量就好
public String name;
Run Code Online (Sandbox Code Playgroud)
对于所有请求和会话都是一样的吗?因此,如果用户X发出请求并且name
正在设置为Paul,则用户Z还将Paul作为属性?
在我的情况下,我不希望这种行为,但想知道是否有一个更简单,或更清洁的OOP方式,以获得会话/请求变量然后session.getAttribute()
/request.getAttribute()
我无法确定使用调度程序servlet在spring mvc中仅创建了一个bean对象,还是对每个请求都创建了一个新对象?
控制器代码:-
在代码中,我将在LoginBean对象中设置数据,并在方法abc中将其设置在modelandview对象中。
然后在jsp中我没有输入usename的任何值,在这种情况下,当我提交表单并且调用处理程序方法(initform)时,我试图打印的是相同的lb.getusername,这不会重现我的任何值。无法理解这个概念。
@Controller
public class LoginController{
ModelAndView mv=null;
EmployeeBean e=new EmployeeBean();
AutoBean autobean;
@Autowired
public LoginController(AutoBean autobean){
System.out.println("autobean");
this.autobean=autobean;
}
@RequestMapping(value="/login")
public ModelAndView abc(){
System.out.println("here");
System.out.println("here1");
LoginBean lb=new LoginBean();
lb.setUsename("ankita");//setting value
return new ModelAndView("login","loginbean",lb);
}
@RequestMapping(value="/abc1",method=RequestMethod.POST)
public ModelAndView initform(@ModelAttribute("loginbean")LoginBean lb,BindingResult result,Model model){
System.out.println("*****"+result.getErrorCount());
System.out.println("hello");
autobean.setName("yayme");
System.out.println(autobean.getName());
model.addAttribute("autobean", autobean);
System.out.println("username"+lb.getUsename());// query??
if(lb.getPassword().equals("ankita"))
/*{
mv=new ModelAndView();
e.setId("1001");
e.setName("ankita");
mv.addObject("employee", e);
mv.addObject("emp", new Emp());
mv.setViewName("success");
return mv;
}*/
return new ModelAndView("success","emp",new Emp());
else
return new ModelAndView("fail","lb1",lb);
}
Run Code Online (Sandbox Code Playgroud)
login.jsp
<form:form action="abc1" …
Run Code Online (Sandbox Code Playgroud) spring-mvc ×3
java ×2
spring ×2
httprequest ×1
httpsession ×1
java-ee ×1
servlets ×1
threadpool ×1