我不明白在spring mvc中使用dispatcher servlet只创建了一个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);
}
login.jsp
<form:form action="abc1" commandName="loginbean">
username:<form:input path="usename" />
password:<form:password path="password"/>
<input type="submit"/>
</form:form>
请建议?
Spring的应用程序上下文(bean IoC容器,负责管理bean从实例化到销毁的生命周期)包含bean定义。这些定义以及其他属性包含所谓的< code >范围。该范围可以有以下值:
singleton
-在应用程序生存期内只创建一个bean实例 < li>
原型
-每次有人问(< code > application context . get bean(...))为该bean创建一个新实例
您也可以有一些特殊的范围:
请求
-bean生命周期绑定到HTTP请求。session
-bean生命周期绑定到HTTP会话您甚至可以创建自己的范围。bean的默认范围是singleton
。因此,如果您不另行指定,bean是singleton
(每个应用程序的单个实例)。
如果您使用的是组件扫描
,它搜索带有@Component
类注释的类(例如@Controller
),那么这些类会自动注册为应用程序上下文中的bean定义。默认范围也适用于它们。
如果您想更改这些自动注册bean的作用域,您必须使用@scope
注释。如果您对如何使用它感兴趣,请查看它的JavaDoc。
TL;DR您的< code>LoginController是< code>singleton。
问题内容: 我有两个变量“ userId”和“ name”。例如,当我单击“ SHOW USERID”按钮时,它可以正常工作并设置为“ renderUserId = true”,并使用“ render”显示它,但是如果我单击另一个“ SHOW”按钮,则表示Bean处于重建状态并且松动了“ renderUserId = true”,它变为“ false”和“ renderName = true”,因
问题内容: 每个HTTP请求是否在不同的线程中访问相同的servlet对象?还是创建一个新的线程和新的Servlet实例? 问题答案: 如果您的servlet未实现,则容器将使用相同的servlet实例。否则,不能保证击中相同的物体。如果认为必要,容器可以自由创建更多的servlet实例。但是请求来自不同的线程,不一定是新创建的(如Sanjay所述)。 根据Servlet 3.0规范: 对于未在分
我有一个类,下面的类作为RequestScope bean:
问题内容: 我一直在寻找一种方法,可以在每个请求时重新加载我们的Spring Security UserDetails对象,并且无法在任何地方找到示例。 有人知道该怎么做吗? 基本上,我们希望为每个请求重新加载用户权限,因为该用户权限可能会从Web请求更改为Web请求。 例如,一个已登录并随后被授予新权限的用户(并通过电子邮件被通知他们具有新权限),我知道该用户实际获得该新权限的唯一方法是先注销然
我有一个遗留的Java1.6运行localhostTomcat 7应用程序使用JSP页面,一个带有框架的框架集,javascript,但没有像Struts这样的框架。我使用请求或会话从servlet传递一个对象以在页面中显示,这很好。 然而,我最近做了一些更改,现在我无法从会话或请求中检索到相同的对象。它以前工作得很好,所以我不确定是什么坏了,但我甚至无法将字符串值从JSP返回到servlet。
问题内容: 我正在尝试创建一个表格,其中每一行都是一个表格。我希望每个输入都在不同的表分区中,但是例如,我仍然需要所有所有第一个输入都属于同一个表头,依此类推。 我想做的是一个可编辑的网格 ,或多或少这样: 但是显然我不能以这种方式排列标签(或者w3c验证程序所说的也是如此)。 有什么好办法吗? 问题答案: 如果你想要一个“编辑网格”,即像结构的表格,可以让你做任何行的形式,使用CSS,模仿表标签