Java 如何从spring-dispatcher-servlet.xml访问SessionFactory到DAO
我正在hibernate的帮助下创建一个SpringWeb应用程序。我已经为所有配置创建了spring-dipatcher-servlet.xml。我想使用hibernate访问数据库,而不用像使用spring一样创建hibernate.cfg.xml文件。我在访问DAO中的会话工厂时遇到空指针异常 以下是我迄今为止所做的工作的片段 ----web.xml---- ---服务--- ---刀---Java 如何从spring-dispatcher-servlet.xml访问SessionFactory到DAO,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我正在hibernate的帮助下创建一个SpringWeb应用程序。我已经为所有配置创建了spring-dipatcher-servlet.xml。我想使用hibernate访问数据库,而不用像使用spring一样创建hibernate.cfg.xml文件。我在访问DAO中的会话工厂时遇到空指针异常 以下是我迄今为止所做的工作的片段 ----web.xml---- ---服务--- ---刀--- @存储库 公共类UserDao实现了IUser{ @自动连线 会话工厂会话工厂; public S
@存储库
公共类UserDao实现了IUser{
@自动连线
会话工厂会话工厂;
public SessionFactory getSessionFactory(){
返回工厂;
}
public void setSessionFactory(SessionFactory SessionFactory){
this.sessionFactory=sessionFactory;
}
@凌驾
公共布尔认证器(用户){
字符串username=user.getUsername();
char[]password=user.getPassword();
System.out.println(用户名+“”+密码);
字符串hql=“来自用户名='username'和密码='password'”所在的用户;
Query Query=getSessionFactory().openSession().createQuery(hql);
列表=新的ArrayList();
list=query.list();
if(list.size()>0&&list!=null){
返回true;
}
返回false;
}
}
我如何解决我的问题,我做错了什么
提前谢谢。非常感谢您的帮助。这里的问题是当前您的dispatcher servlet不知道如何从创建和设置bean
SessionFactory
。(如您所见,您的setSessionFactory位于UserDao类中)
您可能需要在springdispatcherservlet.xml
中声明UserDao
bean
例如:
<bean id="userDAO" class="your.package.nameforUserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
这里的问题是,当前您的dispatcher servlet不知道如何从创建和设置bean
SessionFactory
。(如您所见,您的setSessionFactory位于UserDao类中)
您可能需要在springdispatcherservlet.xml
中声明UserDao
bean
例如:
<bean id="userDAO" class="your.package.nameforUserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
您正在执行新用户服务()
,不要这样做。在控制器中自动连线。您正在执行new UserService()
,不要这样做。在控制器中自动连线。
@Controller
public class QuizMcqController {
UserService userService;
@RequestMapping(value="/welcome.htm")
public ModelAndView redirectToLoginPage(){
ModelAndView modelAndView = new ModelAndView("login");
return modelAndView;
}
@RequestMapping(value="/AuthenticateUser.htm", method = RequestMethod.POST)
public ModelAndView authenticateUser(@RequestParam("username") String username, @RequestParam("password")String password){
userService = new UserService();
boolean flag = userService.authenticate(username,password);
if(flag){
ModelAndView modelAndView = new ModelAndView("login");
return modelAndView;
}
else{
ModelAndView modelAndView = new ModelAndView("wrong");
return modelAndView;
}
}
}
public class UserService {
User user;
UserDao dao;
public boolean authenticate(String username, String password) {
user = new User();
user.setUsername(username);
user.setPassword(password.toCharArray());
if(dao.authenticateUser(user))
{
return true;
}
return false;
}
}
@Repository
public class UserDao implements IUser {
@Autowired
SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public boolean authenticateUser(User user) {
String username = user.getUsername();
char[] password = user.getPassword();
System.out.println(username +" <----> "+password);
String hql = "from User where username='username' and password ='password'";
Query query = getSessionFactory().openSession().createQuery(hql);
List list = new ArrayList();
list = query.list();
if (list.size() > 0 && list != null) {
return true;
}
return false;
}
}
<bean id="userDAO" class="your.package.nameforUserDao">
<property name="sessionFactory" ref="sessionFactory" />
</bean>