我自己搞了个SSH登陆框架,哎~~问题多多。初学者。大侠们看看:我的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>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/> </tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.user.usermanager.UserManagerImpl.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
<bean id="userManager" class="com.user.usermanager.UserManagerImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean name="/login" class="com.user.actions.LoginAcion">
<property name="userManager" ref="userManager"/>
</bean>
</beans>那个UserManagerImpl是一个处理业务的类;
如下:
package com.user.usermanager;import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.user.exception.UserNotFoundException;
public class UserManagerImpl extends HibernateDaoSupport implements UserManager {
@Override
public void login(final String username, final String password)
throws UserNotFoundException {
List list = new ArrayList();
try {
System.out.println(username+" "+password);
list = this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.createQuery("from User u where u.username like ? and u.password like ?")
.setParameter(0, username)
.setParameter(1, password)
.list();
}
});
} catch(Exception e) {
e.printStackTrace();
}
if(list.size()==0) {
throw new UserNotFoundException();
}
}
}在我登陆的时候,可以输出我的账号和密码,后面的就运行部下去了。
一直都是报空指针错误:我觉得是sessionfactory没有注入过去,然后在这里取过来的session都是空的
大虾们看看,什么问题。小弟不甚感激!!!
<?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>
<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" propagation="REQUIRED"/> </tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
<aop:pointcut id="allManagerMethod" expression="execution(* com.user.usermanager.UserManagerImpl.*(..))"/>
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
<bean id="userManager" class="com.user.usermanager.UserManagerImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean name="/login" class="com.user.actions.LoginAcion">
<property name="userManager" ref="userManager"/>
</bean>
</beans>那个UserManagerImpl是一个处理业务的类;
如下:
package com.user.usermanager;import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.user.exception.UserNotFoundException;
public class UserManagerImpl extends HibernateDaoSupport implements UserManager {
@Override
public void login(final String username, final String password)
throws UserNotFoundException {
List list = new ArrayList();
try {
System.out.println(username+" "+password);
list = this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
return session.createQuery("from User u where u.username like ? and u.password like ?")
.setParameter(0, username)
.setParameter(1, password)
.list();
}
});
} catch(Exception e) {
e.printStackTrace();
}
if(list.size()==0) {
throw new UserNotFoundException();
}
}
}在我登陆的时候,可以输出我的账号和密码,后面的就运行部下去了。
一直都是报空指针错误:我觉得是sessionfactory没有注入过去,然后在这里取过来的session都是空的
大虾们看看,什么问题。小弟不甚感激!!!
1、hibernate.cfg.xml确定在src下?
2、web.xml中是否配置了:
<!-- Spring 支持配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml,/WEB-INF/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Struts 2 支持配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>调试一下:
1、使用debug一步一步跟踪;
2、在UserManagerImpl构造方法中打印一些语句,判断在服务器启动时有没有被初始化。也可以打印sessionFactory看是不是有初始化。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
不知道怎么搞的。难道没有注入过去?spring的配置有问题吗?
好像在项目运行的时候它说没有找到applicationContext
下面没有输出一些加载spring框架的一些信息
说config=null;
我郁闷了。因为我的
web.xml里面有配置这个:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext-*.xml
</param-value>
<!--
<param-value>
/WEB-INF/dataAccessContext-jta.xml /WEB-INF/applicationContext.xml
</param-value>
-->
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>Spring character encoding filter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>Spring character encoding filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
我myeclipse运行tomcat的时候,根本就不打印加载springframe框架的信息
如下:
不知道什么原因
信息: Initializing Coyote HTTP/1.1 on http-8888
2009-5-30 9:52:43 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 495 ms
2009-5-30 9:52:43 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2009-5-30 9:52:43 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.14
2009-5-30 9:52:45 org.apache.catalina.core.ApplicationContext log
信息: Loading Spring root WebApplicationContext
2009-5-30 9:52:49 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8888
2009-5-30 9:52:49 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2009-5-30 9:52:49 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31 config=null
2009-5-30 9:52:49 org.apache.catalina.startup.Catalina start
信息: Server startup in 6073 ms好像都没有读取web.xml一样的