项目第一天

项目框架搭建总结:
1、建立Web工程
* 导入需要的jar的包
db:连接数据库的驱动包
hibernate:使用hibernate的jar包
jstl:java的标准标签库
junit:测试用到的jar包
spring:使用spring的jar包
struts2:使用struts2的jar包
* 项目体系分层:
cn.itcast.elec.containner:自定义的spring容器,用于在控制层调用操作业务层
cn.itcast.elec.dao:项目的dao层,负责连接数据库的操作
cn.itcast.elec.daomain:封装实体对象(PO对象),对应连接数据库表的映射文件
cn.itcast.elec.service:项目service层,负责操作各个功能模块的业务逻辑
cn.itcast.elec.util:封装系统使用到的公用类的方法和属性
cn.itcast.elec.web.action:系统控制层,负责页面和项目后台的跳转
cn.itcast.elec.web.form:封装值对象(VO对象),对应页面传递的表单值的属性
junit:测试类

* 配置文件
放置到src的目录下:
beans.xml:spring的配置文件
hibernate.cfg.xml:hibernate的配置文件
struts.xml:struts2的配置文件
2、建立持久层
* 在cn.itcast.elec.domain中创建持久层的对象ElecText.java
public class ElecText implements java.io.Serializable {
private String textID;
private String textName;
private Date textDate;
private String textRemark;
}
* 对应javabean的PO对象,创建于表的映射文件ElecText.hbm.xml文件

















* 创建连接数据库的hibernate配置文件,hibernate.cfg.xml文件,放置到src目录下


root
root
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/itcast1222elec
true

org.hibernate.dialect.MySQL5Dialect
update
true




3、DAO层的搭建
* 在cn.itcast.elec.dao目录下,创建ICommonDao的接口
public interface ICommonDao {
public void save(T entity);
}
* 在cn.itcast.elec.dao目录下,创建对ICommonDao的接口的实现类CommonDaoImpl
public class CommonDaoImpl extends HibernateDaoSupport implements ICommonDao {
public void save(T entity) {
this.getHibernateTemplate().save(entity);
}
@Resource(name="sessionFactory")
public final void setSessionFactoryDi(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
}
* 在cn.itcast.elec.dao.impl目录下,创建IelecTextDao的接口
public interface IElecTextDao extends ICommonDao {
public final static String SERVICE_NAME = "cn.itcast.elec.dao.impl.ElecTextDaoImpl";
}
* 在cn.itcast.elec.dao.impl目录下,创建IelecTextDao接口的实现类ElecTextDaoImpl
@Repository(IElecTextDao.SERVICE_NAME)
public class ElecTextDaoImpl extends CommonDaoImpl implements IElecTextDao {

}
* 配置spring的配置文件beans.xml文件








classpath:hibernate.cfg.xml











4、建立Service层
* 在cn.itcast.elec.service目录下,创建IElecTextService的接口
public interface IElecTextService {
public final static String SERVICE_NAME = "cn.itcast.elec.service.impl.ElecTextServiceImpl";
public void saveElecText(ElecText elecText);
}
* 在cn.itcast.elec.service.impl目录下,创建IElecTextService接口的实现类ElecTextServiceImpl
@Transactional(readOnly=true)
@Service(IElecTextService.SERVICE_NAME)
public class ElecTextServiceImpl implements IElecTextService {

@Resource(name=IElecTextDao.SERVICE_NAME)
private IElecTextDao elecTextDao;

@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED,readOnly=false)
public void saveElecText(ElecText elecText){
elecTextDao.save(elecText);
}
}
5、建立控制(Action)层
* 导入系统需要的css、script、images的包
以及需要的jsp的包menu(系统登录、首页显示的jsp页面)、system(系统管理中的功能页面)
* 在cn.itcast.elec.web.action创建ElecTextAction
@SuppressWarnings("serial")
public class ElecTextAction extends BaseAction implements ModelDriven{

private IElecTextService elecTextService = (IElecTextService)ServiceProvider.getService(IElecTextService.SERVICE_NAME);

private ElecTextForm elecTextForm = new ElecTextForm();

public ElecTextForm getModel() {
return elecTextForm;
}

public String save(){
ElecText elecText = new ElecText();
elecText.setTextName(elecTextForm.getTextName());//测试名称
elecText.setTextDate(StringHelper.stringConvertDate(elecTextForm.getTextDate()));//测试日期
elecText.setTextRemark(elecTextForm.getTextRemark());//测试备注
elecTextService.saveElecText(elecText);
return "save";
}
}
* 在cn.itcast.elec.web.form创建ElecTextForm(值对象)
public class ElecTextForm implements java.io.Serializable {
private String textID;
private String textName;
private String textDate;
private String textRemark;
}
* 在cn.itcast.elec.web.action创建BaseAction类
@SuppressWarnings("serial")
public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware {
@SuppressWarnings("unused")
protected HttpServletRequest request = null;
@SuppressWarnings("unused")
protected HttpServletResponse response = null;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
}
* 自定义spring的容器
* 在cn.itcast.elec.container包下,建立ServiceProviderCord类
public class ServiceProviderCord {
protected static ApplicationContext ac;
public static void load(String filename){
ac = new ClassPathXmlApplicationContext(filename);
}
}
* 在cn.itcast.elec.container包下,建立ServiceProvider类
public class ServiceProvider {
public static ServiceProviderCord spc;
static{
spc = new ServiceProviderCord();
spc.load("beans.xml");
}
public static Object getService(String serviceName){
if(StringUtils.isBlank(serviceName)){
throw new RuntimeException("当前服务名称不存在");
}
Object object = null;
if(spc.ac.containsBean(serviceName)){
object = spc.ac.getBean(serviceName);
}
if(object==null){
throw new RuntimeException("当前服务名称【"+serviceName+"】下的服务节点不存在");
}
return object;
}
}
* 建立struts的配置,放置到src的目录下










/system/textAdd.jsp




同时在web.xml中添加struts的过滤器

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/*


转载于:https://www.cnblogs.com/hzzhero/p/5172432.html

你可能感兴趣的:(项目第一天)