网站引导页面制作的四个任务名称/网络推广方法技巧
引言:
网上商城拖拖拉拉进行了一个多月,功能基本实现了,这是开始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{//登录成功//将用户信息存入sessionServletActionContext.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 {//注入UserDaoprivate UserDao userDao; public void setUserDao(UserDao userDao){this.userDao=userDao;} //用户登录的方法public User login(User user) { return userDao.login(user);}
}
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层相当于实体层,作用是传递数据,里面包含两个文件(实体、实体映射文件)
总结:
这样一个功能算是实现了,后面之间的调用不算麻烦,主要是一些配置,刚开始会绕得很晕,慢慢捋顺就好了!