表单中有些样式没对齐,注意可以使用theme = 'simple'
需要把页面中的../换成${pageContext.request.contextPath}
由于页面的延迟加载,导致部门并没有传到页面中,需要使用拦截器实现此功能。
模型驱动接收数据 implements ModelDriven<Employee > 用getModel()接受参数
级联删除,在action 中先查询再删除,然后再映射文件里,添加cascad="delete".
添加部门的执行方法,然后调用Service的save方法,在业务层添加实现方法,在业务层的实现类中实现save方法。在业务层里添加事物管理@Transactional,在业务层调用Dao 中save方法,dDao的实现类中实现save方法,使用Hibernate中的模板存入,返回的success 在struts.xml中配置下,重定向到一个Action
分页Bean ,设置当前页数,每页显示记录数,总记录数,总页数。
Math.ceil( )向上取整函数。
删除部门时级联删除员工:
1、删除部门时,在删除部门的方法里,先查询,再删除。
2、部门映射文件中,添加cascade="delete"属性。
修改部门员,工里的部门没有数据的原因。
1、因为双方都配置了关联关系,只要有一端修改都会影响另外一端,一般需要让一方放弃外键维护全,需要在set里添加inverse=“true”,让维护由一方来维护。
知识点1:struts标签中尽量不使用敏感字符比如id。
知识点2:struts标签里不支持嵌套(例如:<s:textfield name="birthday" value="<s:date name="model.birthday" format="yyyy-MM-dd"/>"/>)
知识点3:struts密码标签回显属性:showPassword="true"<s:password name="password" value="%{model.password}" showPassword="true"></s:password>
相对路径和绝对路径:https://blog.csdn.net/muxiayayoumei/article/details/48680607
防止通过员工查询部门的延迟加载:
1、在XML中添加拦截器(有先后顺序,放在struts拦截器前)
<filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、员工的映射文件中添加lazy=“false”
3、员工的映射文件中添加
fetch="join"
用hibernate分页可以使用DetachedCriteria类来简化操作 DetachedCriteria类的实例化: DetachedCriteria criteria = DetachedCriteria。forClass(XXX.class); 获取该页的XXX集合 List<XXX> list=this.getHibernateTemolate().findByCriteria(criteria,begin,pageSize); //begin是当前页数的第一个数据在数据库中的位置,pageSize每页多少给数据。
在自定义的拦截器中存入值栈:得到值栈对象后调用ValueStack.put(Object object)方法。 在Action类中存入值栈:得到值栈对象后调用ValueStack.put(Object object)方法。 在JSP中存入值栈:标签<s:push value="..."></s:push>是专门用来在JSP中把指定的value放入值栈的,但value被放入值栈的时间仅在s:push标签内,即程序运行到</s:push>标签处会把value从值栈中移出。另外,还有一些标签比如<s:iterator/>由于其功能的需要也会把一些对象放到值栈中。 具体分析网址:https://www.jianshu.com/p/9c497ee8fd23
泛型详解:https://www.cnblogs.com/jpfss/p/9928747.html
修改部门
步骤1:信息回显(请求一个action,并传入该部门的id,查询该部门并存入request域)
步骤2:保存信息,并返回查询页面(请求一个action,保存修改后的信息)
问题1:不添加@Transactional,也可以进行保存操作。
知识2:非struts标签添加${pageContext.request.contextPath },struts标签添加%{pageContext.request.contextPath}相当于项目虚拟路径,和request.getContextPath()作用相同,项目发布后src文件下的东西都会存储在Webapp下的项目的WEB-INF下的classes下,通常是虚拟路径加classes下的真是路径。
知识3:Action中也可以把对象赋值给模型驱动的对象,通过getModel就可以把他返回,前端可以通过%{model.属性名}获取值。(模型驱动默认会在值栈中)
部门管理——Action、Service、Dao的创建及配置
1、分页功能
2、部门的增、删、改、查(所有和单个)
用模型驱动的方法接受前台传入过来的参数。1。通过接口 ModelDriven<> 2. 实现接口里面的getModel() 方法; 3.创建employee对象。(getModel 就会把前面传过来的参数用户名,密码,封装进 employee对象当中,之后在login中就可以使用这个对象,这个对象也会一层一层的向下传递,到达dao层,)
ssh实现篇-jsp显示时间操作
ssh实现篇-分页查询
将pageBean存入到值栈中
ssh实现篇-分页查询 使用DetachedCriteria方法实现
DetachedCriteria criter = DetachedCriteria.forClass(类.class);
this.getHibernateTemplate().findByCriteria();
ssh实现篇-项目工程路径
在自定义的拦截器中存入值栈:得到值栈对象后调用ValueStack.put(Object object)方法。 在Action类中存入值栈:得到值栈对象后调用ValueStack.put(Object object)方法。 在JSP中存入值栈:标签<s:push value="..."></s:push>是专门用来在JSP中把指定的value放入值栈的,但value被放入值栈的时间仅在s:push标签内,即程序运行到</s:push>标签处会把value从值栈中移出。另外,还有一些标签比如<s:iterator/>由于其功能的需要也会把一些对象放到值栈中。 具体分析网址:https://www.jianshu.com/p/9c497ee8fd23
用hibernate分页可以使用DetachedCriteria类来简化操作 DetachedCriteria类的实例化: DetachedCriteria criteria = DetachedCriteria。forClass(XXX.class); 获取该页的XXX集合 List<XXX> list=this.getHibernateTemolate().findByCriteria(criteria,begin,pageSize); //begin是当前页数的第一个数据在数据库中的位置,pageSize每页多少给数据
var 为 value重命名
一开始写成了null,则数据就会变为null(ps.注意返回值得问题!!!)
接收前台的值方法:action实现modeldrivn