ssh之值栈

1.pageContext.request.contextPath获得的是项目的名称。比如: /ssh_manager 前面有一个斜杠。

2.ssh的思想就是访问的是我们的action而不是直接的jsp,这样的话,你要学会在一个Action里面去处理很多的jsp请求。

3.模型驱动的值会默认放在值栈里面,而且,我们在一个Action里面有很多个方法的时候,每次访问一个方法的时候,就实例化一个Action,而且每个Action里面的值栈都是不一样的。

4.在jsp使用模型驱动里面的数据:

1
<s:property value="model.属性">

5.对值栈的理解:值栈就是一个栈,也就是数值是从顶到底读取的,不过它会自动帮我们去匹配,输出的是第一个匹配到的数据。==如果我们把一个对象放到值栈里面==:例如PageBean;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class PageBean <T>{//分页显示这个·相当于List<E>
private int currPage;//当前页
private int pageSize;//每页显示
private int totalPage;//总页数
private int rowPage;//总记录
private List<T>list;//当前页面的数据
public int getCurrPage() {
return currPage;
}
public void setCurrPage(int currPage) {
this.currPage = currPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public int getRowPage() {
return rowPage;
}
public void setRowPage(int rowPage) {
this.rowPage = rowPage;
}
public List<T> getList() {
return list;
}
public void setList(List<T> list) {//这个是从数据库得到的,上面的其他数据是提供给数据库的。
this.list = list;
}

之后在页面我们就可以使用一整个pageBean,包括里面的各个属性,而且可以直接使用属性的名字来获得该属性的值,它会在底层自动帮我们查找。而且还支持对list属性的iterator迭代。
他会自动的将pageBean里面的list属性直接的给到我们的 注意:这个value要写对,要和pageBean里面的属性值一样。

2.对于页面单纯跳转到显示页面的做法:首先,对任何的jsp页面的请求,我们都是将请求给到我们的action进行处理的,这个的好处就是防止直接访问到我们的jsp,还有一个醉最大的好处就是,我们跳转到的页面需要的数据可以先在我们的Action里面直接准备好,这样jsp页面对java代码的耦合性就达到最低了。例如在员工系统里面,我们需要修改一个员工的信息,这时候我们的修改页面需要的数据有,该员工的所有原来的信息,这就要将该对象放到模型驱动里面,或者是值栈里面,接着,如果修改页面还需要所有部门以供选择的话,还要将所有部门的集合放到值栈里,这样在页面进行跳转后,我们的jsp页面就可以很直接的就得到我们在action里面为准备的所有的数据。直接利用==ognl==表达式就可以得到。

3.对于jsp页面请求的时候数据接收时发生错误会报出很多错误,其中就有一个是无法找到action,其实不是找不到,是它在为Action进行数据的封装的时候出现了错误而无法直接实例化我们得Action.特别是在使用了list集合的jsp页面,好像数据填写不完全就会报错,这个我也不是很懂。我的想法就是这个可以直接交给到我们的脚本进行判断,如果填写不符合规则就提交不了。很简单,不要后台进行处理。你还可以直接利用我们的ajax技术进行及时的提醒等。