SSH初学总结

 本来以为把自己原来的项目复制一下,添加一下支持就好了,没想到遇到那么多错误,还是记下来吧~

1、hibernate逆向工程不知道是不是自己选择的不对,也看不太懂,自动生成的文件不是很完整,遇到不同的错误各种google然后一点点手动添加的代码,现在把一个简单的管理员登录功能的部分代码粘出来以后参考~

这个不同于SQL语句,from Manager而不是数据库中的表名,是映射之后的类名!

package com.DAO.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.DAO.ManagerDAO;
import com.hibernate.HibernateSessionFactory;

public class ManagerDAOImpl implements ManagerDAO {

	@Override
	public boolean login(String username, String password) {
		// TODO Auto-generated method stub
		Session session = HibernateSessionFactory.getSession();
		Query query = session.createQuery("from Manager where username='"
				+ username + "' and password='" + password + "'");
		List list = query.list();
		if (list.size() > 0) {
			return true;
		} else {
			return false;
		}
	}
}

hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
	<property name="connection.characterEncoding">UTF-8</property>
	<property name="dialect">
		org.hibernate.dialect.SQLServerDialect
	</property>
	<property name="connection.url">
		jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Meal
	</property>
	<property name="connection.username">sa</property>
	<property name="connection.password">123456</property>
	<property name="connection.driver_class">
		com.microsoft.sqlserver.jdbc.SQLServerDriver
	</property>
	<property name="myeclipse.connection.profile">
		SQL SERVER 2008
	</property>
	<mapping  resource="./Manager.hbm.xml" />

</session-factory>

</hibernate-configuration>

Manager.hbm.xml

这个里面class 的name属性刚开始没有写上包名,写完整就好了。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.entity.Manager" table="admin" schema="dbo" catalog="Meal">
        <id name="username" type="java.lang.String">
            <column name="username" length="20" />
            <generator class="assigned"></generator>
        </id>
        <property name="password" type="java.lang.String">
            <column name="password" length="20" />
        </property>
    </class>
</hibernate-mapping>

2、还有一个非常弱智的问题Debug了半天。。我通常喜欢复制一个文件然后修改,因为好多代码差不多,写起来麻烦。。比如ManagerDAOImpl和StudentDAOImpl在刚开始写登录的时候就一样。。结果悲剧了。。写Student的时候实现的接口是ManagerDAO,这样会报错,说无法转换类型。在applicantionContext.xml中,注入了studentDAO,这里顺便解释一下之前的困惑。。表示JAVA考那么低的分真是不亏啊。。在LoginService的实现里,有成员变量SduentDAO(接口)类型的studentDAO,然后配置文件中该变量的类型是StudentDAOImpl,说无法转换。。其实是可以的,但前提是StudentDAOImpl实现了StudentDAO的接口才行,这样也是多态性的体现。所以之前懒懒的复制代码结果实现的接口搞错了,转换也就会报错了。。

<?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:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

	<bean id="managerDAO" class="com.DAO.impl.ManagerDAOImpl" />
	<bean id="studentDAO" class="com.DAO.impl.StudentDAOImpl" />
	<bean id="loginService" class="com.service.impl.LoginServiceImpl">
		<property name="managerDAO">
			<ref bean="managerDAO" />
		</property>
		<property name="studentDAO">
			<ref bean="studentDAO" />
		</property>
	</bean>
	<bean id="loginAction" class="com.action.LoginAction">
		<property name="loginService">
			<ref bean="loginService" />
		</property>
	</bean>
</beans>

3、LoginService是以注入的形式new的,在LoginAction的构造函数中获取session和request对象就会无法生成LoginAction这个bean。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值