SSH2注入SessionFactory 空指针
来源:互联网 发布:windows gcc下载 编辑:程序博客网 时间:2024/06/06 02:04
最近用Spring+Hibernate+Struts2(SSH2)做项目
- Action:存在Struts2的Action处理类;
- Dao:一些与数据库打交道的接口;
- Dao.Impl:Dao的实现类;
- Service:Action依赖其调用Dao;
- Service.Impl:Service的实现类;
- Validation:用于验证。
现在弄用户注册:
Action.UserAction.java
package Action;import java.io.PrintWriter;import javax.annotation.Resource;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import Bean.UserBean;import Service.UserService;import Validation.Validator;import com.google.gson.Gson;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implements ModelDriven<UserBean>{@Resource private UserService service;private UserBean user = new UserBean();private String validateCode = "";//接收用户从浏览器传过来的验证码@Override public UserBean getModel(){return user;}public String regUser() throws Exception{if(Validator.validateCode(validateCode)){//验证码正确if(!Validator.userIsExist(user.getUsername())){//用户不存在service.saveUser(user);return null;}message = "该用户已存在";}else{message = "验证码错误";}Gson gson = new Gson();message = gson.toJson(message);HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("text/json; charset=utf-8");response.setHeader("cache-control", "no-cache");PrintWriter out = response.getWriter();out.write(message);out.flush();out.close();return null;}}
Dao.Impl.UserDaoImpl.java
package Dao.Impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Propagation;import org.springframework.transaction.annotation.Transactional;import Bean.UserBean;import Dao.UserDao;@Transactional@Repository("userDao")public class UserDaoImpl implements UserDao{@Resource private SessionFactory session;@Overridepublic boolean userIsExist(String username){UserBean user = (UserBean)session.getCurrentSession().createQuery("from UserBean where username=?").setParameter(0, username).uniqueResult();if(null != user){//用户存在return true;}return false;}}
Service.Impl.UserServiceImpl.javapackage Service.Impl;import javax.annotation.Resource;import org.springframework.stereotype.Service;import Dao.UserDao;import Service.UserService;@Service("userService")public class UserServiceImpl implements UserService{@Resource private UserDao userDao;@Overridepublic boolean userIsExist(String username){return userDao.userIsExist(username);}}
Validation.Validator.javapackage Validation;import java.util.Map;import Service.UserService;import Service.Impl.UserServiceImpl;import com.opensymphony.xwork2.ActionContext;public class Validator{public static boolean validateCode(String validateCode){Map<String, Object> session = ActionContext.getContext().getSession();if(validateCode.toLowerCase().equals(session.get("randomImg"))){return true;}return false;}//验证用户名是否存在public static boolean userIsExist(String username){UserService userService = new UserServiceImpl();if(userService.userIsExist(username)){//用户存在return true;}return false;}}
1、我用浏览器测试了一下,发现在Dao.Impl.UserDaoImpl.java中的SessionFactory注入不进去,报空指针错误。2、然后我测试了一下Dao.Impl.UserDaoImpl.java中的其他方法,发现SessionFactory没有问题;那么说通过Struts使用是没有问题的。
3、然后我又不试图直接通过service调用userIsExist(String username)验证,跳过Validator.java,发现SessionFactory竟然注入成功!
那么说明在Validation.Validator.java这里卡住了,那我只能通过第三步去实现了。
- SSH2注入SessionFactory 空指针
- Spring注入SessionFactory的空指针异常
- Spring注入SessionFactory的空指针异常
- Spring注入SessionFactory的空指针异常
- SSH2中struts注入service空指针解决方法
- SSH2 DAO注入sessionfactory的方式汇总
- SSH2 DAO注入sessionfactory的方式汇总
- sessionFactory为空之spring依赖注入
- Hibernate4与spring3 sessionFactory().getCurrentSession() 空指针
- @Autowired注入空指针
- SpringMVC自动注入空指针
- SSH2框架中自定义Util类空指针错误
- Hibernate--Session session = sessionFactory.getCurrentSession()空指针异常
- JSF+Spring注入空指针异常
- 注入为什么会空指针异常
- spring 项目多线程 依赖注入 空指针
- 【Spring】Service 注入失败,空指针
- filter注入service报空指针
- 树状数组-简单题(HDU1166)
- 一维和二维傅里叶变换的CPP代码
- jquery
- hdu 1233 最小生成树 "还是畅通工程"
- 哈夫曼树
- SSH2注入SessionFactory 空指针
- 计算任意两个数之间1出现的次数的思维过程
- [JavaScript][图形图像]图形图像动画处理利器推荐--raphael.js (付:流程设计器例子)
- C++结构体实例和类实例的初始化
- C++的显示转换
- C/C++中枚举类型(enum)的使用解惑
- 完了,来csdn这么久了,竟然不会发帖子!
- Ogre角色控制类(源码)
- Policy-based design