网上商城SSH一条线

本文介绍了使用SSH(Struts+Spring+Hibernate)框架开发网上商城项目的过程,从功能实现到配置详解,包括文件结构、登录请求处理、Action中的模型驱动、数据库连接配置等,通过实例展示了SSH框架的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言:

    网上商城拖拖拉拉进行了一个多月,功能基本实现了,这是开始java的第一个项目,里面很多东西是现成的直接用的,不过这次学习主要是去理解其思想,然后和.net做个对比。


简介:

    网上商城采用SSH框架(struts+spring+hibernate)

    一条线的流程:

   

文件结构:


以登录为例,点击登录按钮发出请求:

          

 from表单:

<form id="loginForm" action="${pageContext.request.contextPath}/user_login.action" method="post" novalidate="novalidate">

 ActionServlet获得这个请求,跳转到对应的Action中

        /*
	 * 登陆的方法
	 */
	public String login(){
		User exitUser=userService.login(user);
		if(exitUser==null){
			//登录失败
			this.addActionError("登录失败:用户名或密码错误或用户未激活!");
			return LOGIN;
		}else{
			//登录成功
			//将用户信息存入session
			ServletActionContext.getRequest().getSession().setAttribute("exitUser", exitUser);
			//页面跳转
			return "loginSuccess";		
		}
	}

这个过程是struts框架起的作用,其内部更详细的流程在上篇博客中已经总结:SSH框架宏观了解

 

login方法的实现在Action中还有一些配置:

//实现模型驱动//注入service

public class UserAction extends ActionSupport implements ModelDriven<User>{
     
	//模型驱动使用的对象
	private User user =new User();
	public User getModel() {
		return user;
	}		
	//注入UserService	
	private UserService userService;
	
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
}

Action调用Service:

public class UserService {
       //注入UserDao
	private UserDao userDao;	
	public void setUserDao(UserDao userDao){
		this.userDao=userDao;
	}		
       //用户登录的方法
	public User login(User user) {	
		return userDao.login(user);
	}
}


Service调用Dao:

public class UserDao extends HibernateDaoSupport {
	
	//用户登录的方法
	public User login(User user) {
		String hql="from User where username=? and password=? and state=?";
	    List<User> list=this.getHibernateTemplate().find(hql,user.getUsername(),user.getPassword(),1);
		if (list!=null && list.size()>0){
			return list.get(0);
		}
	    return null;
	}
}
Dao层继承了HibernateDaoSupport

最后再一层层返回,在Action返回一个字符串“loginSuccess”,可以在最上面的Action中的login方法中可以看到。

然后根据sturts配置文件跳转到jsp页面:

    

applicationContext的配置:

连接数据库配置:

<!-- 配置C3P0连接池 -->	
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
       <property name="driverClass" value="${jdbc.driver}"/>
       <property name="jdbcUrl" value="${jdbc.url}"/>
       <property name="user" value="${jdbc.user}"/>
       <property name="password" value="${jdbc.password}"/>
</bean>

 Hibernate配置

<!-- Hibernate的相关信息 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	    <!-- 注入连接池 -->
	    <property name="dataSource" ref="dataSource"/>
	    <!-- 配置Hibernate的其他的属性 -->
	    <property name="hibernateProperties">
	          <props>
	            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
				<prop key="hibernate.connection.autocommit">false</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
	          </props>	    
	    </property>
	    <!-- 配置Hibernate的映射文件 -->	
	    <property name="mappingResources">
	       <list>
	           <value>cn/itcast/shop/user/vo/User.hbm.xml</value>
	           <value>cn/itcast/shop/category/vo/Category.hbm.xml</value>
	           <value>cn/itcast/shop/product/vo/Product.hbm.xml</value>	   
	           <value>cn/itcast/shop/categorysecond/vo/CategorySecond.hbm.xml</value> 
	           <value>cn/itcast/shop/order/vo/Order.hbm.xml</value> 
	           <value>cn/itcast/shop/order/vo/OrderItem.hbm.xml</value>    
	           <value>cn/itcast/shop/adminuser/vo/AdminUser.hbm.xml</value>     
	       </list>	    
	    </property>	    
	</bean>
Action配置
在Action中注入Service,这样Action才可以调用Service

<!-- 用户模块的Action -->
<bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
	<!-- 注入Service -->
	<property name="userService" ref="userService"/>	
</bean>
	

Service配置

在Service中注入Dao,这样Service才可以调用Dao
<!-- Service的配置 -->
<bean id="userService" class="cn.itcast.shop.user.service.UserService">
	<property name="userDao" ref="userDao"/>
</bean>
Dao配置

<!-- Dao的配置 -->
     <bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
        <property name="sessionFactory" ref="sessionFactory"/>
     </bean>



VO层相当于实体层,作用是传递数据,里面包含两个文件(实体、实体映射文件)


总结:

    这样一个功能算是实现了,后面之间的调用不算麻烦,主要是一些配置,刚开始会绕得很晕,慢慢捋顺就好了!







评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值