一、数据库
1.连接数据库(jdbc.properties)
2.添加配置文件的基本信息(applicationContext)
3.添加实体内容(vo)
4.将实体与数据表联系起来(*.hbm.xml)
二、具体文件
1.jsp:
全名为Java Server Pages,是一种动态网页,它是在html的基础上添加了java程序段和jsp标记(tag),实现了html与java的结合。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
2.applicationContext
applicationContext是spring中较高级的容器。和BeanFactory类似,它可以加载配置文件中定义的bean,将所有的bean集中在一起,当有请求的时候分配 bean。用于定义文件间的关系。
<!-- action的配置 -->
<bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
<!-- 注入Service -->
<property name="userService" ref="userService"/>
</bean>
<!-- service的配置 -->
<bean id="userService" class="cn.itcast.shop.user.service.UserService">
<property name="userDao" ref="userDao"/>
</bean>
<!-- Dao的配置 -->
<bean id="userDao" class="cn.itcast.shop.user.dao.UserDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
3.action
类似于mvc中的controller,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;
}
/**
* 登录的方法
*/
public String login(){
User existUser=userService.login(user);
if (existUser==null){
this.addActionError("登录失败,用户名或密码错误或用户未激活");
return LOGIN;
}else{
//登录成功
//将用户的信息存到session中
ServletActionContext.getRequest().getSession().setAttribute("existUser",existUser);
//页面跳转
return "loginSuccess";
}
}
}
4.service
对于action和dao起到连接的作用,service需要注入dao
public class UserService {
//注入UserDao
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
//用户登录的方法
public User login(User user) {
return userDao.login(user);
}
}
5.dao
负责与持久化对象交互,dao封装了数据的增、删、改、查的操作。
public class UserDao extends HibernateDaoSupport {
//1.增加
public void save (User user){
this.getHibernateTemplate().save(user);
}
//2.删除
public void delete(User user) {
this.getHibernateTemplate().delete(user);
}
//3.修改
public void update(User User){
this.getHibernateTemplate().update(User);
}
//4.查询
public User findByCode(String code){
String hql="from User where code=?";
List<User> list=this.getHibernateTemplate().find(hql,code);
if(list!=null && list.size()>0){
return list.get(0);
}
return null;
}
}
6.vo
持久化对象(相当于实体层),通过实体关系映射工具将关系数据库的数据映射成对象。主要包括两种类型的文件,一是实体,二是hibernate的映射文件。
7.struts
负责进行页面跳转的配置,当action给出页面跳转的配置后,在struts文件中找相应的jsp页面。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<package name="shop" extends="struts-default" namespace="/">
<!-- 配置自定义拦截器 -->
<interceptors>
<interceptor name="privilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/>
</interceptors>
<global-results>
<result name="msg">/WEB-INF/jsp/msg.jsp</result>
<result name="login">/WEB-INF/jsp/login.jsp</result>
</global-results>
<!-- 配置用户模块的Action -->
<action name="user_*" class="userAction" method="{1}">
<result name="loginSuccess" type="redirectAction">index</result>
</action>
</package>
</struts>
小结
ssh很重要的一点是他们之间的调用关系,具体的其他细节内容也还有很多值得学习研究。