简单做了一下登陆功能,用S1SH做的,但是登陆输入正确的用户名密码的时候,出现空指针 sql语句 Hibernate: select users0_.id as col_0_0_ from users users0_ where users0_.UserName is null
代码如下:
UsersDAOImpl中的方法
public boolean CheckLogin(Users user) {
Users user1 = null;
if(user!=null){
session = DBUtils.getSession();
hql = "select u from Users u where UserName ="+user.getUserName();
}
try {
query = session.createQuery(hql);
iterator = query.iterate();
while(iterator.hasNext()){
user1 = (Users)iterator.next();
}
} catch (HibernateException e) {
e.printStackTrace();
}
boolean isExist = false;
if(user1!=null){
isExist = true;
}
return isExist;
}
UserBiz中调用 package com.leeyas.Biz;import com.leeyas.DAO.UsersDAO;
import com.leeyas.pojo.Users;public class UsersBiz { //实例化DAO层实体
private UsersDAO userDAO;
public UsersDAO getUserDAO() {
return userDAO;
} public void setUserDAO(UsersDAO userDAO) {
this.userDAO = userDAO;
} //调用Dao层的验证用户登陆的方法
public boolean checUser(Users user){
return userDAO.CheckLogin(user);
}
}action中调用usersbizpackage com.leeyas.actions;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.leeyas.Biz.UsersBiz;
import com.leeyas.forms.UsersForm;
import com.leeyas.pojo.Users;public class UsersAction extends Action {
private UsersBiz usersbiz ; public UsersBiz getUsersbiz() {
return usersbiz;
} public void setUsersbiz(UsersBiz usersbiz) {
this.usersbiz = usersbiz;
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UsersForm uf = (UsersForm)form;
Users user = new Users();
user.setUserName(uf.getUserName());
user.setPassword(uf.getPassword());
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersBiz userbiz = (UsersBiz)bf.getBean("UsersBiz");
if(userbiz.checUser(user)){
HttpSession session = request.getSession();
session.setAttribute("User", user);
return mapping.findForward("success");
}
request.setAttribute("error", "用户名密码错误");
return mapping.findForward("login");
}
}applicationcontext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- DAO -->
<bean id="Userdao" name="Userdao" class="com.leeyas.DAO.UsersDAOImpl"/>
<!-- Biz -->
<bean id="UsersBiz" class="com.leeyas.Biz.UsersBiz">
<property name="userDAO">
<ref bean="Userdao"/>
</property>
</bean>
<!-- Action -->
<bean id="UsersAction" name="/UsersAction"
class="com.leeyas.actions.UsersAction">
<property name="usersbiz">
<ref bean="UsersBiz" />
</property>
</bean>
</beans>
代码如下:
UsersDAOImpl中的方法
public boolean CheckLogin(Users user) {
Users user1 = null;
if(user!=null){
session = DBUtils.getSession();
hql = "select u from Users u where UserName ="+user.getUserName();
}
try {
query = session.createQuery(hql);
iterator = query.iterate();
while(iterator.hasNext()){
user1 = (Users)iterator.next();
}
} catch (HibernateException e) {
e.printStackTrace();
}
boolean isExist = false;
if(user1!=null){
isExist = true;
}
return isExist;
}
UserBiz中调用 package com.leeyas.Biz;import com.leeyas.DAO.UsersDAO;
import com.leeyas.pojo.Users;public class UsersBiz { //实例化DAO层实体
private UsersDAO userDAO;
public UsersDAO getUserDAO() {
return userDAO;
} public void setUserDAO(UsersDAO userDAO) {
this.userDAO = userDAO;
} //调用Dao层的验证用户登陆的方法
public boolean checUser(Users user){
return userDAO.CheckLogin(user);
}
}action中调用usersbizpackage com.leeyas.actions;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.leeyas.Biz.UsersBiz;
import com.leeyas.forms.UsersForm;
import com.leeyas.pojo.Users;public class UsersAction extends Action {
private UsersBiz usersbiz ; public UsersBiz getUsersbiz() {
return usersbiz;
} public void setUsersbiz(UsersBiz usersbiz) {
this.usersbiz = usersbiz;
} public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UsersForm uf = (UsersForm)form;
Users user = new Users();
user.setUserName(uf.getUserName());
user.setPassword(uf.getPassword());
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersBiz userbiz = (UsersBiz)bf.getBean("UsersBiz");
if(userbiz.checUser(user)){
HttpSession session = request.getSession();
session.setAttribute("User", user);
return mapping.findForward("success");
}
request.setAttribute("error", "用户名密码错误");
return mapping.findForward("login");
}
}applicationcontext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- DAO -->
<bean id="Userdao" name="Userdao" class="com.leeyas.DAO.UsersDAOImpl"/>
<!-- Biz -->
<bean id="UsersBiz" class="com.leeyas.Biz.UsersBiz">
<property name="userDAO">
<ref bean="Userdao"/>
</property>
</bean>
<!-- Action -->
<bean id="UsersAction" name="/UsersAction"
class="com.leeyas.actions.UsersAction">
<property name="usersbiz">
<ref bean="UsersBiz" />
</property>
</bean>
</beans>
解决方案 »
- javax.servlet.UnavailableException如何解决
- 如何用java制作一个复制文件的小工具
- 如何做jsp+javabean+servlet+oracle的查询
- jsp里面有一组名字相同的按钮 在javasrcipt怎么判断是点击的哪个??
- 目前 java支持rest风格 使用最广泛的开源框架是什么?
- 关于servlet 和action 中的获取seession中的属性的 问题;
- 请问这段script怎么理解?
- java web 开发 遇到的js问题
- 线上tomcat突然自动关闭疑问
- 解压用户上传的zip包(都是图片) 把解压出来的图片上传到服务器
- hibernate和sql2000
- struts hibernate 优势 spring+hibernate+struts优势 如何做出选择呢
dao层
package com.leeyas.DAO;import org.hibernate.Query;import com.leeyas.pojo.Users;public interface UsersDAO {
public void add(Users user);
public Users FindByID(int id);
public Query find(Users user);
public boolean delete(Users user);
public boolean update(int id,Users user);
public Users CheckLogin(Users user);}
package com.leeyas.forms;import org.apache.struts.action.ActionForm;import com.leeyas.pojo.Users;public class UsersForm extends ActionForm { private Users user = new Users();
public Users getUser() {
return user;
} public void setUser(Users user) {
this.user = user;
}
}
不知道你的user.setUserName(uf.getUserName()); 是怎么得来的