struts和hibernate工作流程

struts工作流程
1>启动struts框架,web.xml,创建ActionServlet对象,立即调用init(),解析struts-config.xml
2>view发送*.do请求
3>ActionServlet接受该请求,去掉.do后缀,在struts-config.xml文件中找<action>元素path属性.a>如果没有找到404错误;b>如果找到继续执行
4><action name="">判断是否需要表单封装页面数据.name属性值不为空则封装数据(创建ActionForm对象,根据scope属性值决定将form对象存储起来:request.setAttribute("",form);调用reset方法对数据进行初始化工作;封装数据(技术:a>vo值对象作为ActionForm对象的成员属性));
5>调用ActionErrors validate()方法进行表单数据验证:(<action>的vlidate属性:默认为true---会调用该方法;false---不会调用)
 1>验证通过:ActionErrors为null或者ActionErrors中没有存放错误消息
 2>验证不通过:ActionErrors有错误消息.将错误消息派发到 <action >元素的input属性指 定的jsp进行错误消息的输出:<html:errors/>   或者<html:errors key=""/>
6>验证通过,接下来根据<action>元素的type属性来创建Action对象,会立即调用Action对象的

 

DispatchAction对象的execute
页面
<input type="hidden" name="method" value="add"/>
<input type="submit" value="添加“ onClick="method.value='add';frm1.submit();"/>
<input type="submit" value="修改“ onClick="method.value='modify';frm1.submit();"/>
置换成name=“method”  value=“add”


struts-config.xml
 <action    path="/logindispatch"
               input="/TestDispatchAction1.jsp"
               parameter="method"  //指明提交的动作参数名
               scope="request"
               type="struts.LogindispatchAction"/>

public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse respose)
{
 String paramValue=mapping.getParameter();//method
 String value=request.getParameter(paramValue);
 Class cls=this.getClass();
 Method method=cls.getMethod(value,new Class[]{});
 return (ActionForward)method.invoke(this,new Object[]{});
}

<a href="logindispatch.do?method=add"></a>

 

二:hibernate
1>session api:save(Object) :临时状态(1:new;2:信息没有在数据库中保存)
 update(Object) :游离状态(1:不在session缓存中;2:有记录在数据库中);持久化状态:(1:在session缓存中;2:有记录)
saveOrUpdate(Object)
delete(Object):持久和游离状态对象
load(Class cla,Serializable pk):查询对象不存在抛出异常
get(Class cla,Serializable pk):不存在对象则返回null.
2>Hibernate的缓存:
     SessionFactory:1>所有的Hibernate的映射文件信息2>pojo类对应的表的基本的增删改查语句
    Session:1>缓存sql语句,在commit时候执行
                  2>缓存了持久化状态对象
    缓存作用:1>提高性能
                     2>保持对象状态和数据库记录的同步
3>实体映射:
    关联关系的映射:
   one-to-many:
  cascade属性:级联操作
  none:不做级联操作
  save-update:
  delete
  all:
  all-delete-orphan:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值