首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

新手集成SSH有关问题,简单的用户登录都不行

2012-03-09 
新手集成SSH问题,简单的用户登录都不行自学STRUTS2+SPRING3+HIBERNATE3 发现问题无法解决,贴出以下代码1、a

新手集成SSH问题,简单的用户登录都不行
自学STRUTS2+SPRING3+HIBERNATE3 发现问题无法解决,贴出以下代码

1、applicationContext.xml:
...
<!-- 配置Hibernate 数据源-->
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/xyssh" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<!-- 配置Hibernate SeesionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="myDataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>

<!-- 配置其他beans-->
<bean id="LoginAction" class="com.xyssh.system.action.LoginAction"
scope="prototype">
<property name="userDao" ref="UserDao"></property>
</bean>
<bean id="UserDao" class="com.xyssh.system.dao.UserDao" scope="prototype">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

2、struts.xml:
<struts>
<package name="user" namespace="/" extends="struts-default">
<action name="login" class="com.xyssh.system.action.LoginAction" >
<result>
<param name="success">/login.jsp</param>
<param name="error">/index.jsp</param>
</result>
</action>
</package>
</struts>  
3、web.xml
<filter>
  <filter-name>struts2</filter-name>
  <filter-class>
  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  </filter-class>
  </filter>
  <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener> 

4、LoginAction.java
public class LoginAction extends ActionSupport{

/**

*/
private static final long serialVersionUID = -3945074126919510909L;

private String code;

private String password;

private UserDao userDao;

public String execute() {
//查找用户

List<User> users = getUserDao().findByProperty("code", code);
if (users.size() == 0){
return "error";
}

User user = users.get(0);
//判断密码
if (user.getPassword().equals(password)){
return "error";
}

return "success";
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;


}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public UserDao getUserDao() {
return userDao;
}

public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
}

5、UserDao.java:
public class UserDao extends HibernateDaoSupport {
......
 public List<User> findByProperty(String propertyName, Object value) {
  log.debug("finding USER instance with property: " + propertyName
  + ", value: " + value);
  try {
  String queryString = "from USER as model where model." 
  + propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
  } catch (RuntimeException re) {
  log.error("find by property name failed", re);
  throw re;
  }
}

6、遇到的问题:
当运行到LoginAction.execute方法时,报错,原因为getUserDao()为null,如果我在这里new UserDao,则在UserDao中的getHibernateTemplate()为null,恳请各位给新手解决方法,谢谢!

[解决办法]
struts.xml:中

Java code
<action name="login" class="LoginAction" >   //改成这样--交由spring管理,
[解决办法]
在你的struts配置文件夹中加上:
<constant name="struts.objectFactory" value="spring" />

然后将:action name="login" class="com.xyssh.system.action.LoginAction" >
改成:action name="login" class="LoginAction" >

记得要加上struts-spring的一个插件jar包进去!名字是类似:struts2-spring-plugin-2.0.14.jar,只是版本号不一样而已。

[解决办法]
探讨
各位,还是不行啊,同样的问题,lib下已经放了struts2-spring-plugin-2.1.8.1.jar,下面是改了后的struts.xml
<struts>
<package name="user" namespace="/" extends="struts-default">
<action name="login" class="LoginAction" >
<result>……

热点排行