1.从jsp跳转到jsp:
先从jsp跳转到action的某个方法里,然后从方法的return input;到另一个jsp页面
2.springSide的程序入口在哪儿?
默认的index页面把他的<% response.sendRedirect("account/healthRoad.action"); %>定义到某个action中
3.从jsp跳到action中?
用form表单提交
4.从action跳到jsp中?
有程序默认的几个常量:input reload则到相应的jsp页面。
5.注意事项:
在action内,dml方法的返回值如果是默认的就返回常量 input reload等【没有引号】;
dml方法的返回值如果是自定义的放回值就需要加双引号。
6.jsp页面如何从数据库里面取值?
利用iterator遍历
eg:<s:iterator value="page.result">
<tr>
<td>${loginName} </td>
<td>${name} </td>
<td>${email} </td>
<td>${roleNames} </td>
<td>
<a href="user!input.action?id=${id}">查看</a>
<a href="user!input.action?id=${id}">修改</a>
<a href="user!delete.action?id=${id}">删除</a>
<a href="user!input.action">增加新用户</a>
</td>
</tr>
</s:iterator>
7.springSide中如何实现分页?
action中这样写:
//-- CRUD Action 函数 --//
@Override
public String list() throws Exception {
List<PropertyFilter> filters = PropertyFilter.buildFromHttpRequest(Struts2Utils.getRequest());
//设置默认排序方式
if (!page.isOrderBySetted()) {
page.setOrderBy("id");
page.setOrder(Page.ASC);
}
page = accountManager.searchUser(page, filters);
return SUCCESS;
}
【解析:】所实现的功能:加载所有数据,并实现分页。
1.action默认执行list方法。
2.filters表示过滤的条件基本不变。Struts2Utils需要导入包。
3.排序
4.accountManager表示service类
5.page。是在action类上面定义的属性 private Page<User> page = new Page<User>(5);//每页5条记录。Page是系统自定义的类。专门用来实现分页。
6.success系统定义的一个常量,基本不变(或者自定义字符串也行)
service中这样写:
/**
* 使用属性过滤条件查询用户.
*/
@Transactional(readOnly = true)
public Page<User> searchUser(final Page<User> page, final List<PropertyFilter> filters) {
return userDao.findPage(page, filters);
}
dao中这样写:
jsp页面中这样写:
<div>
第${page.pageNo}页,共${page.totalPages}页
<a href="javascript:jumpPage(1)">首页</a>
<s:if test="page.hasPre"><a href="javascript:jumpPage(${page.prePage})">上一页</a></s:if>
<s:if test="page.hasNext"><a href="javascript:jumpPage(${page.nextPage})">下一页</a></s:if>
<a href="javascript:jumpPage(${page.totalPages})">末页</a>
</div>
=================================================================【注入】===========================================================================================
一:类与类之间的注入依赖关系
action中:
@Namespace("/account")
@Results( {
@Result(name = CrudActionSupport.RELOAD, location = "healthRoad.action", type = "redirect"),
@Result(name="healthRoad_jsp",location="healthRoad.jsp"),
})
@Action("healthRoad")
@Autowired(注入在public void setHealthRoadService类上面)
效果图如下:
services中:
@Component
@Transactional(readOnly = true)
@Autowired
public void setAccountManager
效果图如下:
dao中:
@Component
效果图如下:
entity中:
@Entity
@Table(name = "ACCT_USER")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Column(nullable = false, unique = true)
//多对多定义
@ManyToMany
//中间表定义,表名采用默认命名规则
@JoinTable(name = "ACCT_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
//Fecth策略定义
@Fetch(FetchMode.SUBSELECT)
//集合按id排序.
@OrderBy("id")
//集合中对象id的缓存.
//非持久化属性.
@Transient
@SuppressWarnings("unchecked")
效果如下:
二:相关注记的含义及用途
=================================================================【DML操作】===========================================================================================
action类:
extends CrudActionSupport<HealthRoad> 重写 prepareModel()和getModel()
save();delete();list();input();
getpage();getId();
service类:
list(),searchPage()返回page对象;delelteHealthRoad();saveHealthRoad();都返回void类型。 getHealthRoad();返回对象类型
dao类:
extends HibernateDao<User, Long>
entity类:
需要从写getNodeid()方法,以便修改的时候获取页面id元素;