-
Struts2+Spring+JPA+FREEMARKER 登录程序错误5
一段基于Struts2+Spring+JPA+FREEMARKER登录程序,总是跳出java.lang.NullPointerException错误!
数据结构如下:
create table SYSUSER ( loginid VARCHAR2(20) not null, pwd VARCHAR2(20), )
STRUTS2配置如下:
<action name="userlogin" class="LoginAction"> <result name="loginsuccess" type="freemarker">/WEB-INF/templates/user.ftl</result> <result name="errorlogin" type="freemarker">/WEB-INF/templates/admin/login.ftl</result> </action>
ACTION如下:
import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.ArrayList; import java.util.List; import java.util.Map; import com.office.model.Sysuser; import com.office.service.SysuserService; import com.office.util.ChanageLetter; import com.office.util.MD5; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String loginid; private String pwd; private String checkcode; private Sysuser sysuser; private ArrayList<Sysuser> sysusers; public ArrayList<Sysuser> getSysusers() { return sysusers; } public void setSysusers(ArrayList<Sysuser> sysusers) { this.sysusers = sysusers; } private SysuserService sysuserService; public SysuserService getSysuserService() { return sysuserService; } public void setSysuserService(SysuserService sysuserService) { this.sysuserService = sysuserService; } public String execute() throws Exception{ ActionContext actionContext = ActionContext.getContext(); Map<?, ?> session = actionContext.getSession(); String code = ChanageLetter.chg(session.get("rand").toString()); MD5 md5 = new MD5(); String pwd=md5.getMD5ofStr(this.getPwd()); String um=this.getLoginid(); this.setSysusers(this.sysuserService.find(um, pwd)); System.out.println(this.sysusers); System.out.println(this.sysusers.size()); if(0==this.sysusers.size()){ return "errorlogin"; } else{ return "loginsuccess"; } } public String getLoginid() { return loginid; } public void setLoginid(String loginid) { this.loginid = loginid; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getCheckcode() { return checkcode; } public void setCheckcode(String checkcode) { this.checkcode = checkcode; } }
MODEL如下:
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "SYSUSER", schema = "TEST") public class Sysuser implements java.io.Serializable { private String loginid; private String pwd; @Id @Column(name = "LOGINID", unique = true, nullable = false, length = 20) public String getLoginid() { return this.loginid; } public void setLoginid(String loginid) { this.loginid = loginid; } @Column(name = "PWD", length = 20) public String getPwd() { return this.pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
SERVICE如下:
import java.util.ArrayList; import java.util.List; public interface SysuserService { public void save(Sysuser sysuser); public void delete(Sysuser sysuser); public void update(Sysuser sysuser); public ArrayList<Sysuser> find(final String username, final String password); } import java.util.ArrayList; import java.util.List; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import org.springframework.transaction.annotation.Transactional; @Transactional public class SysuserServiceImpl implements SysuserService { private EntityManager entityManager; public void delete(Sysuser sysuser) { sysuser = entityManager.getReference(Sysuser.class, sysuser.getLoginid()); entityManager.remove(sysuser); } public void save(Sysuser sysuser) { entityManager.persist(sysuser); } public void update(Sysuser sysuser) { entityManager.merge(sysuser); } public ArrayList<Sysuser> find(String username, String password) { String jpql="select u from Sysuser u where u.loginid like :username and u.pwd like :password"; Query query=getEntityManager().createQuery(jpql); query.setParameter("username", username); query.setParameter("password", password); List<Sysuser> list=query.getResultList(); return (ArrayList<Sysuser>) list; } public EntityManager getEntityManager() { return entityManager; } @PersistenceContext public void setEntityManager(EntityManager entityManager) { this.entityManager = entityManager; } }
问题补充:抛出异常:
十二月 04, 2012 6:03:11 下午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at com.office.action.LoginAction.execute(LoginAction.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2012年12月05日 08:03
7个答案 按时间排序 按投票排序
-
采纳的答案
空指针是因为没有实现注入,你使用的JPA首先应该在loginAction上加入注解@Controller
和@Scope(“prototype”),并且action的service童养需要加入注解@Resource(name = "SysuserService "),同时service的实现类上也需要加入注解@Service("SysuserService ")还有事务,你的代码上好像都没有加,所以spring是不会注入的,因此LoginAction中SysuserServiceImpl就是空2012年12月05日 17:26
-
private ArrayList<Sysuser> sysusers = new ArrayList<Sysuser>();ok,应该是该变量为空
2012年12月05日 13:42
-
1、你的action定义时没有写包
2、<action name="userlogin" class="LoginAction"> 因此由struts2直接new的 所以没有享受到spring管理,即没有注入sysuserService
3、改 class="loginAction” 然后在spring中定义2012年12月05日 12:21
-
this.setSysusers(this.sysuserService.find(um, pwd));
先查下um pwd传的是啥值,对应后台数据库能否查到记录2012年12月05日 10:53
相关推荐
Struts2、Spring、Hibernate、JPA、SiteMesh和Log4j是Java Web开发中非常重要的六个组件,它们各自承担着不同的职责,并且在实际项目中经常被整合使用,形成了所谓的"SSH2"(Struts2 + Spring + Hibernate)框架组合...
Spring 2 还包括对数据访问的支持,如 JDBC、Hibernate 和 JPA,以及对 Web 应用程序的支持,通过 Spring MVC 框架可以与 Struts 2 结合使用,提供更灵活的架构。 **JPA(Java Persistence API)** 是 Java 平台上...
1. **Struts2**:Struts2是一个基于MVC设计模式的Web应用框架,用于构建可维护性高、结构清晰的Java应用程序。它提供了强大的拦截器机制,支持多种结果类型,如JSP、FreeMarker等,并且与Ajax集成良好。Struts2的...
Struts2、Hibernate和Spring是Java企业级开发中三大核心框架,它们的组合通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个“Struts2+Hibernate+Spring课件 张志峰版”提供了深入学习这三大框架的宝贵资源...
Struts2、Spring4和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个"struts2+spring4+hibernate4工程搭建源码"提供了使用这三个框架集成开发的示例代码,对于学习...
Struts2、Spring3和Hibernate4是Java Web开发中的三个核心框架,它们分别负责MVC(Model-View-Controller)架构中的控制层、业务层和服务层。本示例结合这三个框架,提供了一种完整的三层架构实现,以提高开发效率和...
Struts 2、Spring 2、JPA 和 AJAX 是四个在企业级 Java 开发中非常重要的技术组件。这篇博文的快速启动文件(quickstart)旨在帮助开发者整合这些技术,构建一个高效、灵活且功能丰富的 Web 应用程序。下面将分别...
在本课程“maven3+struts2+spring3+jpa2重构itcat巴巴运动网(前32讲)”中,我们将深入探讨四个关键的技术框架,它们是Java开发中的核心工具,尤其在构建大型企业级应用时发挥着重要作用。这四个技术分别是Maven、...
在Java Web开发领域,JPA(Java Persistence API)、Spring框架和Struts框架的整合是常见的技术栈,它们各自扮演着不同的角色,共同构建出高效、灵活的Web应用程序。下面将详细介绍这三个关键技术及其整合过程。 **...
- 通常包括Struts2核心库、插件库以及其他第三方库如FreeMarker或Velocity等。 4. **配置Web.xml**: - 添加Struts2的Filter配置,用于拦截所有请求并进行处理。 ```xml <filter-name>struts2 <filter-class>...
《轻量级Java+EE企业应用实战——Struts 2 + Spring + Hibernate整合开发》是针对Java企业级应用开发的一本实战指南,旨在帮助开发者掌握使用Struts 2、Spring和Hibernate三大框架进行高效集成开发的技术与技巧。...
Struts2、Hibernate和Spring是Java企业级应用中三大核心框架,它们的整合使用能够构建出高效、可维护且松耦合的Web应用程序。在这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用04"的主题中,我们将探讨这...
Struts2、Hibernate和Spring是Java Web开发中的三大框架,它们各自负责不同的职责,共同构建了一个强大的企业级应用架构。本篇文章将详细讲解如何利用这三个框架进行整合搭建,旨在为初学者提供一个清晰的入门指南。...
Struts 2 和 Spring 是两种在 Java Web 开发中广泛使用的开源框架,它们结合使用可以构建高效、可扩展的企业级应用程序。Struts 2 主要负责 MVC(模型-视图-控制器)架构的设计,而 Spring 提供了依赖注入、事务管理...
5. 错误和异常处理:介绍如何在 Struts 2 和 Spring 中配置和处理错误及异常。 6. 测试和调试:可能包含如何编写单元测试和集成测试,以及调试 Struts 2 和 Spring 集成应用的技巧。 学习这个章节,开发者可以深入...
Struts2、Spring和Hibernate是Java Web开发中的三大主流框架,它们各自负责应用程序的不同层面,协同工作可以构建出高效、可维护的复杂Web应用。在本资源中,"struts2 spring hibernate框架技术与项目实战 光盘源码 ...
4. **添加Struts 2支持**:手动导入Struts 2.0.11所需的jar包,如freemarker、ognl、struts2-core等。 5. **配置文件**:创建struts.xml文件,定义Action和包的扩展关系;修改web.xml,配置Struts 2的Filter ...
Struts2、Hibernate和Spring是Java Web开发中的三大主流框架,它们各自负责应用程序的不同层面:Struts2专注于表现层,Hibernate处理数据持久化,而Spring则在业务逻辑和依赖注入方面发挥重要作用。将这三个框架整合...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2专注于MVC(Model-View-Controller)架构的实现,Spring提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,而...
在整合开发中,需要包含如`struts2-core`、`xwork`、`ognl`、`freemarker`、`commons-logging`、`commons-fileupload`以及Struts2与Spring、JSON的插件等必要的JAR文件。 Spring框架是一个全面的后端解决方案,它...