浅谈做的第一个项目学生后台管理系统

来源:互联网 发布:php通过ip获取地址 编辑:程序博客网 时间:2024/06/04 17:56

本项目主要是基于运用Hibernate的框架和Struts2的框架对学生后台管理系统进行记录的,在这个小demo中还是有学到很多有用的思路。

1.在整个项目开始需要的是对jar包的导入,主要还是Hibernate,Struts2,junit,还有sql的包的导入,同时还要又比较完备的前端页面显示,部分静态页面就不用说了,web.xml文档配置的信息主要还是和过滤器filter有关的信息,通过运用Struts2过滤器来过滤所有action的请求;

2,在整个项目中,先是要对配置文档进行配置,特别是Struts.xml文档的编写,还有对Hibernate.cfg.xml的编写。Struts.xml文档主要存放的信息大体是对action的详细信息的配置还有对action的动态跳转各种页面的处理;而Hibernate.cfg.xml文档则是整个Java工程与数据库之间的联系,通过对数据库连接信息的配置还有就是对实体类与数据库之间的联系进行的映射关系,同时在数据库里面建立对应的表格或是使用SchemaExport创建表结构,其程序如下:

Configuration config=new Configuration().configure();
SchemaExport export =new SchemaExport(config);
export.create(true, true);

3.接下来就是对实体类的进行创建,创建之后还得通过实体类.hbm.xml对数据的信息进行一一的对应,在类型还有名称等方面信息的配置,之后切记要在Hibernate.cfg.xm文档中加上mapping映射;

4.之后就是对登录的实体类user进行规定,通过在数据库中先添加信息,再通过进行程序编写进行验证;

5.编写所要用到的基本工具类,就是建立sessionfactory的一个工具类方便以后进行调用,大抵程序如下:

public class mysessionfactory {
private static SessionFactory sessionfactory;
private mysessionfactory() {
}
public static SessionFactory getSessionFactory() {
if (sessionfactory == null) {
Configuration config = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(config.getProperties())
.buildServiceRegistry();
SessionFactory sessionfactory = config
.buildSessionFactory(serviceRegistry);
return sessionfactory;
} else {
return sessionfactory;
}
}
}

6.在实现上面获取sessionfactory的程序后就方便获取session,可以建立user和student的接口,以便在进行user和student建立实例的时候可以通过直接引用接口来对实体类的实例进行初始化,像学生类的接口主要如下所示:

public interface studentdao {
public List<student> allstudent();
public student qstudentbyid(String sid);
public boolean addstudent(student u);
public boolean updatestudent(student u);
public boolean deletestudent(String sid);
}

7.建立接口之后就是对该接口对应的实体类方法进行编写,建立实体类的话是对内部程序的编写进行完善实现各部分的详细功能,在每个小方法中基本都是啊哟建立session和事务然后在session和事务中对接收的数据进行操作,最后再提交事务,例如学生中的一个方法如下:

//增加学生的方法

public boolean addstudent(student u) {
u.setSid(newstudentid());
Transaction tx =null;
try {
Session session=mysessionfactory.getSessionFactory().getCurrentSession();
tx=session.beginTransaction();
session.save(u);
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.commit();
return false;
}finally{
if(tx!=null){
tx=null;
}
}
}

//修改学生的方法

public boolean updatestudent(student u) {
Transaction tx =null;
try {
Session session=mysessionfactory.getSessionFactory().getCurrentSession();
tx=session.beginTransaction();
session.update(u);
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.commit();
return false;
} finally{
  if(tx!=null){
tx=null;
}
}
}

7.接下来就是对action的方法进行编写,在编写action的过程中,最好还是要先进行一个父类的编写,可以在这个父类中实现一些网络的接口还有对ActionSupport这个类的继承,然后接收一些request,response的数据以便之后建立student还有user子类进行调用省去一些麻烦。其父类程序如下:

public class superaction extends ActionSupport implements ServletContextAware,ServletRequestAware, ServletResponseAware{
private static final long serialVersionUID = 1L;
protected HttpServletResponse ServletResponse;
protected HttpServletRequest ServletRequest;
protected HttpSession session;
protected ServletContext application;
@Override
public void setServletResponse(HttpServletResponse ServletResponse) {
this .ServletResponse=ServletResponse;
}
@Override
public void setServletRequest(HttpServletRequest ServletRequest) {
// TODO Auto-generated method stub
this.ServletRequest=ServletRequest;
this.session=this.ServletRequest.getSession();
}
@Override
public void setServletContext(ServletContext application) {
// TODO Auto-generated method stub
this.application=application;
}
}

通过以上的三个方法对应的输入值,在子类中就可以很便捷调用其request等数据;

8.接下来就是对action两个子类进行编写,在对useraction类的编写中,要注意登录界面是采用了模型驱动来接收表单的数据,然后对登录进行处理,基本在这个action的设计中基本都得返回一个字符串,这个字符串信息是为了在struts.xml文档中对action进行注册然后在action的result中要对应该字符串跳转的页面,然后action中调用的基本是上面第6点中的建立实体类的基本方法进行判断;

9.在struts.xml文档中也要注意通配符的使用对应的*代表的名字还有方法,在配置完struts.xml文档之后还要在jsp页面中的一些调用的地方加上调用的地址,基本调用的方法很多都是<%path %>加action中名空间+该action的名字_方法.action这个得方式进行调用,可能还会用到例如${session.方法}的方式来进行调用或是“”#session.modify_student.birthday“”这种方式进行调用

10.最好是每个步骤都单独对其一个方法或是一个模块进行模块化设计,不要都把所有模块堆一起进行编写,便于整个程序bug的检查,最好设计完一个模块之后就通过test对该模块进行单独的检查。

基本过程就是如此,我是菜鸟新手,就总结一下以后方便复习,我是按着教程来的,源代码的网址:http://download.csdn.net/detail/kebe_mo/9909756